1. 24 Feb, 2017 1 commit
  2. 15 Feb, 2017 2 commits
    • caitp's avatar
      [async-iteration] add support for for-await-of loops in Async Functions · 76ab55e3
      caitp authored
      When --harmony-async-iteration is enabled, it is now possible to
      use the for-await-of loop, which uses the Async Iteration protocol
      rather than the ordinary ES6 Iteration protocol.
      
      the Async-from-Sync Iterator object is not implemented in this CL,
      and so for-await-of loops will abort execution if the iterated object
      does not have a Symbol.asyncIterator() method. Async-from-Sync
      Iterators are implemented seperately in https://codereview.chromium.org/2645313003/
      
      BUG=v8:5855, v8:4483
      R=neis@chromium.org, littledan@chromium.org, adamk@chromium.org
      
      Review-Url: https://codereview.chromium.org/2637403008
      Cr-Commit-Position: refs/heads/master@{#43224}
      76ab55e3
    • littledan's avatar
      [bootstrapper] Remove Intl experimental natives files · 407d6bf1
      littledan authored
      These experimental natives previously only installed functions to the
      appropriate parent. In this patch, the exports container is retained
      so that the bootstrapper may install the functions instead. This
      change is intended to reduce startup time. SharedArrayBuffer retains
      some experimental natives exported from JS; this may be addressed
      in a follow-on patch. The patch includes some minor cleanup of the
      bootstrap process by removing "experimental exports", which was unused.
      
      R=yangguo@chromium.org
      BUG=v8:5880
      CQ_INCLUDE_TRYBOTS=master.tryserver.v8:v8_linux_noi18n_rel_ng
      
      Review-Url: https://codereview.chromium.org/2683083003
      Cr-Commit-Position: refs/heads/master@{#43221}
      407d6bf1
  3. 14 Feb, 2017 1 commit
    • vabr's avatar
      Fix TypeError message for Reflect.construct · b478e9c1
      vabr authored
      If the Reflect.construct receives an argument expected to be a constructor,
      and the argument is not a constructor, V8 currently declares that
      Reflect.construct is not a function. It should instead say that the offending
      argument is not a constructor.
      
      This is the case for all ports of builtins
      (Builtins::Generate_ReflectConstruct). All of them make an
      attempt to at least pass the right argument to the TypeError parametrised
      message, calling out the offending Reflect.construct argument. However,
      Runtime::kThrowCalledNonCallable extracts the callsite from those arguments,
      discarding the precise information.
      
      This CL adds Runtime::kNotConstructor, which reports the arguments passed
      to it, and the CL also modifies the ports of builtins to make use of
      Runtime::kNotConstructor
      
      BUG=v8:5671
      
      Review-Url: https://codereview.chromium.org/2688393003
      Cr-Commit-Position: refs/heads/master@{#43182}
      b478e9c1
  4. 13 Feb, 2017 1 commit
    • bmeurer's avatar
      [es2015] Remove the @@hasInstance protector cell. · 1a236208
      bmeurer authored
      We cannot skip the @@hasInstance lookup in instanceof depending on a
      global protector cell, as the lookup of the property is observable
      via proxies or accessors. So remove the global protector and properly
      implement CSA::InstanceOf via GetPropertyStub, with an appropriate
      fast-path for Function.prototype[@@hasInstance] where we call the
      builtin code object directly if the function matches, skipping all
      the checks from the call sequence, and also avoid the redundant
      ToBoolean conversion on the result.
      
      R=yangguo@chromium.org
      TBR=ulan@chromium.org
      BUG=v8:5958
      
      Review-Url: https://codereview.chromium.org/2684033012
      Cr-Commit-Position: refs/heads/master@{#43137}
      1a236208
  5. 07 Feb, 2017 5 commits
  6. 24 Jan, 2017 1 commit
  7. 20 Jan, 2017 3 commits
  8. 19 Jan, 2017 1 commit
  9. 13 Jan, 2017 1 commit
  10. 12 Jan, 2017 4 commits
  11. 11 Jan, 2017 2 commits
  12. 10 Jan, 2017 3 commits
  13. 05 Jan, 2017 1 commit
  14. 03 Jan, 2017 1 commit
  15. 16 Dec, 2016 1 commit
  16. 07 Dec, 2016 1 commit
    • caitp's avatar
      [ignition] desugar GetIterator() via bytecode rather than via AST · b5f146a0
      caitp authored
      Introduces:
      - a new AST node representing the GetIterator() algorithm in the specification, to be used by ForOfStatement, YieldExpression (in the case of delegating yield*), and the future `for-await-of` loop proposed in http://tc39.github.io/proposal-async-iteration/#sec-async-iterator-value-unwrap-functions.
      - a new opcode (JumpIfJSReceiver), which is useful for `if Type(object) is not Object` checks which are common throughout the specification. This node is easily eliminated by TurboFan.
      
      The AST node is desugared specially in bytecode, rather than manually when building the AST. The benefit of this is that desugaring in the BytecodeGenerator is much simpler and easier to understand than desugaring the AST.
      
      This also reduces parse time very slightly, and allows us to use LoadIC rather than KeyedLoadIC, which seems to have  better baseline performance. This results in a ~20% improvement in test/js-perf-test/Iterators micro-benchmarks, which I believe owes to the use of the slightly faster LoadIC as opposed to the KeyedLoadIC in the baseline case. Both produce identical optimized code via TurboFan when the type check can be eliminated, and the load can be replaced with a constant value.
      
      BUG=v8:4280
      R=bmeurer@chromium.org, rmcilroy@chromium.org, adamk@chromium.org, neis@chromium.org, jarin@chromium.org
      TBR=rossberg@chromium.org
      
      Review-Url: https://codereview.chromium.org/2557593004
      Cr-Commit-Position: refs/heads/master@{#41555}
      b5f146a0
  17. 06 Dec, 2016 1 commit
  18. 30 Nov, 2016 2 commits
  19. 24 Nov, 2016 1 commit
  20. 17 Nov, 2016 1 commit
  21. 16 Nov, 2016 2 commits
  22. 27 Oct, 2016 2 commits
  23. 25 Oct, 2016 2 commits