1. 08 Aug, 2017 24 commits
  2. 07 Aug, 2017 16 commits
    • Benedikt Meurer's avatar
      [turbofan] Properly check new.target parameter in inlined Reflect.construct. · cb9402aa
      Benedikt Meurer authored
      The ConstructFunctionForwardVarargs and ConstructForwardVarargs
      builtins, which are used when inlining the Reflect.construct
      builtin into TurboFan optimized code, didn't properly check the
      new.target parameter whether it's a constructor.
      
      Bug: chromium:752481
      Change-Id: I9b8f8c429d6eaed0ff8d27fc3f6b52eb906766a2
      Reviewed-on: https://chromium-review.googlesource.com/604187
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47206}
      cb9402aa
    • Mircea Trofin's avatar
      [wasm] Clarify source of runtime information for interpreter. · 3f1e32b3
      Mircea Trofin authored
      This is part of the effort to consolidate the ownership of
      wasm instantiation/specialization parameters.
      
      This change is focused solely on the interpreter part of that effort, to
      verify we're not regressing performance in interpreter benchmarks.
      
      There are two aspects being addressed:
      - dataflow-wise, we always fetch the interpreter's memory view from the
      runtime objects (i.e. WasmInstanceObject/WasmCompiledModule). This is
      consistent with how other instance-specific information is obtained
      (e.g. code, indirect functions).
      
      - representation-wise, we do not reuse ModuleEnv/WasmInstance just for
      the memory view, because it is surprising that other instance info isn't
      accessed from there. 
      
      Bug: 
      Change-Id: I536fbffd8e1f142a315fa1770ba9b08319f56a8e
      Reviewed-on: https://chromium-review.googlesource.com/602083Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Commit-Queue: Mircea Trofin <mtrofin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47205}
      3f1e32b3
    • Tobias Tebbi's avatar
      [builtins] Fix ArrayShift for double elements kind if head is the hole. · 81778aaf
      Tobias Tebbi authored
      The code accidentally jumped over the actual left-shift part when the
      head of the array was the hole.
      
      Bug: chromium:752722
      Change-Id: I300a3ebcfafb07d6ecebc01fa57c66eb26f349ac
      Reviewed-on: https://chromium-review.googlesource.com/603717Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47204}
      81778aaf
    • Tobias Tebbi's avatar
      [turbofan] new escape analysis reducer: look through newly introduced typeguards · 688689d3
      Tobias Tebbi authored
      Bug: chromium:752438
      Change-Id: I6e168f0e8101cf9f28915ca94c40d408ed75d079
      Reviewed-on: https://chromium-review.googlesource.com/603612
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47203}
      688689d3
    • Alexandre Talon's avatar
      [Turbofan] Fixing A/B/C test operators in unittests · 864837ff
      Alexandre Talon authored
      Currently only A test operators had output, but since ABReducer and BCReducer
      perform in-place replacement of A nodes into B nodes, and then sometimes into
      C nodes, we need B and C nodes to have as many outputs. Otherwise, we run into
      a situation where a node {x} has a use {y}, but its operators has 0 outputs,
      which is inconsistent.
      
      Bug: 
      Change-Id: I0f73b83d2115dfeda3c9cbc97b9a2fc168f4c31b
      Reviewed-on: https://chromium-review.googlesource.com/603716Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Commit-Queue: Alexandre Talon <alexandret@google.com>
      Cr-Commit-Position: refs/heads/master@{#47202}
      864837ff
    • Ulan Degenbaev's avatar
      [heap] Disable parallel scavenge. · feb3ee40
      Ulan Degenbaev authored
      Bug: chromium:752750
      TBR: mlippautz@chromium.org
      Change-Id: I95ca30742c05be03dcaebb0cd32af04b226e23e2
      Reviewed-on: https://chromium-review.googlesource.com/603652Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47201}
      feb3ee40
    • Maya Lekova's avatar
      Revert "Reland "[builtins] Port getting property from Proxy to CSA"" · ceb55494
      Maya Lekova authored
      This reverts commit 15ef03cb.
      
      Reason for revert: Found the following bugs
      
      Bug: chromium:752846, chromium:752712, chromium:752850
      
      Original change's description:
      > Reland "[builtins] Port getting property from Proxy to CSA"
      > 
      > This reland is after fix in [heap] Delete wrong DCHECK.
      > It includes moving ProxyGetProperty to its own stub to reduce
      > binary size.
      > 
      > This is a reland of 47a97aa5
      > Original change's description:
      > > [builtins] Port getting property from Proxy to CSA
      > > 
      > > Bug: v8:6559, v8:6557
      > > Change-Id: If6c51f5483adb73ddd2495cede5d85e887a3c298
      > > Reviewed-on: https://chromium-review.googlesource.com/589212
      > > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
      > > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
      > > Commit-Queue: Maya Lekova <mslekova@google.com>
      > > Cr-Commit-Position: refs/heads/master@{#47113}
      > 
      > Bug: v8:6559, v8:6557
      > Change-Id: I76acd97ba1acb62b7e7983db1741441d997050f0
      > Reviewed-on: https://chromium-review.googlesource.com/600215
      > Commit-Queue: Maya Lekova <mslekova@google.com>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Reviewed-by: Franziska Hinkelmann <franzih@chromium.org>
      > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#47159}
      
      TBR=jkummerow@chromium.org,mstarzinger@chromium.org,franzih@chromium.org,jgruber@chromium.org,ishell@chromium.org,bmeurer@chromium.org,mslekova@google.com
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      Change-Id: I51bef25a031b02cf4deab11282473acae57f1ed3
      Reviewed-on: https://chromium-review.googlesource.com/603708
      Commit-Queue: Maya Lekova <mslekova@google.com>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47200}
      ceb55494
    • Ross McIlroy's avatar
      [Compiler] Refactor CompileUnoptimizedCode to do all Finalization at the end. · a704cc79
      Ross McIlroy authored
      Refactors CompileUnoptimizedCode to do all the finalization for both
      inner and the outermost function after having prepared and executed their
      compile jobs. This will enable the function to be split into an off-thread
      phase and a finalization main thread phase.
      
      BUG=v8:5203
      
      Change-Id: I400933c27b7aa52f9a7318b721adecfc94c80981
      Reviewed-on: https://chromium-review.googlesource.com/602236
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47199}
      a704cc79
    • Ross McIlroy's avatar
      [Compiler] Move CompilationInfo into CompilationJob for unoptimized jobs. · a7a166e3
      Ross McIlroy authored
      Moves creation of the CompilationInfo for unoptimized compilation into the
      respective CompilationJobs for Igntition, Fullcode and asm.js. This unifies
      the behaviour with respect to the optimized compilation jobs, and enables the
      CompileInfo to be owned by the CompilationJob.
      
      As part of this change, we no longer build new dummy ParseInfos for eager inner
      functions, instead using just the single outer ParseInfo created during the
      actual parsing.
      
      BUG=v8:5203
      
      Change-Id: I6813758dfc5eeff44f5a40bf621184e330593bf9
      Reviewed-on: https://chromium-review.googlesource.com/601990
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47198}
      a7a166e3
    • Yang Guo's avatar
      [coverage] clamp to binary before merging. · 88931804
      Yang Guo authored
      R=jgruber@chromium.org
      
      Change-Id: Iad6f815d2476c59a498b7f580ec664417e83c675
      Reviewed-on: https://chromium-review.googlesource.com/600050
      Commit-Queue: Yang Guo <yangguo@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47197}
      88931804
    • Benedikt Meurer's avatar
      [ic] Properly integrate the CallIC into Ignition. · ee350c31
      Benedikt Meurer authored
      Drop the deprecated CallConstructStub and remove the use of CallICStub
      from fullcodegen, since that feedback is unused completely every since
      Crankshaft got removed, thus we can safely unlink all the CallIC stuff
      from fullcodegen nowadays, and completely nuke the CallICStub and the
      CallICTrampolineStub now (we can also transitively nuke the unused
      CreateAllocationSiteStub and CreateWeakCellStub).
      
      Instead the CallIC logic is integrated into Ignition now, and part of
      the bytecode handlers for [[Call]] and [[Construct]]. There's still some
      follow-up cleanup with the way the Array constructor feedback is
      integrated, but that's way easier now.
      
      Bug: v8:5517, v8:6399, v8:6409, v8:6679
      Change-Id: I0a6c6046faceca9b1606577bc9e63d9295e44619
      Reviewed-on: https://chromium-review.googlesource.com/603609
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47196}
      ee350c31
    • Clemens Hammacher's avatar
      [wasm] [debug] Implement calling imported wasm functions · c39c6eba
      Clemens Hammacher authored
      The interpreter was not able to call imported wasm functions (hitting
      UNIMPLEMENTED). This CL fixes this by creating a "CWasmEntry", which is
      signature-specific. It has JS linkage and receives the wasm code object
      to call and a buffer containing all arguments (similar to the
      interpreter entry). It loads all arguments from the buffer and calls the
      given code object.
      The c-wasm-entry code objects are cached per instance, such that we
      only create them once per signature.
      
      These wasm entry stubs will also allow us to call back to compiled code
      from the interpreter, which we might want to do to reduce the slowdown
      of executing wasm for debugging.
      
      R=titzer@chromium.org
      
      Bug: chromium:735792
      Change-Id: I7fecec3a7bec62a9de40fff115b684759b12a28b
      Reviewed-on: https://chromium-review.googlesource.com/600308
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47195}
      c39c6eba
    • Benedikt Meurer's avatar
      [turbofan] Remove obsolete JSCall support for AllocationSites. · b1b595b0
      Benedikt Meurer authored
      As of https://chromium-review.googlesource.com/600968 the CallIC no
      longer supports AllocationSite feedback for [[Call]], so we can drop
      the TurboFan bits that deal with AllocationSites for JSCall nodes as
      well. This further simplifies the handling of the Array constructor.
      
      Drive-by-fix: Rename Builtins::kArrayCode to Builtins::kArrayConstructor
      for sake of consistency.
      
      Bug: v8:6399
      Change-Id: I9e6a684fc00dd72e25f925db5f407c3f3f715873
      Reviewed-on: https://chromium-review.googlesource.com/602354
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47194}
      b1b595b0
    • Michael Achenbach's avatar
      Revert "[ic] Properly integrate the CallIC into Ignition." · 018128a4
      Michael Achenbach authored
      This reverts commit 6c541561.
      
      Reason for revert:
      https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20nosnap/builds/17240
      
      Original change's description:
      > [ic] Properly integrate the CallIC into Ignition.
      > 
      > Drop the deprecated CallConstructStub and remove the use of CallICStub
      > from fullcodegen, since that feedback is unused completely every since
      > Crankshaft got removed, thus we can safely unlink all the CallIC stuff
      > from fullcodegen nowadays, and completely nuke the CallICStub and the
      > CallICTrampolineStub now (we can also transitively nuke the unused
      > CreateAllocationSiteStub and CreateWeakCellStub).
      > 
      > Instead the CallIC logic is integrated into Ignition now, and part of
      > the bytecode handlers for [[Call]] and [[Construct]]. There's still some
      > follow-up cleanup with the way the Array constructor feedback is
      > integrated, but that's way easier now.
      > 
      > Bug: v8:5517, v8:6399, v8:6409, v8:6679
      > Change-Id: Ia0efc6145ee64633757a6c3fd1879d4906ea2835
      > Reviewed-on: https://chromium-review.googlesource.com/602134
      > Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      > Reviewed-by: Yang Guo <yangguo@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#47192}
      
      TBR=rmcilroy@chromium.org,yangguo@chromium.org,bmeurer@chromium.org
      
      Change-Id: I416ce6646f62ceb4127b3acee43912ee0d701c23
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:5517, v8:6399, v8:6409, v8:6679
      Reviewed-on: https://chromium-review.googlesource.com/603647Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47193}
      018128a4
    • Benedikt Meurer's avatar
      [ic] Properly integrate the CallIC into Ignition. · 6c541561
      Benedikt Meurer authored
      Drop the deprecated CallConstructStub and remove the use of CallICStub
      from fullcodegen, since that feedback is unused completely every since
      Crankshaft got removed, thus we can safely unlink all the CallIC stuff
      from fullcodegen nowadays, and completely nuke the CallICStub and the
      CallICTrampolineStub now (we can also transitively nuke the unused
      CreateAllocationSiteStub and CreateWeakCellStub).
      
      Instead the CallIC logic is integrated into Ignition now, and part of
      the bytecode handlers for [[Call]] and [[Construct]]. There's still some
      follow-up cleanup with the way the Array constructor feedback is
      integrated, but that's way easier now.
      
      Bug: v8:5517, v8:6399, v8:6409, v8:6679
      Change-Id: Ia0efc6145ee64633757a6c3fd1879d4906ea2835
      Reviewed-on: https://chromium-review.googlesource.com/602134
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47192}
      6c541561
    • Clemens Hammacher's avatar
      Move helper struct from logging.h to template-utils.h · 84dc3679
      Clemens Hammacher authored
      I want to reuse the PassType helper in another CL, thus move it from
      logging.h to template-utils.h, and rename it to pass_value_or_ref to
      match other helpers there.
      Also, add a boolean template parameter to declare whether array
      dimensions should be removed. The default is to do so, which helps to
      reduce the number of template instantiations by always passing arrays
      as pointers.
      
      Also, fix the usages in logging.h to actually use that helper when
      instantiating other template functions. This will reduce the number of
      instantiations.
      
      And finally, we now have unit tests for the template utils, to document
      what we expect, and test that this works on all architectures.
      
      R=ishell@chromium.org, tebbi@chromium.org
      
      Change-Id: I1ef5d2a489a5cfc7601c5ab13748674e3aa86cd6
      Reviewed-on: https://chromium-review.googlesource.com/594247
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47191}
      84dc3679