1. 02 Nov, 2017 9 commits
    • Michael Achenbach's avatar
      Revert "Revert "[cctest] Clarify that tests for sync instructions are simulator specific"" · d9c5e5d0
      Michael Achenbach authored
      This reverts commit 1feadfe8.
      
      Reason for revert: Reland as bot stayed red after revert.
      
      Original change's description:
      > Revert "[cctest] Clarify that tests for sync instructions are simulator specific"
      > 
      > This reverts commit 4013518f.
      > 
      > Reason for revert:
      > https://build.chromium.org/p/client.v8.ports/builders/V8%20Linux%20-%20arm64%20-%20sim%20-%20gc%20stress
      > 
      > Original change's description:
      > > [cctest] Clarify that tests for sync instructions are simulator specific
      > > 
      > > Some tests were recently added to test-simulator-arm.cc, however this file is
      > > meant for tests that are specific to the simulator and therefore are not written
      > > to work on hardware. While this sounds surprising, the reason is that our simulation
      > > of synchronisation instructions is more conservative than on hardware.
      > > 
      > > To make this more clear, this patch renames the "test-simulator-arm{,64}.cc"
      > > files to "test-sync-primitives-arm{,64}.cc", and moves the vneg and vabs tests
      > > into "test-assembler-arm.cc" which is were tests that are garanteed to work in
      > > either native or simulated environments live.
      > > 
      > > Finally, take the opportunity to share a little bit of code.
      > > 
      > > Bug: v8:6963
      > > Change-Id: Ifb85d3671c823b9bba73d09f419536b089a4e87c
      > > Reviewed-on: https://chromium-review.googlesource.com/749387
      > > Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
      > > Commit-Queue: Pierre Langlois <pierre.langlois@arm.com>
      > > Cr-Commit-Position: refs/heads/master@{#49073}
      > 
      > TBR=clemensh@chromium.org,pierre.langlois@arm.com,bmeurer@chromium.org
      > 
      > Change-Id: I1bfb4e9c7c18b716f417a84b18a14cb2e1fa3a7a
      > No-Presubmit: true
      > No-Tree-Checks: true
      > No-Try: true
      > Bug: v8:6963
      > Reviewed-on: https://chromium-review.googlesource.com/750624
      > Reviewed-by: Michael Achenbach <machenbach@chromium.org>
      > Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#49074}
      
      TBR=machenbach@chromium.org,clemensh@chromium.org,pierre.langlois@arm.com,bmeurer@chromium.org
      
      Change-Id: I5af7bd3678758130534730a2f6f0b651b64c6956
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:6963
      Reviewed-on: https://chromium-review.googlesource.com/750903Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49075}
      d9c5e5d0
    • Michael Achenbach's avatar
      Revert "[cctest] Clarify that tests for sync instructions are simulator specific" · 1feadfe8
      Michael Achenbach authored
      This reverts commit 4013518f.
      
      Reason for revert:
      https://build.chromium.org/p/client.v8.ports/builders/V8%20Linux%20-%20arm64%20-%20sim%20-%20gc%20stress
      
      Original change's description:
      > [cctest] Clarify that tests for sync instructions are simulator specific
      > 
      > Some tests were recently added to test-simulator-arm.cc, however this file is
      > meant for tests that are specific to the simulator and therefore are not written
      > to work on hardware. While this sounds surprising, the reason is that our simulation
      > of synchronisation instructions is more conservative than on hardware.
      > 
      > To make this more clear, this patch renames the "test-simulator-arm{,64}.cc"
      > files to "test-sync-primitives-arm{,64}.cc", and moves the vneg and vabs tests
      > into "test-assembler-arm.cc" which is were tests that are garanteed to work in
      > either native or simulated environments live.
      > 
      > Finally, take the opportunity to share a little bit of code.
      > 
      > Bug: v8:6963
      > Change-Id: Ifb85d3671c823b9bba73d09f419536b089a4e87c
      > Reviewed-on: https://chromium-review.googlesource.com/749387
      > Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
      > Commit-Queue: Pierre Langlois <pierre.langlois@arm.com>
      > Cr-Commit-Position: refs/heads/master@{#49073}
      
      TBR=clemensh@chromium.org,pierre.langlois@arm.com,bmeurer@chromium.org
      
      Change-Id: I1bfb4e9c7c18b716f417a84b18a14cb2e1fa3a7a
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:6963
      Reviewed-on: https://chromium-review.googlesource.com/750624Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49074}
      1feadfe8
    • Pierre Langlois's avatar
      [cctest] Clarify that tests for sync instructions are simulator specific · 4013518f
      Pierre Langlois authored
      Some tests were recently added to test-simulator-arm.cc, however this file is
      meant for tests that are specific to the simulator and therefore are not written
      to work on hardware. While this sounds surprising, the reason is that our simulation
      of synchronisation instructions is more conservative than on hardware.
      
      To make this more clear, this patch renames the "test-simulator-arm{,64}.cc"
      files to "test-sync-primitives-arm{,64}.cc", and moves the vneg and vabs tests
      into "test-assembler-arm.cc" which is were tests that are garanteed to work in
      either native or simulated environments live.
      
      Finally, take the opportunity to share a little bit of code.
      
      Bug: v8:6963
      Change-Id: Ifb85d3671c823b9bba73d09f419536b089a4e87c
      Reviewed-on: https://chromium-review.googlesource.com/749387Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Commit-Queue: Pierre Langlois <pierre.langlois@arm.com>
      Cr-Commit-Position: refs/heads/master@{#49073}
      4013518f
    • Benedikt Meurer's avatar
      [ic] Internalize strings on the fly in KeyedLoadICGeneric. · 6366a010
      Benedikt Meurer authored
      This turns on the existing --internalize_on_the_fly flag for the
      MEGAMORPHIC KeyedLoadIC to properly internalize strings before
      looking up the property. This avoids the otherwise taken runtime
      call to %KeyedGetProperty, which is definitely slower.
      
      Initially the --internalize_on_the_fly flag was turned off because
      internalizing strings on the fly causes too much traffic on the
      megamorphic stub cache. We avoid this problem here by not probing
      the stub cache in that case, which still gives the benefit of not
      having to go to the runtime.
      
      This improves the babylon test on the web-tooling-benchmark by around
      2-3% and will probably also help with several tests (like React or
      Ember) on the Speedometer benchmark.
      
      If this CL causes trouble (i.e. tanks something important), we can
      just turn off the --internalize_on_the_fly flag again.
      
      Bug: v8:6936, v8:7026
      Change-Id: Ia59a8a3799d9624d831d66b05bae3ecef31cee0a
      Reviewed-on: https://chromium-review.googlesource.com/750821Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49072}
      6366a010
    • Andreas Haas's avatar
      [wasm] Improve stack check in the interpreter · 793c52ed
      Andreas Haas authored
      The existing stack check only checked the number of stack frames on the
      stack, not the actual size of the stack frames. In the test case, each
      stack frame is huge, and the interpreter runs out of memory before the
      stack check stops the execution. With this change we take the size of
      the value stack and the size of the control stack and compare their sum
      to the stack limit of V8. Note that this stack limit is kind of
      arbitrary, because the stack space of the interpreter is not on the
      actual runtime stack but allocated in zone memory, and the stack check
      exists to simulate stack overflows in compiled code, not to prevent
      actual stack overflows.
      
      R=clemensh@chromium.org
      TEST=mjsunit/regress/wasm/regress-778917
      
      Bug: chromium:778917
      Change-Id: Ife47631fcb1a178a68facab1e42c0069b12c0155
      Reviewed-on: https://chromium-review.googlesource.com/744003
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49071}
      793c52ed
    • Benedikt Meurer's avatar
      Disable --string-slices. · fd5b067f
      Benedikt Meurer authored
      This is an experiment to quantify the impact of SlicedStrings on both
      performance and memory usage. The intention is to get Canary coverage
      for the experiment and then decide how to proceed.
      
      Bug: v8:7025
      Change-Id: Ied548cd9e2fab127c1ad2aea3e60b2615d3de663
      Reviewed-on: https://chromium-review.googlesource.com/750082
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49070}
      fd5b067f
    • Yang Guo's avatar
      Perform stack check on Proxy call trap. · 1e77461d
      Yang Guo authored
      Proxy's call trap can be used to cause recursion.
      
      R=bmeurer@chromium.org, tebbi@chromium.org
      
      Bug: chromium:779344
      Change-Id: I19c989f618f7230028ebe18c3415bc3f4bd72b93
      Reviewed-on: https://chromium-review.googlesource.com/743782Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Commit-Queue: Yang Guo <yangguo@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49069}
      1e77461d
    • Benedikt Meurer's avatar
      Reintroduce compile-time --string-slices flag. · 781f7685
      Benedikt Meurer authored
      This partially reverts commit aaebbbaa,
      which removed the --string-slices flag. We reintroduce the flag as a
      build time flag for an experiment to gather information of how much
      SliceStrings help with throughput and effective memory use.
      
      Bug: v8:7025
      Change-Id: I529da91bb7501fe93d83891abf560710f3ecb9d0
      Reviewed-on: https://chromium-review.googlesource.com/750681Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49068}
      781f7685
    • Benedikt Meurer's avatar
      [builtins] Support two byte strings in StringEqual builtin. · f597eec1
      Benedikt Meurer authored
      This CL adds support for two byte string comparisons to the StringEqual
      builtin, which so far was bailing out to the generic %StringEqual
      runtime function whenever any two-byte string was involved. This made
      comparisons that involved two-byte strings, either comparing them to
      one-byte strings or comparing two two-byte strings, up to 3x slower than
      if only one-byte strings were involved.
      
      With this change, all direct string (SeqString or ExternalString)
      equality checks are roughly on par now, and the weird performance cliff
      is gone. On the micro-benchmark from the bug we go from
      
        stringEqualBothOneByteSeqString: 162 ms.
        stringEqualTwoByteAndOneByteSeqString: 446 ms.
        stringEqualOneByteAndTwoByteSeqString: 438 ms.
        stringEqualBothTwoByteSeqString: 472 ms.
      
      to
      
        stringEqualBothOneByteSeqString: 151 ms.
        stringEqualTwoByteAndOneByteSeqString: 158 ms.
        stringEqualOneByteAndTwoByteSeqString: 166 ms.
        stringEqualBothTwoByteSeqString: 160 ms.
      
      which is the desired result. On the esprima test of the
      web-tooling-benchmark we seem to improve by 1-2%, which corresponds to
      the savings of going to the runtime for many StringEqual comparisons.
      
      Drive-by-cleanup: Introduce LoadAndUntagStringLength helper into the CSA
      with proper typing to avoid the unnecessary shifts on 64-bit platforms
      when keeping the length tagged initially in StringEqual.
      
      Bug: v8:4913, v8:6365, v8:6371, v8:6936, v8:7022
      Change-Id: I566f4b80e217513775ffbd35e0480154abf59b27
      Reviewed-on: https://chromium-review.googlesource.com/749223Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49067}
      f597eec1
  2. 01 Nov, 2017 5 commits
  3. 31 Oct, 2017 18 commits
  4. 30 Oct, 2017 8 commits
    • Junliang Yan's avatar
      PPC: Set const pool unavailable after frame destructed · 7263030a
      Junliang Yan authored
      R=joransiu@ca.ibm.com, jbarboza@ca.ibm.com, michael_dawson@ca.ibm.com
      
      Bug: 
      Change-Id: I1f25a81637dd50b1d7e9a47154e3df4c61521fad
      Reviewed-on: https://chromium-review.googlesource.com/744504Reviewed-by: 's avatarJoran Siu <joransiu@ca.ibm.com>
      Commit-Queue: Junliang Yan <jyan@ca.ibm.com>
      Cr-Commit-Position: refs/heads/master@{#49043}
      7263030a
    • Sathya Gunasekaran's avatar
      [parser] Add new FunctionNameInferrer state before parsing param · c3458a86
      Sathya Gunasekaran authored
      Create new state before parsing FormalParameter because we don't
      want to use any of the parameters as an inferred function name.
      
      Previously the stacktrace was:
        test.js:3: Error: boom
            throw new Error('boom');
            ^
        Error: boom
            at param (test.js:3:11)
            at test.js:4:5
            at test.js:6:3
      
      The stacktrace with this patch:
        test.js:3: Error: boom
            throw new Error('boom');
            ^
        Error: boom
            at test.js:3:11
            at test.js:4:5
            at test.js:6:3
      
      
      Bug: v8:6822, v8:6513
      Change-Id: Ifbadc660fc4e85248af405acd67c025f11662bd4
      Reviewed-on: https://chromium-review.googlesource.com/742657Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
      Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49042}
      c3458a86
    • Andreas Haas's avatar
      [platform] Add TaskRunner to the platform API · c690f54d
      Andreas Haas authored
      With the existing platform API it is not possible to post foreground
      tasks from background tasks. This is, however, required to implement
      asynchronous compilation for WebAssembly. With this CL we add the
      concept of a TaskRunner to the platform API. The TaskRunner contains
      all data needed to post a foreground task and can be used both from a
      foreground task and a background task. Eventually the TaskRunner should
      replace the existing API.
      
      In addition, this CL contains a default implementation of the
      TaskRunner. This implementation has tempory workaround for platforms
      which do not provide a TaskRunner implementation yet. This default
      implementation should be deleted again when all platforms provide a
      TaskRunner implementation.
      
      R=rmcilroy@chromium.org
      
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: I6ea4a1c9da1eb9a19e8ce8f2163000dbc2598802
      Reviewed-on: https://chromium-review.googlesource.com/741588
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49041}
      c690f54d
    • Camillo Bruni's avatar
      [log] Support logging basic function events · 949734f7
      Camillo Bruni authored
      This CL contains the base implementation for logging function events.
      Currently only compiler events are support (compile, compile-lazy...),
      future CLs will enable log events for parsing and first-time exeuction
      of functions.
      
      Bug: chromium:757467
      Change-Id: Ia705979190a3ebc1009989610483a7a141bc504b
      Reviewed-on: https://chromium-review.googlesource.com/743921Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Commit-Queue: Camillo Bruni <cbruni@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49040}
      949734f7
    • Igor Sheludko's avatar
      [proxy] Properly handle exceptions from Object::ToName(). · ef45d789
      Igor Sheludko authored
      ... when storing to proxies.
      
      Bug: chromium:772897
      Change-Id: Ia91e69f35dc3b1f67b67038bd8206e508149e9a3
      Reviewed-on: https://chromium-review.googlesource.com/744041Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Commit-Queue: Igor Sheludko <ishell@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49039}
      ef45d789
    • Junliang Yan's avatar
      s390: [wasm] Int64 lowering for return values · 31611cb5
      Junliang Yan authored
      Port 776d6e9d
      
      R=rossberg@chromium.org, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com, jbarboza@ca.ibm.com
      BUG=
      LOG=N
      
      Change-Id: I62e59ba70fac2627a5ee00fd3007766c7c570ba3
      Reviewed-on: https://chromium-review.googlesource.com/742694Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
      Commit-Queue: Junliang Yan <jyan@ca.ibm.com>
      Cr-Commit-Position: refs/heads/master@{#49038}
      31611cb5
    • Michael Stanton's avatar
      Revert "[TurboFan] Remove maximum inlining levels check from inlining heuristics" · f585415a
      Michael Stanton authored
      This reverts commit ecd3a2ea.
      
      Reason for revert: Bug 779509, a crash with chrome.
      
      Original change's description:
      > [TurboFan] Remove maximum inlining levels check from inlining heuristics
      > 
      > We have a check on maximum number of levels that can be inlined. This
      > in some cases causes performance cliffs, when we cannot inline a small
      > function because it has exceeded the number of levels. This cl removes
      > that check. The intuition is that, having gone down several levels in
      > a particular line stopping inlining that chain and exploring a new
      > call site may not be beneficial.
      > 
      > Bug: v8:6871
      > Change-Id: I120056db38e78ce48dff010b6cf994259238582a
      > Reviewed-on: https://chromium-review.googlesource.com/741705
      > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
      > Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#49009}
      
      TBR=mythria@chromium.org,bmeurer@chromium.org
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      Bug: v8:6871
      Change-Id: I4766f911cb326c224af110be5c0dd7a44362a880
      Reviewed-on: https://chromium-review.googlesource.com/743785Reviewed-by: 's avatarMichael Stanton <mvstanton@chromium.org>
      Commit-Queue: Michael Stanton <mvstanton@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49037}
      f585415a
    • peterwmwong's avatar
      [builtins] Port WeakMap.p.set and WeakSet.p.add to CSA from JS · 7ae0a2f9
      peterwmwong authored
      - Add WeakMapPrototypeSet and WeakSetPrototypeAdd TFJ builtins
        - Fast paths for...
          1) existing key
          2) new key when ObjectHashTable has a "sufficient capacity"
      - Create WeakCollectionsBuiltinsAssembler to consolidate common WeakMap/WeakSet code generation
      - Convert existing WeakMapLookupHashIndex to use WeakCollectionsBuiltinsAssembler
      
      Some quick benchmarks shows performance gains of...
      - 1.56x - 1.98x for WeakMap constructor
      - 1.66x - 2.06x for WeakSet constructor
      - 1.50x - 2.11x for WeakMap.p.set
      - 1.54x - 2.26x for WeakSet.p.add
      
      https: //github.com/peterwmwong/v8-perf/blob/master/weakcollection-set/README.md
      Bug: v8:5049, v8:6604
      Change-Id: I3499d46be6b2b3b1d8d46720ebe86cc5142ee542
      Reviewed-on: https://chromium-review.googlesource.com/737935
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49036}
      7ae0a2f9