1. 25 Mar, 2016 1 commit
  2. 24 Mar, 2016 1 commit
    • littledan's avatar
      Add ES2015 RegExp full subclassing semantics behind a flag · 92a571e5
      littledan authored
      This patch implements ES2015 RegExp subclassing semantics, namely the
      hardest part where RegExp.prototype.exec and certain flag getters can
      be overridden in order to provide different behavior. This change is
      hidden behind a new flag, --harmony-regexp-exec. The flag guards the
      behavior by installing entirely different implementations of the
      methods which follow the new semantics.
      
      Preliminary performance tests show a 3-4x regression in the Octane
      RegExp benchmark. The new code doesn't call out into several fast
      paths that the old code supported, so this is expected.
      
      The patch is tested mostly by test262, where most RegExp tests are fixed,
      with the exception of deliberate spec violations for web compatibility,
      and for the 'sticky' flag, which is not dynamically read by this patch
      in all cases but rather statically compiled into the RegExp. The latter
      will require a follow-on patch to implement. A small additional set of
      tests verifies one particular case, mostly to check whether the flag
      mechanism works.
      
      R=adamk,yangguo@chromium.org
      LOG=Y
      BUG=v8:4602
      
      Review URL: https://codereview.chromium.org/1596483005
      
      Cr-Commit-Position: refs/heads/master@{#35068}
      92a571e5
  3. 26 Feb, 2016 1 commit
    • bmeurer's avatar
      [runtime] Remove obsolete %Apply and %TailCall runtime entries. · 7f11fba7
      bmeurer authored
      The %TailCall runtime entry and the %_TailCall intrinsic is not used,
      and will never be used (because %TailCall doesn't actually do a tail
      call). We will soon have proper ES6 tail calls, which are correct and
      properly tested.
      
      The %Apply runtime entry is basically a super-slow, less correct version
      of Reflect.apply, so we can as well just use Reflect.apply, which is
      exposed to builtins via %reflect_apply.
      
      R=ishell@chromium.org
      
      Review URL: https://codereview.chromium.org/1739233002
      
      Cr-Commit-Position: refs/heads/master@{#34317}
      7f11fba7
  4. 17 Feb, 2016 1 commit
  5. 28 Jan, 2016 1 commit
    • bmeurer's avatar
      [builtins] Make Math.max and Math.min fast by default. · cb9b8010
      bmeurer authored
      The previous versions of Math.max and Math.min made it difficult to
      optimize those (that's why we already have custom code in Crankshaft),
      and due to lack of ideas what to do about the variable number of
      arguments, we will probably need to stick in special code in TurboFan
      as well; so inlining those builtins is off the table, hence there's no
      real advantage in having them around as "not quite JS" with extra work
      necessary in the optimizing compilers to still make those builtins
      somewhat fast in cases where we cannot inline them (also there's a
      tricky deopt loop in Crankshaft related to Math.min and Math.max, but
      that will be dealt with later).
      
      So to sum up: Instead of trying to make Math.max and Math.min semi-fast
      in the optimizing compilers with weird work-arounds support %_Arguments
      %_ArgumentsLength, we do provide the optimal code as native builtins
      instead and call it a day (which gives a nice performance boost on some
      benchmarks).
      
      R=jarin@chromium.org
      
      Review URL: https://codereview.chromium.org/1641083003
      
      Cr-Commit-Position: refs/heads/master@{#33582}
      cb9b8010
  6. 07 Jan, 2016 1 commit
    • littledan's avatar
      Add Array support for @@species and subclassing · 6e962237
      littledan authored
      This patch implements @@species, guarded behind the --harmony-species
      flag, on Arrays. Methods which return an Array will instead return
      the appropriate instance based on the ArraySpeciesCreate algorithm.
      The algorithm is implemented in C++ to get access to realm information
      and to implement some Array methods in C++, but it is also accessed
      from JavaScript through a new runtime function. A couple interactive
      Octane runs show no performance regression with the flag turned off,
      but turning --harmony-species on will surely have a significant
      regression, as Array methods now heavily use ObjectDefineProperty.
      
      BUG=v8:4093
      LOG=Y
      R=adamk,cbruni
      
      Review URL: https://codereview.chromium.org/1560763002
      
      Cr-Commit-Position: refs/heads/master@{#33144}
      6e962237
  7. 04 Jan, 2016 2 commits
    • littledan's avatar
      Add a --harmony-species flag, defining @@species on constructors · fb5cbc2e
      littledan authored
      This patch adds the basis for subclassing TypedArrays, Arrays and
      ArrayBuffers through the @@species hook, added in ES2015. This is
      the first patch in a series. This patch simply defines the
      @@species Symbol and installs it on the appropriate constructors.
      The behavior is guarded behind the --harmony-species flag.
      
      R=cbruni
      BUG=v8:4093
      LOG=Y
      CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel
      TBR=hpayer@chromium.org
      
      Review URL: https://codereview.chromium.org/1558543002
      
      Cr-Commit-Position: refs/heads/master@{#33095}
      fb5cbc2e
    • bmeurer's avatar
      [builtins] Migrate a bunch of Object builtins to C++. · 70c4bf13
      bmeurer authored
      The Object.freeze, Object.isExtensible, Object.isFrozen,
      Object.isSealed, Object.preventExtensions and Object.seal builtins were
      already implemented in C++, but they still had some funny JavaScript
      wrappers that just called into the C++ implementation on every
      (interesting) execution path.
      
      Review URL: https://codereview.chromium.org/1553043002
      
      Cr-Commit-Position: refs/heads/master@{#33074}
      70c4bf13
  8. 22 Dec, 2015 1 commit
    • bmeurer's avatar
      [runtime] Rewrite Function.prototype.toString in C++. · 4acca53e
      bmeurer authored
      There's actually no point trying to do Function.prototype.toString in
      JavaScript, as it always calls into C++ at least once, so it only
      complicates things (esp. once we start optimizing bound functions).
      
      Drive-by-fix: Rename FunctionApply and FunctionCall builtins to also
      reflect the fact that these are builtins in the Function.prototype and
      not on Function itself.
      
      TBR=hpayer@chromium.org
      R=yangguo@chromium.org
      BUG=chromium:535408
      LOG=n
      
      Review URL: https://codereview.chromium.org/1540953004
      
      Cr-Commit-Position: refs/heads/master@{#32996}
      4acca53e
  9. 11 Dec, 2015 2 commits
    • jkummerow's avatar
      Move Object.assign implementation to C++ · a8354693
      jkummerow authored
      This avoids a pair of super-high-degree polymorphic load/store ICs, and
      creates the opportunity to add more fast paths if needed.
      
      Review URL: https://codereview.chromium.org/1517963002
      
      Cr-Commit-Position: refs/heads/master@{#32799}
      a8354693
    • adamk's avatar
      Rewrite Object.prototype.toString in C++ · ed698f3d
      adamk authored
      The main impetus is to improve performance when --harmony-tostring
      is enabled, thanks to using a generic property load instead of a
      megamorphic IC.
      
      This also reduces duplication, as the API function
      v8::Object::ObjectProtoToString can share the runtime implementation.
      
      The only functional change in this patch is to drop an accidental difference
      between the JS and API implementations: the arguments object should toString
      as "[object Arguments]". The JS side was corrected in
      https://code.google.com/p/v8/source/detail?r=3279, but the API version was
      missed in that patch.
      
      BUG=chromium:555127, v8:3502
      LOG=n
      CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel
      
      Review URL: https://codereview.chromium.org/1509533003
      
      Cr-Commit-Position: refs/heads/master@{#32777}
      ed698f3d
  10. 10 Dec, 2015 1 commit
    • littledan's avatar
      Unstage non-standard Promise functions · 88c8361b
      littledan authored
      This patch removes Promise functions and methods which are absent
      from the ES2015 specification when the --es-staging flag is on.
      The patch is being relanded after being reverted due to an
      unrelated bug. This version is slightly different as promise_chain
      is installed on the context regardless of the flag value, so that
      the Promise::Chain API continues to work until it is deprecated.
      
      BUG=v8:3237
      R=rossberg
      LOG=Y
      
      Review URL: https://codereview.chromium.org/1513873002
      
      Cr-Commit-Position: refs/heads/master@{#32772}
      88c8361b
  11. 04 Dec, 2015 1 commit
  12. 02 Dec, 2015 1 commit
  13. 24 Nov, 2015 6 commits
  14. 10 Nov, 2015 1 commit
  15. 05 Nov, 2015 2 commits
  16. 04 Nov, 2015 5 commits
  17. 03 Nov, 2015 3 commits
  18. 02 Nov, 2015 4 commits
  19. 22 Oct, 2015 2 commits
  20. 20 Oct, 2015 1 commit
  21. 16 Oct, 2015 1 commit
  22. 15 Oct, 2015 1 commit