1. 15 Jan, 2016 1 commit
  2. 08 Jan, 2016 1 commit
    • bmeurer's avatar
      [builtins] Migrate Object.keys to C++. · 50e1e751
      bmeurer authored
      Everything necessary to implement Object.keys efficiently is already
      available in C++ land for quite some time now, and only the thin
      JavaScript wrapper was left, so get rid of that as well and move the
      whole builtin to C++ instead.
      
      R=yangguo@chromium.org
      
      Review URL: https://codereview.chromium.org/1567963002
      
      Cr-Commit-Position: refs/heads/master@{#33167}
      50e1e751
  3. 05 Jan, 2016 1 commit
    • bmeurer's avatar
      [runtime] Migrate several Date builtins to C++. · 065e9c53
      bmeurer authored
      Almost all of the Date builtins always call into C++ at least once
      anyway, so parsing, compiling and executing the JavaScript wrappers
      is just a waste of time.  The most important part here is the Date
      constructor itself, which is one of the blockers for new.target in
      TurboFan, because compiling the Date constructor takes too much time
      with TurboFan (for no reason since we end up in C++ anway).
      
      R=cbruni@chromium.org
      
      Review URL: https://codereview.chromium.org/1556333002
      
      Cr-Commit-Position: refs/heads/master@{#33109}
      065e9c53
  4. 15 Dec, 2015 1 commit
    • yangguo's avatar
      [debugger] flood function for stepping on throw. · 6d8a2611
      yangguo authored
      We used to flood the handler when preparing for stepping,
      even if we may not throw. Instead, we now flood the
      handler only when we actually throw.
      
      This also solves an issue with step-next when we throw and
      leave the function unexpectedly. In combination with
      microtasks, this could cause a crash.
      
      R=mstarzinger@chromium.org
      BUG=chromium:568477
      LOG=N
      
      Review URL: https://codereview.chromium.org/1527593002
      
      Cr-Commit-Position: refs/heads/master@{#32856}
      6d8a2611
  5. 09 Dec, 2015 3 commits
  6. 23 Nov, 2015 1 commit
  7. 19 Nov, 2015 1 commit
  8. 12 Nov, 2015 1 commit
  9. 02 Nov, 2015 1 commit
  10. 23 Oct, 2015 1 commit
  11. 29 Sep, 2015 1 commit
    • bmeurer's avatar
      [es6] Introduce %ToInteger and %ToLength. · 93b2b262
      bmeurer authored
      This adds ES6 compliant Object::ToInteger, Object::ToInt32,
      Object::ToUint32 and Object::ToLength, and replaces the old
      Execution wrappers of those abstract operations (which were
      not using the correct ToPrimitive).
      
      This also introduces proper %ToInteger and %ToLength runtime
      entries, with a fast path %_ToInteger supported in fullcodegen
      and Crankshaft (for now). Internal JavaScript code should use
      TO_INTEGER and TO_LENGTH respectively.
      
      CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_layout_dbg,v8_linux_nosnap_dbg
      BUG=v8:4307
      LOG=n
      
      Review URL: https://codereview.chromium.org/1378533002
      
      Cr-Commit-Position: refs/heads/master@{#30993}
      93b2b262
  12. 23 Sep, 2015 1 commit
    • bmeurer's avatar
      [builtin] Refactor Invoke to deal with any kind of callable. · 634d1d86
      bmeurer authored
      Now both Execution::Call and Execution::New can deal with any
      kind of target and will raise a proper exception if the target is not
      callable (which is not yet spec compliant for New, as we would
      have to check IsConstructor instead, which we don't have yet).
      
      Now we no longer need to do any of these weird call/construct
      delegate gymnastics in C++, and we finally have a single true
      bottleneck for Call/Construct abstract operations in the code
      base, with only a few special handlings left in the compilers to
      optimize the JSFunction case.
      
      R=jarin@chromium.org
      BUG=v8:4430, v8:4413
      LOG=n
      
      Review URL: https://codereview.chromium.org/1360793002
      
      Cr-Commit-Position: refs/heads/master@{#30874}
      634d1d86
  13. 22 Sep, 2015 1 commit
    • bmeurer's avatar
      [builtins] Add support for NewTarget to Execution::New. · 1dfac69f
      bmeurer authored
      Introduce new builtins Construct and ConstructFunction (in line
      with the Call and CallFunction builtins that we already have) as
      proper bottleneck for Construct and [[Construct]] on JSFunctions.
      Use these builtins to support passing NewTarget from C++ to
      JavaScript land.
      
      Long-term we want the CallConstructStub to be used for
      gathering feedback on entry to construction chain (i.e. the
      initial new Foo), and use the Construct builtins to do the
      actual work inside the construction chain (i.e. calling into
      super and stuff).
      
      MIPS and MIPS64 ports contributed by akos.palfi@imgtec.com.
      
      R=jarin@chromium.org
      BUG=v8:4430
      LOG=n
      
      Review URL: https://codereview.chromium.org/1359583002
      
      Cr-Commit-Position: refs/heads/master@{#30857}
      1dfac69f
  14. 17 Sep, 2015 3 commits
  15. 10 Sep, 2015 1 commit
    • bmeurer's avatar
      [runtime] Move binary operator fallbacks into the runtime. · a1b2ec60
      bmeurer authored
      Replace the ADD, SUB, etc. builtins with proper runtime implementations,
      and expose them as runtime calls that can be used by the code stubs and
      the interpreter (for now).
      
      Also remove all the support runtime functions for ADD, SUB and friends,
      namely %NumberAdd, %NumberSub, and so on.
      
      R=mstarzinger@chromium.org
      CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_layout_dbg,v8_linux_nosnap_dbg
      
      Review URL: https://codereview.chromium.org/1333843002
      
      Cr-Commit-Position: refs/heads/master@{#30680}
      a1b2ec60
  16. 03 Sep, 2015 1 commit
    • bmeurer's avatar
      [es6] Initial steps towards a correct implementation of IsCallable. · 8a378f46
      bmeurer authored
      This turns the has_instance_call_handler bit on Map into an is_callable
      bit, that matches the spec definition of IsCallable (i.e. instances have
      [[Call]] internal methods).
      
      Also fix the typeof operator to properly say "function" for everything
      that is callable.
      
      Also remove the (unused) premature %_GetPrototype optimization from
      Crankshaft, which just complicated the Map bit swap.
      
      R=mstarzinger@chromium.org, rossberg@chromium.org, yangguo@chromium.org
      CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_layout_dbg
      
      Review URL: https://codereview.chromium.org/1316933002
      
      Cr-Commit-Position: refs/heads/master@{#30552}
      8a378f46
  17. 01 Sep, 2015 1 commit
  18. 28 Aug, 2015 1 commit
    • bmeurer's avatar
      [es6] Implement spec compliant ToPrimitive in the runtime. · f6c6d713
      bmeurer authored
      This is the first step towards a spec compliant ToPrimitive
      implementation (and therefore spec compliant ToNumber, ToString,
      ToName, and friends).  It adds support for the @@toPrimitive
      symbol that was introduced with ES2015, and also adds the new
      Symbol.prototype[@@toPrimitive] and Date.prototype[@@toPrimitive]
      initial properties.
      
      There are now runtime functions for %ToPrimitive, %ToNumber and
      %ToString, which do the right thing and should be used as fallbacks
      instead of the hairy runtime.js implementations.  I will do the
      same for the other conversion operations mentioned by the spec in
      follow up CLs.  Once everything is in place we can look into
      optimizing things further, so that we don't always call into the
      runtime.
      
      Also fixed Date.prototype.toJSON to be spec compliant.
      
      R=mstarzinger@chromium.org, yangguo@chromium.org
      BUG=v8:4307
      LOG=y
      
      Review URL: https://codereview.chromium.org/1306303003
      
      Cr-Commit-Position: refs/heads/master@{#30434}
      f6c6d713
  19. 24 Aug, 2015 2 commits
  20. 21 Aug, 2015 1 commit
    • binji's avatar
      Signal a blocked futex if the isolate is interrupted; don't busy-wait · b7cf7327
      binji authored
      FutexEmulation::Wait can potentially block forever on a condition variable. We
      want to allow this to be interrupted (for a debugger, or to terminate the
      thread, for example).
      
      The previous implementation would periodically wake up the waiter to check for
      interrupts. This CL modifies the StackGuard so it wakes the blocked futex if
      the thread should be interrupted.
      
      BUG=chromium:497295
      R=jarin@chromium.org
      LOG=n
      
      Review URL: https://codereview.chromium.org/1230303005
      
      Cr-Commit-Position: refs/heads/master@{#30311}
      b7cf7327
  21. 14 Aug, 2015 1 commit
  22. 10 Aug, 2015 1 commit
  23. 31 Jul, 2015 1 commit
    • bmeurer's avatar
      [stubs] Unify (and optimize) implementation of ToObject. · 4fc6f547
      bmeurer authored
      This is the initial (big) step towards a more uniform implementation of
      the ToObject abstract operation (ES6 7.1.13), where we have a fallback
      implementation in JSReceiver::ToObject() and a fast (hydrogen) CodeStub
      to deal with the fast case (we should be able to do more cleanup on this
      in a followup CL).  For natives we expose the abstract operation via a
      %_ToObject intrinsic, also exposed via a macro TO_OBJECT, that unifies
      the previous confusion with TO_OBJECT_INLINE, ToObject, TO_OBJECT,
      $toObject and %$toObject.  Now the whole implementation of the abstract
      operation is context independent, meaning we don't need any magic in the
      builtins object nor the native context.
      
      R=mvstanton@chromium.org,yangguo@chromium.org
      
      Review URL: https://codereview.chromium.org/1266013006
      
      Cr-Commit-Position: refs/heads/master@{#29953}
      4fc6f547
  24. 10 Jul, 2015 1 commit
  25. 02 Jun, 2015 1 commit
  26. 01 Jun, 2015 1 commit
  27. 28 May, 2015 1 commit
  28. 21 Apr, 2015 1 commit
  29. 17 Apr, 2015 1 commit
  30. 16 Apr, 2015 2 commits
  31. 15 Apr, 2015 1 commit
  32. 14 Apr, 2015 3 commits