1. 15 Dec, 2016 1 commit
    • mstarzinger's avatar
      Fix usage of literal cloning for large double arrays. · 6c620e53
      mstarzinger authored
      This fixes a corner case where the {FastCloneShallowArrayStub} was used
      for literals that are backed by a double backing store and would exceed
      limits for new-space allocations on 32-bit architectures. The stub in
      question does not support such literals, callers must use the runtime.
      Note that this fix is for Ignition as well as FullCodeGenerator.
      
      R=rmcilroy@chromium.org
      TEST=mjsunit/regress/regress-crbug-672792
      BUG=chromium:672792
      
      Review-Url: https://codereview.chromium.org/2570843002
      Cr-Commit-Position: refs/heads/master@{#41713}
      6c620e53
  2. 08 Dec, 2016 1 commit
  3. 01 Dec, 2016 1 commit
  4. 15 Nov, 2016 1 commit
  5. 14 Nov, 2016 1 commit
  6. 11 Nov, 2016 2 commits
    • bmeurer's avatar
      [turbofan] Introduce an ExternalPointer type. · 7d24f1ae
      bmeurer authored
      This adds a new ExternalPointer type, which is an Internal type that is
      used for ExternalReferences and other pointer values, like the pointers
      into the asm.js heap. It also adds a PointerConstant operator, which we
      use to represents these raw constants (we can probably remove that
      particular operator again once WebAssembly ships with the validator).
      
      R=mvstanton@chromium.org
      BUG=v8:5267,v8:5270
      
      Review-Url: https://codereview.chromium.org/2494753003
      Cr-Commit-Position: refs/heads/master@{#40923}
      7d24f1ae
    • bmeurer's avatar
      [turbofan] Fix a couple of invalid Uint32Constant/Int32Constant uses. · 4ee6fdf3
      bmeurer authored
      The contract for TurboFan is that we use NumberConstants for any kind
      of number value until the representation selection picks concrete
      representations, i.e. Int32Constant or Float64Constant. We will soon
      be able to also guard this contract with DCHECKs.
      
      BUG=v8:5267
      R=yangguo@chromium.org
      
      Review-Url: https://codereview.chromium.org/2499573002
      Cr-Commit-Position: refs/heads/master@{#40908}
      4ee6fdf3
  7. 17 Oct, 2016 1 commit
  8. 10 Oct, 2016 1 commit
    • bmeurer's avatar
      [turbofan] Enforce native context specialization. · f6bd23f2
      bmeurer authored
      There were once plans to generate cross-context code with TurboFan,
      however that doesn't fit into the model anymore, and so all of this
      is essentially dead untested code (and thus most likely already broken
      in subtle ways). With this mode still in place it would also be a lot
      harder to make inlining based on SharedFunctionInfo work.
      
      BUG=v8:2206,v8:5499
      R=jarin@chromium.org
      
      Review-Url: https://codereview.chromium.org/2406803002
      Cr-Commit-Position: refs/heads/master@{#40109}
      f6bd23f2
  9. 06 Oct, 2016 1 commit
    • mvstanton's avatar
      [Turbofan] Introduce OtherNumberConstant. · 978fe70b
      mvstanton authored
      With this CL, we devolve all Constants introduced as they are with an object handle into
      
      * Range - for integers
      * Nan
      * MinusZero
      * OtherNumberConstant - for doubles
      * HeapConstant
      
      We reduce the amount we have to inspect an object handle during optimization. Also, simplifications result. For example, you never have to check if a Range contains a HeapConstant.
      
      BUG=
      
      Review-Url: https://codereview.chromium.org/2381523002
      Cr-Commit-Position: refs/heads/master@{#40041}
      978fe70b
  10. 05 Oct, 2016 1 commit
  11. 22 Sep, 2016 1 commit
  12. 06 Sep, 2016 1 commit
  13. 05 Sep, 2016 1 commit
    • jochen's avatar
      Store the scope info in catch contexts · 9b6ff3a8
      jochen authored
      Since the extension field is already used for the catch name, store a
      ContextExtension there instead.
      
      In the future, this will allow for chaining ScopeInfos together, so we
      no longer need a context chain for lazy parsing / compilation.
      
      BUG=v8:5215
      R=bmeurer@chromium.org,neis@chromium.org,marja@chromium.org
      
      Review-Url: https://codereview.chromium.org/2302013002
      Cr-Commit-Position: refs/heads/master@{#39164}
      9b6ff3a8
  14. 01 Sep, 2016 1 commit
    • bmeurer's avatar
      [turbofan] Don't treat the hole NaN as constant inside the compiler. · 64a7bd38
      bmeurer authored
      We use a signaling NaN to represent the hole in
      FAST_HOLEY_DOUBLE_ELEMENTS backing stores, but on Intel processors, the
      C++ compiler may decide to (or be forced to due to calling conventions)
      use X87 registers for double values. However transfering to X87
      registers automatically quietens the NaNs and there's no way to disable
      this. Therefore we should just always load the hole NaN from the canonical
      place identified by the address_of_hole_nan external reference instead,
      which might even be more efficient in some cases.
      
      R=jarin@chromium.org, jkummerow@chromium.org
      BUG=v8:5332
      
      Review-Url: https://codereview.chromium.org/2303643002
      Cr-Commit-Position: refs/heads/master@{#39062}
      64a7bd38
  15. 08 Aug, 2016 1 commit
  16. 03 Aug, 2016 1 commit
  17. 11 Jul, 2016 1 commit
    • mstarzinger's avatar
      [turbofan] Respect pretenuring of heap numbers. · ecfec3b0
      mstarzinger authored
      This extends pretenuring decisions based on allocation sites to heap
      numbers that are allocated as part of object literals. It ensures memory
      locality of a bigger enclosure of the deep copy of an object literal.
      
      R=bmeurer@chromium.org
      TEST=cctest/test-heap/OptimizedPretenuringMixedInObjectProperties
      
      Review-Url: https://codereview.chromium.org/2135933002
      Cr-Commit-Position: refs/heads/master@{#37645}
      ecfec3b0
  18. 06 Jul, 2016 2 commits
  19. 20 Jun, 2016 1 commit
  20. 14 Jun, 2016 1 commit
  21. 13 Jun, 2016 3 commits
  22. 27 May, 2016 1 commit
  23. 11 May, 2016 1 commit
  24. 10 May, 2016 1 commit
    • bmeurer's avatar
      [turbofan] Initial version of allocation folding and write barrier elimination. · b8229ec4
      bmeurer authored
      This adds a new pass MemoryOptimizer that walks over the effect chain
      from Start and lowers all Allocate, LoadField, StoreField, LoadElement,
      and StoreElement nodes, trying to fold allocations into allocation
      groups and eliminate write barriers on StoreField and StoreElement if
      possible (i.e. if the object belongs to the current allocation group and
      that group allocates in new space).
      
      R=hpayer@chromium.org, jarin@chromium.org
      BUG=v8:4931, chromium:580959
      LOG=n
      
      Review-Url: https://codereview.chromium.org/1963583004
      Cr-Commit-Position: refs/heads/master@{#36128}
      b8229ec4
  25. 03 May, 2016 1 commit
  26. 14 Apr, 2016 1 commit
    • mstarzinger's avatar
      [turbofan] Use inline allocation for closures. · 43c7c76f
      mstarzinger authored
      This changes closure creation to lower to inline allocations when
      possible instead of going through the FastNewClosureStub. It allows us
      to leverage all advantages of inline allocations on closures. Note that
      it is only safe to embed the raw entry point of the compile lazy stub
      into the code, because that stub is immortal and immovable.
      
      R=mvstanton@chromium.org
      
      Review URL: https://codereview.chromium.org/1573153002
      
      Cr-Commit-Position: refs/heads/master@{#35499}
      43c7c76f
  27. 19 Feb, 2016 2 commits
    • bmeurer's avatar
      [turbofan] Relax restrictions on JSCreate inlining. · 24c8f0b0
      bmeurer authored
      No need to limit JSCreate inlining to JS_OBJECT_TYPE, since we can
      handle everything that the FastNewObjectStub can deal with. Also we
      don't need to restrict the number of inobject properties, as that is
      already taken care of by the runtime anyways (limited by the initial
      slack for the constructor).
      
      And last but not least, we can of course inline allocations for
      subclasses as long as the new.target is a JSFunction and it's initial
      map's constructor points back to the target (same condition as for
      the FastNewObjectStub fast case).
      
      R=jarin@chromium.org
      BUG=v8:4493
      LOG=n
      
      Review URL: https://codereview.chromium.org/1711883003
      
      Cr-Commit-Position: refs/heads/master@{#34138}
      24c8f0b0
    • 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
  28. 15 Feb, 2016 4 commits
  29. 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
  30. 08 Feb, 2016 1 commit