1. 04 Sep, 2017 2 commits
  2. 01 Sep, 2017 5 commits
  3. 31 Aug, 2017 5 commits
  4. 30 Aug, 2017 3 commits
  5. 29 Aug, 2017 6 commits
    • Clemens Hammacher's avatar
      [wasm] Fix throwing and catching exceptions · 9ee7e4ec
      Clemens Hammacher authored
      This reimplements functionality that was present before the decoder
      refactoring. It's implemented a bit differently though by generating
      the code for re-throwing an uncaught exception earlier (when generating
      code for the catch).
      
      R=titzer@chromium.org, kschimpf@chromium.org
      
      Bug: v8:6600
      Change-Id: Ie2f11837851c0602ab31506fa63475fc2d0b5047
      Reviewed-on: https://chromium-review.googlesource.com/641550
      Commit-Queue: Brad Nelson <bradnelson@chromium.org>
      Reviewed-by: 's avatarBrad Nelson <bradnelson@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47687}
      9ee7e4ec
    • Clemens Hammacher's avatar
      Reland "[wasm] Refactor function body decoder" · 54040fff
      Clemens Hammacher authored
      This is a reland of 6b4dc039
      Original change's description:
      > [wasm] Refactor function body decoder
      > 
      > This refactoring separates graph building from wasm decoding. The
      > WasmGraphBuilder is just a consumer of the decoded information.
      > Decoding without any consumer (i.e. just validation) gets 16% faster by
      > this refactoring, because no TFNode* have to be stored in the value
      > stack, and all dynamic tests to determine whether the graph should be
      > build are gone (measured on AngryBots; before: 110.2 +- 3.3ms, after:
      > 92.2 +- 3.1 ms).
      > 
      > This new design will allow us to also attach other consumers, e.g. a
      > new baseline compiler.
      > 
      > R=titzer@chromium.org
      > 
      > Bug: v8:6600
      > Change-Id: I4b60f2409d871a16c3c52a37e515bcfb9dbb8f54
      > Reviewed-on: https://chromium-review.googlesource.com/571010
      > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > Reviewed-by: Ben Titzer <titzer@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#47671}
      
      TBR=titzer@chromium.org
      
      Bug: v8:6600
      Change-Id: Idd867c5a1917437de5b6e3de5917cc1c9f194489
      Reviewed-on: https://chromium-review.googlesource.com/640591Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47678}
      54040fff
    • Enrico Bacis's avatar
      [wasm] Add tests for grow_memory in functions inside loops · 08e8bbaf
      Enrico Bacis authored
      This CL introduces 4 test that verify that the effects of a grow_memory
      instruction executed in a function invoked inside a loop are visible
      also when the loop is over. This is needed because the
      AnalyzeLoopAssignment method in function-body-decoder.cc is creating Phi
      nodes only for variables assigned inside the loop. The test cases
      introduced by this CL verify that the mem_size and mem_start variables
      are always correct.
      
      The tests verify the output of the current_memory instruction and the
      result of loading a variable stored in the grown memory inside the
      loop in the following cases:
      
       * the memory is grown in a directly called function inside a loop;
      
       * the memory is grown in an indirectly called function inside a loop.
      
      R=ahaas@chromium.org,clemensh@chromium.org,gdeepti@chromium.org
      
      Change-Id: I2992bf4086b5eac9580c87e2e0ca06364b99714c
      Reviewed-on: https://chromium-review.googlesource.com/637911Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarDeepti Gandluri <gdeepti@chromium.org>
      Commit-Queue: Enrico Bacis <enricobacis@google.com>
      Cr-Commit-Position: refs/heads/master@{#47674}
      08e8bbaf
    • Clemens Hammacher's avatar
      Revert "[wasm] Refactor function body decoder" · 425ede39
      Clemens Hammacher authored
      This reverts commit 6b4dc039.
      
      Reason for revert: Mips build failure: https://build.chromium.org/p/client.v8.ports/builders/V8%20Mips%20-%20builder/builds/11749
      
      Original change's description:
      > [wasm] Refactor function body decoder
      > 
      > This refactoring separates graph building from wasm decoding. The
      > WasmGraphBuilder is just a consumer of the decoded information.
      > Decoding without any consumer (i.e. just validation) gets 16% faster by
      > this refactoring, because no TFNode* have to be stored in the value
      > stack, and all dynamic tests to determine whether the graph should be
      > build are gone (measured on AngryBots; before: 110.2 +- 3.3ms, after:
      > 92.2 +- 3.1 ms).
      > 
      > This new design will allow us to also attach other consumers, e.g. a
      > new baseline compiler.
      > 
      > R=​titzer@chromium.org
      > 
      > Bug: v8:6600
      > Change-Id: I4b60f2409d871a16c3c52a37e515bcfb9dbb8f54
      > Reviewed-on: https://chromium-review.googlesource.com/571010
      > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > Reviewed-by: Ben Titzer <titzer@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#47671}
      
      TBR=titzer@chromium.org,clemensh@chromium.org
      
      Change-Id: I76a50e355f0390cc53a2da4ceedd8830ca20a9c6
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:6600
      Reviewed-on: https://chromium-review.googlesource.com/640870Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47672}
      425ede39
    • Clemens Hammacher's avatar
      [wasm] Refactor function body decoder · 6b4dc039
      Clemens Hammacher authored
      This refactoring separates graph building from wasm decoding. The
      WasmGraphBuilder is just a consumer of the decoded information.
      Decoding without any consumer (i.e. just validation) gets 16% faster by
      this refactoring, because no TFNode* have to be stored in the value
      stack, and all dynamic tests to determine whether the graph should be
      build are gone (measured on AngryBots; before: 110.2 +- 3.3ms, after:
      92.2 +- 3.1 ms).
      
      This new design will allow us to also attach other consumers, e.g. a
      new baseline compiler.
      
      R=titzer@chromium.org
      
      Bug: v8:6600
      Change-Id: I4b60f2409d871a16c3c52a37e515bcfb9dbb8f54
      Reviewed-on: https://chromium-review.googlesource.com/571010
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47671}
      6b4dc039
    • Jaroslav Sevcik's avatar
      [turbofan] Retype ConvertTaggedHoleToUndefined in representation selection. · a529f128
      Jaroslav Sevcik authored
      Bug: chromium:758983
      Change-Id: Iea65c6c6330b4eed0969eee1f8b261e1446771f5
      Reviewed-on: https://chromium-review.googlesource.com/640382
      Commit-Queue: Jaroslav Sevcik <jarin@chromium.org>
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47669}
      a529f128
  6. 28 Aug, 2017 3 commits
  7. 25 Aug, 2017 8 commits
  8. 24 Aug, 2017 3 commits
  9. 23 Aug, 2017 5 commits
    • Adam Klein's avatar
      [ignition] Fix return value of delete on global lexical variables · ac0a2df3
      Adam Klein authored
      BytecodeGenerator previously assumed that any UNALLOCATED variable
      must be a global object property, but that's incorrect for global
      lexical variables declared in a different script.
      
      This patch fixes the behavior by always falling back to the runtime
      to deal with deleting UNALLOCATED variables. This is sub-optimal,
      but should be correct, and it's unclear if speed is important for
      this case.
      
      Bug: v8:6733
      Change-Id: I83c2a0b6e30e5e5f4c79bfe14ebf196529816c71
      Reviewed-on: https://chromium-review.googlesource.com/627636Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Commit-Queue: Adam Klein <adamk@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47554}
      ac0a2df3
    • peterwmwong's avatar
      [builtins] Port String.prototype.includes to CSA · 415c72dd
      peterwmwong authored
      - Convert S.p.includes builtin from CPP to TFJ
        - Fast paths S.p.includes(str) and S.p.includes(str, smi)
      - Add Runtime kStringIncludes
      - Add StringIncludesIndexOfAssembler (Generate is based on
        StringPrototypeIndexOf builtin)
      - S.p.includes and S.p.indexOf both use StringIncludesIndexOfAssembler
      
      Quick measurements show 3x improvement for S.p.includes(str).
      More about the measurements: https://gist.github.com/peterwmwong/7a2a96f3171a52f16ca8125a089f38e7
      
      Bug: v8:6680
      Change-Id: I79cb8dbe2b79e6df15aa734e128eee25c7e6aaf5
      Reviewed-on: https://chromium-review.googlesource.com/620150Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47546}
      415c72dd
    • Jaroslav Sevcik's avatar
      [turbofan] Work around lowering uninhabited ReferenceEqual. · cf65162a
      Jaroslav Sevcik authored
      This change prevents constant folding of uninhabited RefenceEqual node
      because that could widen a type (from None type to the type of the
      boolean constant).
      
      Hopefully, this is a temporary workaround that will be replaced
      by a better dead code elimination.
      
      Bug: v8:6631
      Change-Id: Ie25e7d710aaf1d37c9adba60f92438570843dd5d
      Reviewed-on: https://chromium-review.googlesource.com/627916Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Commit-Queue: Jaroslav Sevcik <jarin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47545}
      cf65162a
    • jgruber's avatar
      [regexp] Send sticky @@splits to the slow path · 27fd52ab
      jgruber authored
      Due to shortcuts we take on the RegExp.p[@@split] fast path (we don't allocate
      a new instance), we need to send sticky regexps to the slow path.
      
      The problem is a slight impedance mismatch between the spec and our fast-path
      implementation.
      
      Spec: Creates a new regexp instance `splitter` that is guaranteed to be sticky,
      uses `splitter.lastIndex` to advance the search range, advances by itself using
      AdvanceStringIndex if `splitter` did not match at the current position.
      
      Our fast path: Uses the given regexp instance and does not modify stickyness,
      uses last_match_info to advance search range, returns (and assumes no more
      matches) once RegExpExecInternal fails to match.
      
      This is fine if the given regexp is non-sticky, since 1. the value of lastIndex
      is ignored, and 2. non-sticky regexps match if a match is found anywhere in the
      string, not just exactly at the current lastIndex.
      
      Sticky regexps though are a problem. If no match is found exactly at the current
      position, @@split assumes no more matches and exits.
      
      In a follow-up, we could explore other options, such as allocating a new
      instance or saving/restoring flags and lastIndex.
      
      Bug: v8:6706
      Change-Id: I6da2266df72b2f80f00c1ce3cd7c8655de91f680
      Reviewed-on: https://chromium-review.googlesource.com/626065Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47543}
      27fd52ab
    • Georg Neis's avatar
      [modules] Fix bug in module initialization. · 0cd2ea7c
      Georg Neis authored
      The initialization code of all modules must have been run
      before running any module's main code. This should have been
      fixed quite a while ago as part of another CL but somehow
      wasn't.
      
      In the process of fixing it now, I'm also moving the initialization
      phase out of Evaluate into Instantiatiate. This corresponds more
      closely to the specification and avoids confusion.
      
      Bug: v8:1569
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: I3ea5d6be0f5d371e6a4c641778c51762f1867dc8
      Reviewed-on: https://chromium-review.googlesource.com/620653Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
      Commit-Queue: Georg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47537}
      0cd2ea7c