1. 31 Aug, 2015 27 commits
  2. 28 Aug, 2015 13 commits
    • pcc's avatar
      Re-enable LLVM LTO for ARM. · fef4fab6
      pcc authored
      v8 is optimized for speed. Because GCC LTO merges flags at link time,
      we disable LTO to prevent any -O2 flags from taking precedence over v8's
      -Os flag. However, LLVM LTO does not work this way so we keep LTO enabled
      under LLVM.
      
      This fixes the ARM build in the cfi_vptr==1 configuration, which requires
      LLVM LTO.
      
      R=adamk@chromium.org
      BUG=chromium:469376
      LOG=N
      
      Review URL: https://codereview.chromium.org/1295673002
      
      Cr-Commit-Position: refs/heads/master@{#30455}
      fef4fab6
    • littledan's avatar
      Propagate switch statement value for 'eval' · 6773e296
      littledan authored
      This patch changes the switch scope desugaring to create blocks which
      propagate their 'return value' for eval.
      
      BUG=v8:4399
      R=adamk
      LOG=Y
      
      Review URL: https://codereview.chromium.org/1309303006
      
      Cr-Commit-Position: refs/heads/master@{#30454}
      6773e296
    • littledan's avatar
      Ensure hole checks take place in switch statement scopes · d6fb6de7
      littledan authored
      Switch statements introduce their own scope for cases, but this scope
      is not necessarily executed in order, as the following function shows:
      
        switch (x) {
          case 1:
            let y = 1;
          case 2:
            y = 2;
          case 3:
            print(y);
        }
      
      If x = 2 or x = 3, the code should throw a ReferenceError. However,
      FullCodeGen's hole check elimination used the simple algorithm of
      assuming that if the initializer was in the same scope, then it was
      reached before the use, and therefore the hole check could be
      eliminated.
      
      This patch adds an extra bit to scopes, to track if they may
      nonlinearly. The parser marks the scope that switch introduces as
      nonlinear. FullCodeGen does not eliminate the hole check from
      a scope which is nonlinear. This patch refactors FullCodeGen to
      put the hole check elimination in one place, rather than in each
      backend.
      
      BUG=v8:3926
      LOG=Y
      R=adamk
      
      Review URL: https://codereview.chromium.org/1312613003
      
      Cr-Commit-Position: refs/heads/master@{#30453}
      d6fb6de7
    • gdeepti's avatar
      [simd.js] Disable SIMD polyfill. · 749ba3a1
      gdeepti authored
      Disable the polyfill in simd.js tests as the functions for Phase 1 have been implemented.
      
      BUG=v8:4124
      LOG=N
      
      R=bbudge@chromium.org, bmeurer@chromium.org, littledan@chromium.org
      
      Review URL: https://codereview.chromium.org/1305923005
      
      Cr-Commit-Position: refs/heads/master@{#30452}
      749ba3a1
    • littledan's avatar
      Sloppy-mode let parsing · decc7b09
      littledan authored
      This patch makes 'let' a contextual keyword in both strict and sloppy mode.
      It behaves as a keyword when used at the beginning of a StatementListItem
      or lexical declaration at the beginning of a for statement, if it is followed
      by an identifier, [ or {. Implementing this change requires an extra token
      look-ahead by the parser which is only invoked in certain cases (so as to
      avoid parsing RegExps as ECMAScript tokens). This might result in a slowdown
      of the scanner, but performance testing of this patch hasn't yet found much
      of a regression.
      
      BUG=v8:3305
      LOG=Y
      R=adamk,vogelheim
      
      Review URL: https://codereview.chromium.org/1315673009
      
      Cr-Commit-Position: refs/heads/master@{#30451}
      decc7b09
    • rmcilroy's avatar
      [Interpreter] Add support for loading literals from the constant pool. · b4164754
      rmcilroy authored
      Adds support to the interpreter for loading literals from the constant pool.
      Adds the LoadConstant bytecode and makes use of it for loading large Smis and
      HeapObject literals.
      
      Also removes unused HandleVector from utils.h.
      
      BUG=v8:4280
      LOG=N
      
      Review URL: https://codereview.chromium.org/1321663003
      
      Cr-Commit-Position: refs/heads/master@{#30450}
      b4164754
    • mbrandy's avatar
      PPC: [runtime] Add %ToString and %_ToString and remove the TO_STRING builtin. · 50916155
      mbrandy authored
      Port 09de997b
      
      Original commit message:
          This adds a new ToString runtime function and a fast-path ToStringStub
          (which is just a simple dispatcher for existing functionality), and also
          implements %_ToName using the ToStringStub.
      
      R=bmeurer@chromium.org, jyan@ca.ibm.com, dstence@us.ibm.com, joransiu@ca.ibm.com
      BUG=v8:4307
      LOG=n
      
      Review URL: https://codereview.chromium.org/1310493004
      
      Cr-Commit-Position: refs/heads/master@{#30449}
      50916155
    • titzer's avatar
      Add test-run-native-calls tests for mixed parameters. · 43389ce7
      titzer authored
      R=mstarzinger@chromium.org
      BUG=
      
      Review URL: https://codereview.chromium.org/1314973004
      
      Cr-Commit-Position: refs/heads/master@{#30448}
      43389ce7
    • mtrofin's avatar
      [turbofan] Splintering: special case deoptimizing blocks. · bed054c4
      mtrofin authored
      This avoids a whole range traversal each time we encounter a deferred
      block (or a succession of them). The traversal (in the removed
      IsIntervalAlreadyExcluded) is unnecessary - an interval with a hole
      where deferred blocks are shouldn't be listed in the in/out sets of
      those blocks in the first place.
      
      It turns out the root cause (that appeared like we had to special
      case ranges with holes, as the comment described) was deferred
      blocks with a deoptimization call. That would place the live range
      in the in_set of the block, but then splitting would fail because the start
      and split position would be the same - this is because everywhere else,
      the deferred block would have at least a second instruction, other
      than the use - like a jump - ahead of which we'd perform the lower
      part of the splintering. In the usual case, this choice of a position
      avoids moves on the hot path (because any moves will be before the
      jump, but still in the deferred block).
      
      With deoptimization calls, that's not the case, there is just one
      instruction, the deoptimization call. So we perform the second cut of
      the splintering right after the block. Since there is no control flow from
      the deoptimization block to any functional block - the control flow
      goes to the exit block - the range connector won't insert moves on the
      hot path - although we may want to see what happens for the exit
      block, and maybe teach the range connector to ignore control flow
      appearing to come from blocks with deoptimization calls.
      
      Review URL: https://codereview.chromium.org/1323473003
      
      Cr-Commit-Position: refs/heads/master@{#30447}
      bed054c4
    • yangguo's avatar
      Native context: install array methods via runtime import. · 08ee2132
      yangguo authored
      R=cbruni@chromium.org
      
      Review URL: https://codereview.chromium.org/1324483002
      
      Cr-Commit-Position: refs/heads/master@{#30446}
      08ee2132
    • titzer's avatar
      [turbofan] Use the SharedInfo only if we have it in the code generator. · d80e062c
      titzer authored
      R=bmeurer@chromium.org
      BUG=
      
      Review URL: https://codereview.chromium.org/1303953007
      
      Cr-Commit-Position: refs/heads/master@{#30445}
      d80e062c
    • mvstanton's avatar
      Reorder KeyedStoreIC MISS code to avoid unnecessary compilation. · dd0cde0e
      mvstanton authored
      We can set the property in the MISS handler before organizing our handlers
      for element-based keyed stores. Since the property set may fail with an
      exception, this saves work.
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1308073010
      
      Cr-Commit-Position: refs/heads/master@{#30444}
      dd0cde0e
    • mstarzinger's avatar
      [heap] Move IdentityMap data structure out of heap. · 3d7a34b5
      mstarzinger authored
      This data structure uses the public heap API only and is not specific
      to any heap internals. It should be usable throughout V8 and inclusion
      of the header file should not be restricted.
      
      R=titzer@chromium.org
      
      Review URL: https://codereview.chromium.org/1320503004
      
      Cr-Commit-Position: refs/heads/master@{#30443}
      3d7a34b5