1. 22 Apr, 2016 1 commit
  2. 19 Apr, 2016 1 commit
  3. 18 Apr, 2016 1 commit
  4. 16 Apr, 2016 2 commits
  5. 13 Apr, 2016 5 commits
  6. 12 Apr, 2016 2 commits
    • binji's avatar
      [Atomics] code stubs for atomic operations · 10b5febe
      binji authored
      * New atomic code stubs for x64, ia32, arm, arm64
      * Add convenience functions JumpIfNotValidSmiValue, JumpIfUintNotValidSmiValue
        to macro-assembler-ia32 (API based on x64 macro assembler)
      * Remove runtime implementation of Atomics.load, the code stub should always be
        called instead
      * Add new test to mjsunit atomics test; check that Smi values of different
        sizes are supported when possible, else fall back to HeapNumbers
      
      These changes were needed to add another codestub:
      * Bump kStubMajorKeyBits from 7 to 8
      * Reduce ScriptContextFieldStub::kSlotIndexBits from 13 to 12
      
      BUG=v8:4614
      LOG=y
      
      Review URL: https://codereview.chromium.org/1617503003
      
      Cr-Commit-Position: refs/heads/master@{#35427}
      10b5febe
    • bmeurer's avatar
      [turbofan] Generalize AllocateStub to allow old space allocation. · 4aa19274
      bmeurer authored
      Previously TurboFan always went to the runtime to allocate in old space,
      which is pretty slow compare to a stub call.
      
      R=jarin@chromium.org
      
      Review URL: https://codereview.chromium.org/1877323002
      
      Cr-Commit-Position: refs/heads/master@{#35418}
      4aa19274
  7. 11 Apr, 2016 2 commits
  8. 08 Apr, 2016 1 commit
  9. 06 Apr, 2016 2 commits
    • epertoso's avatar
      [stubs] Introduce MultiplyStub. · 6c2bb838
      epertoso authored
      Adds a MultiplyStub for the multiplication operator and hooks it with TurboFan and Ignition.
      
      Currently, the SMI times SMI case is handled by converting both the operands to double precision floating points, we may consider adding a fast path later.
      
      Review URL: https://codereview.chromium.org/1860043002
      
      Cr-Commit-Position: refs/heads/master@{#35287}
      6c2bb838
    • bmeurer's avatar
      [generators] Decouple generator resume from fullcodegen. · 974721c6
      bmeurer authored
      Introduce a ResumeGeneratorTrampoline, which does the actual stack state
      reconstruction (currently always restores a fullcodegen frame), and
      introduce appropriate TurboFan builtins for %GeneratorPrototype%.next,
      %GeneratorPrototype%.return and %GeneratorPrototype%.throw based on
      this native builtin.
      
      Also unify the flooding in case of step-in to always work based on
      JSFunction and remove the special casing for JSGeneratorObject.
      
      R=mstarzinger@chromium.org, neis@chromium.org
      TBR=rossberg@chromium.org
      BUG=chromium:513471
      LOG=n
      
      Review URL: https://codereview.chromium.org/1865833002
      
      Cr-Commit-Position: refs/heads/master@{#35283}
      974721c6
  10. 01 Apr, 2016 1 commit
  11. 23 Mar, 2016 1 commit
  12. 22 Mar, 2016 1 commit
    • bmeurer's avatar
      [stubs] Introduce AddStub and SubtractStub. · 0bedf6f0
      bmeurer authored
      This adds two new stubs, AddStub and SubtractStub, for the plus and the
      minus operators, and hooks them up with TurboFan and Ignition.
      Especially the addition case is very heavy and we might want to look
      into splitting that up further into specialized stubs (similar to what
      we did with ToNumberStub recently).
      
      R=epertoso@chromium.org
      
      Review URL: https://codereview.chromium.org/1823083002
      
      Cr-Commit-Position: refs/heads/master@{#34994}
      0bedf6f0
  13. 21 Mar, 2016 3 commits
  14. 16 Mar, 2016 1 commit
    • bmeurer's avatar
      [compiler] Introduce code stubs for abstract equality. · 8a809501
      bmeurer authored
      Add EqualStub and NotEqualStub, based on the CodeStubAssembler, and hook
      them up with TurboFan and Ignition. The stubs are a full implementation
      of abstract equality for ES6 plus the current SIMD.js draft, unlike the
      generic version of the CompareIC, which only implements a subset with
      funky runtime fallbacks.
      
      Drive-by-fix: Introduce some common helper methods.
      
      R=epertoso@chromium.org
      BUG=chromium:592690
      LOG=n
      
      Review URL: https://codereview.chromium.org/1795793002
      
      Cr-Commit-Position: refs/heads/master@{#34806}
      8a809501
  15. 07 Mar, 2016 1 commit
    • ishell's avatar
      [crankshaft] Support ES6 tail call elimination. · 22938040
      ishell authored
      HInvokeFunction and HApplyArguments instructions now support tail calling.
      
      Inlining of calls at tail position is not supported yet and therefore still disabled.
      
      The tail-call-megatest was modified so that the usages of "arguments" object do not disable Crankshaft.
      
      TBR=bmeurer@chromium.org
      BUG=v8:4698
      LOG=N
      
      Review URL: https://codereview.chromium.org/1760253003
      
      Cr-Commit-Position: refs/heads/master@{#34542}
      22938040
  16. 04 Mar, 2016 1 commit
    • bmeurer's avatar
      [compiler] Introduce code stubs for string relational comparisons. · 5912e0f0
      bmeurer authored
      Add StringLessThanStub, StringLessThanOrEqualStub, StringGreaterThanStub
      and StringGreaterThanOrEqualStub, based on the CodeStubAssembler, and
      hook them up with TurboFan (and Ignition). The stubs are currently
      essentially comparable with the StringCompareStub, which is now
      obsolete. We can later extend these stubs to cover more interesting
      cases (i.e. two byte sequential string comparisons, etc.).
      
      R=epertoso@chromium.org
      
      Review URL: https://codereview.chromium.org/1765823002
      
      Cr-Commit-Position: refs/heads/master@{#34485}
      5912e0f0
  17. 03 Mar, 2016 2 commits
    • bmeurer's avatar
      [compiler] Initial TurboFan code stubs for abstract relational comparison. · 62bc168d
      bmeurer authored
      This adds new code stubs for abstract relational comparison,
      namely LessThanStub, LessThanOrEqualStub, GreaterThanStub and
      GreaterThanOrEqualStub, and hooks them up for Ignition and TurboFan.
      These stubs implement the full compare operation without any
      unpredictable bailouts. Currently they still go to C++ for string
      comparisons, and also use the %ToPrimitive_Number runtime entry, as
      we still lack a stub for the ToPrimitive operation. These issues
      will be addressed separately in follow-up CLs.
      
      Drive-by-fix: Add support for deferred code in the RawMachineAssembler
      and CodeStubAssembler. A block can be marked as deferred by marking its
      Label as deferred, which will then make the register allocator penalize
      this block and prefer better register assignments for the other blocks.
      
      R=epertoso@chromium.org
      
      Review URL: https://codereview.chromium.org/1759133002
      
      Cr-Commit-Position: refs/heads/master@{#34463}
      62bc168d
    • bmeurer's avatar
      [compiler] Introduce StringEqualStub and StringNotEqualStub. · 2689548e
      bmeurer authored
      These new stubs perform exactly the same job as the string equality case
      for the CompareIC, but are platform independent and usable outside of
      fullcodegen and Crankshaft. We use them in the StrictEqualStub and the
      StrictNotEqualStub instead of falling back to the runtime immediately
      for String comparisons, and we also use them in TurboFan to perform
      String equality or inequality comparisons.
      
      These stubs currently handle only internalized and one byte strings w/o
      going to C++, but it should be easy to add support for more string cases
      later, i.e. utilizing already flattened cons strings or comparing two
      byte strings as well.
      
      Review URL: https://codereview.chromium.org/1761823002
      
      Cr-Commit-Position: refs/heads/master@{#34459}
      2689548e
  18. 02 Mar, 2016 2 commits
    • bmeurer's avatar
      [compiler] Introduce proper StrictNotEqualStub. · ca6d0b1e
      bmeurer authored
      Generalize the code that we have for StrictEqualStub to also general a
      StrictNotEqualStub and hook that up with TurboFan and Ignition. It's
      still falling back to the runtime for every String (in)equality check.
      
      R=yangguo@chromium.org
      
      Review URL: https://codereview.chromium.org/1756793002
      
      Cr-Commit-Position: refs/heads/master@{#34426}
      ca6d0b1e
    • bmeurer's avatar
      [compiler] Introduce initial StrictEqualStub. · 4acb492e
      bmeurer authored
      Initial version of a new StrictEqualStub written as TurboFan code stub,
      that implements the full strict equality comparison and is usable for
      both TurboFan and Ignition (and soon for the generic CompareIC case
      too). The stub is not fully optimized yet, i.e. we still go to the
      runtime for string comparisons, but that'll be addressed in a follow-up
      CL.
      
      R=yangguo@chromium.org
      
      Review URL: https://codereview.chromium.org/1753173003
      
      Cr-Commit-Position: refs/heads/master@{#34423}
      4acb492e
  19. 24 Feb, 2016 2 commits
    • mythria's avatar
      Revert of [Interpreter] Implements calls through CallICStub in the... · eb358178
      mythria authored
      Revert of [Interpreter] Implements calls through CallICStub in the interpreter. (patchset #15 id:270001 of https://codereview.chromium.org/1688283003/ )
      
      Reason for revert:
      It is not a good idea to call CallICStub from the builtin. It might be sensitive to the frame structure. Constructing a internal frame might cause problems. It is much better to inline the code  related to the type feedback vector into the builtin.
      
      Original issue's description:
      > [Interpreter] Implements calls through CallICStub in the interpreter.
      >
      > Calls are implemented through CallICStub to collect type feedback. Adds
      > a new builtin called InterpreterPushArgsAndCallIC that pushes the
      > arguments onto stack and calls CallICStub.
      >
      > Also adds two new bytecodes CallIC and CallICWide to indicate calls have to
      > go through CallICStub.
      >
      > MIPS port contributed by balazs.kilvady.
      >
      > BUG=v8:4280, v8:4680
      > LOG=N
      >
      > Committed: https://crrev.com/20362a2214c11a0f2ea5141b6a79e09458939cec
      > Cr-Commit-Position: refs/heads/master@{#34244}
      
      TBR=rmcilroy@chromium.org,mvstanton@chromium.org,mstarzinger@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=v8:4280, v8:4680
      
      Review URL: https://codereview.chromium.org/1731253003
      
      Cr-Commit-Position: refs/heads/master@{#34252}
      eb358178
    • mythria's avatar
      [Interpreter] Implements calls through CallICStub in the interpreter. · 20362a22
      mythria authored
      Calls are implemented through CallICStub to collect type feedback. Adds
      a new builtin called InterpreterPushArgsAndCallIC that pushes the
      arguments onto stack and calls CallICStub.
      
      Also adds two new bytecodes CallIC and CallICWide to indicate calls have to
      go through CallICStub.
      
      MIPS port contributed by balazs.kilvady.
      
      BUG=v8:4280, v8:4680
      LOG=N
      
      Review URL: https://codereview.chromium.org/1688283003
      
      Cr-Commit-Position: refs/heads/master@{#34244}
      20362a22
  20. 19 Feb, 2016 1 commit
    • bmeurer's avatar
      [stubs] Introduce a dedicated FastNewObjectStub. · ba2077aa
      bmeurer authored
      Move the already existing fast case for %NewObject into a dedicated
      FastNewObjectStub that we can utilize in places where we would otherwise
      fallback to %NewObject immediately, which is rather expensive.
      
      Also use FastNewObjectStub as the generic implementation of JSCreate,
      which should make constructor inlining based on SharedFunctionInfo (w/o
      specializing to a concrete closure) viable soon.
      
      R=jarin@chromium.org
      
      Review URL: https://codereview.chromium.org/1708313002
      
      Cr-Commit-Position: refs/heads/master@{#34136}
      ba2077aa
  21. 17 Feb, 2016 2 commits
  22. 16 Feb, 2016 1 commit
  23. 15 Feb, 2016 3 commits
  24. 12 Feb, 2016 1 commit
    • bmeurer's avatar
      [runtime] Introduce FastNewStrictArgumentsStub to optimize strict arguments. · 09d84535
      bmeurer authored
      The FastNewStrictArgumentsStub is very similar to the recently added
      FastNewRestParameterStub, it's actually almost a copy of it, except that
      it doesn't have the fast case we have for the empty rest parameter. This
      patch improves strict arguments in TurboFan and fullcodegen by up to 10x
      compared to the previous version.
      
      Also introduce proper JSSloppyArgumentsObject and JSStrictArgumentsObject
      for the in-object properties instead of having them as constants in the
      Heap class.
      
      Drive-by-fix: Use this stub and the FastNewRestParameterStub in the
      interpreter to avoid the runtime call overhead for strict arguments
      and rest parameter creation.
      
      R=jarin@chromium.org
      TBR=mstarzinger@chromium.org
      
      Review URL: https://codereview.chromium.org/1693513002
      
      Cr-Commit-Position: refs/heads/master@{#33925}
      09d84535