1. 20 Aug, 2019 3 commits
  2. 19 Aug, 2019 27 commits
  3. 18 Aug, 2019 1 commit
  4. 17 Aug, 2019 1 commit
  5. 16 Aug, 2019 8 commits
    • Ng Zhi An's avatar
      Add SSE4_2 to list of CpuFeatures printed · 9b05b7a8
      Ng Zhi An authored
      Change-Id: Icc9a88012cd785a7676259e15da2a1bc6a6e26ba
      Bug: v8:9510
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1756854Reviewed-by: 's avatarBill Budge <bbudge@chromium.org>
      Commit-Queue: Zhi An Ng <zhin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#63228}
      9b05b7a8
    • Ng Zhi An's avatar
      Formatting fixes for test file · a539478a
      Ng Zhi An authored
      - Move undef closer to end of usage
      - Move I64x2ExtractWithF64x2 closer to Extract tests, and into ifdef
      scope so it runs on arm64 builds
      
      Change-Id: I7138c44097975d02e97f4b2b9bfcddd8eb9735c8
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1754544Reviewed-by: 's avatarDeepti Gandluri <gdeepti@chromium.org>
      Commit-Queue: Zhi An Ng <zhin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#63227}
      a539478a
    • Georg Schmid's avatar
      [turbofan] Track field owner maps during load elimination · f85826ea
      Georg Schmid authored
      This CL adds additional information in PropertyAccessInfos and FieldAccesses about the map that introduced the accessed field. We use this information to prevent load elimination from incorrectly optimizing certain accesses marked const.
      
      Prior to this CL, load elimination simply stored information about eliminatable field accesses based on objects (identified by nodes in the graph) and offsets (i.e., statically known ones). In the presence of const stores and loads this is insufficient, since a single object (in the above sense) may contain distinct *const* properties at the same offset throughout its lifetime. As an example, consider the following piece of code:
      
          let obj = {};
          obj.a = 0;
          obj[1024] = 1;  // An offset of >=1024 forces an elements-kind transition
          delete obj.a;
          obj.b = 2;
          assertEquals(obj.b, 2);
      
      In this scenario, *both* the first ('obj.a = 0') and the second ('obj.b = 2') store to a field will be marked const by the runtime. The reason that storing to 'a' above ends up being marked const, is that 'a' before and after the elements-kind transition is encoded in separate transition trees. Removing 'a' ('delete obj.a') only invalidates const-ness in the dictionary-elements transition tree; not the holey-elements one used at the time of 'obj.a = 0'.
      
      The above situation on its own violates an invariant in load elimination. Namely, we assume that for the same object and offset, we will never encounter two const stores. One can extend the above snippet to coax load-elimination into producing incorrect results. For instance, by "hiding" 'obj.b = 2' in an unoptimized function call, the consecutive load from 'b' will incorrectly produce 0, violating the assert.
      
      R=neis@chromium.org, tebbi@chromium.org
      
      Bug: chromium:980183, chromium:983764
      Change-Id: I576a9c7efd416fa9db6daff1f42d483e4bd369b4
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1751346
      Commit-Queue: Georg Schmid <gsps@google.com>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#63226}
      f85826ea
    • Daryl Haresign's avatar
      [api] TracedGlobal not V8_EXPORT · 35558d38
      Daryl Haresign authored
      V8_EXPORT is not required for public class templates, and using it may
      lead to linker errors when users attempt to dllimport V8.
      
      Change-Id: I0b2db2371d0fcbf50af94ba629670486b8f2bc00
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1757284Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Commit-Queue: Yang Guo <yangguo@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#63225}
      35558d38
    • Mike Stanton's avatar
      [TurboFan] Apply early lowering logic to the GetIterator bytecode · 3815fc19
      Mike Stanton authored
      GetIterator currently acts as a property load of the iterator symbol
      (soon it will also call it). It makes sense to apply the same early
      lowering logic as we do for property loads in the bytecode graph
      builder. This also brings our treatment of the bytecode in-line with
      the way it's treated in the serializer, which already respects the
      early-lowering semantics.
      
      Bug: v8:7790
      Change-Id: Ieadc4b307b9f6d9a5aa77ca10c7c818026776f33
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1758304
      Commit-Queue: Michael Stanton <mvstanton@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#63224}
      3815fc19
    • Santiago Aboy Solanes's avatar
      [ptr-compr][turbofan] Specialize accesses known to be pointers. · 1b7f99a0
      Santiago Aboy Solanes authored
      There are some accesses that we know that are pointers, and we can
      specialize them to have Pointer as their Machine Type and Write Barrier.
      
      Drive-by fix: ForJSGeneratorObjectParametersAndRegisters can be changed
      to use Pointer.
      
      Bug: v8:7703
      Change-Id: I88e371746fc5f08c84795c95b1885264ef6c067c
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1741658
      Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#63223}
      1b7f99a0
    • Tobias Tebbi's avatar
      [compiler] support bigger representations in load elimination · 1ec03946
      Tobias Tebbi authored
      This removes the restriction on load elimination to only track fields
      of representations with kTaggedSize, and instead also allows fields with
      representations using multiples of kTaggedSize (that is, Float64 and Word64
      on pointer-compressed or 32-bit platforms).
      
      In order not to regress JIT-compile time for the common case of
      kTaggedSize-sized fields, we maintain information for bigger fields multiple
      times, once for each kTaggedSize-multiple offset that covers it. By checking
      that all copies of this information are still there when reading from the
      load elimination state, updates to the load elimination state don't need to
      take special care of bigger fields.
      
      Change-Id: I9b5f3d2d6e3b4f145c20d33fbc764869bf50a365
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1752843
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#63222}
      1ec03946
    • Sathya Gunasekaran's avatar
      [jsperf] Add benchmark for LoadConstantFromPrototype · b464b62f
      Sathya Gunasekaran authored
      Bug: v8:9616
      Change-Id: Ieca74f8df90b342672c8904beef2c2298f0ba597
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1755991Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Commit-Queue: Sathya Gunasekaran  <gsathya@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#63221}
      b464b62f