1. 07 Mar, 2016 1 commit
  2. 03 Mar, 2016 1 commit
    • bmeurer's avatar
      [compiler] Initial TurboFan code stubs for abstract relational comparison. · 62bc168d
      bmeurer authored
      This adds new code stubs for abstract relational comparison,
      namely LessThanStub, LessThanOrEqualStub, GreaterThanStub and
      GreaterThanOrEqualStub, and hooks them up for Ignition and TurboFan.
      These stubs implement the full compare operation without any
      unpredictable bailouts. Currently they still go to C++ for string
      comparisons, and also use the %ToPrimitive_Number runtime entry, as
      we still lack a stub for the ToPrimitive operation. These issues
      will be addressed separately in follow-up CLs.
      
      Drive-by-fix: Add support for deferred code in the RawMachineAssembler
      and CodeStubAssembler. A block can be marked as deferred by marking its
      Label as deferred, which will then make the register allocator penalize
      this block and prefer better register assignments for the other blocks.
      
      R=epertoso@chromium.org
      
      Review URL: https://codereview.chromium.org/1759133002
      
      Cr-Commit-Position: refs/heads/master@{#34463}
      62bc168d
  3. 02 Mar, 2016 4 commits
    • bmeurer's avatar
      [compiler] Introduce proper StrictNotEqualStub. · ca6d0b1e
      bmeurer authored
      Generalize the code that we have for StrictEqualStub to also general a
      StrictNotEqualStub and hook that up with TurboFan and Ignition. It's
      still falling back to the runtime for every String (in)equality check.
      
      R=yangguo@chromium.org
      
      Review URL: https://codereview.chromium.org/1756793002
      
      Cr-Commit-Position: refs/heads/master@{#34426}
      ca6d0b1e
    • bmeurer's avatar
      [compiler] Introduce initial StrictEqualStub. · 4acb492e
      bmeurer authored
      Initial version of a new StrictEqualStub written as TurboFan code stub,
      that implements the full strict equality comparison and is usable for
      both TurboFan and Ignition (and soon for the generic CompareIC case
      too). The stub is not fully optimized yet, i.e. we still go to the
      runtime for string comparisons, but that'll be addressed in a follow-up
      CL.
      
      R=yangguo@chromium.org
      
      Review URL: https://codereview.chromium.org/1753173003
      
      Cr-Commit-Position: refs/heads/master@{#34423}
      4acb492e
    • yangguo's avatar
      [debugger] Ensure at least one breakable position per function. · 44e9622a
      yangguo authored
      The function literal consists of a list of statements. Each statement
      is associated with a statement position including break location. The
      only exception to this rule is when the function immediately throws if
      scope resolution found an illegal redeclaration. Make sure that we add a
      break location for this case as well. The debugger relies on this.
      
      R=bmeurer@chromium.org, vogelheim@chromium.org
      BUG=v8:4690
      LOG=N
      
      Review URL: https://codereview.chromium.org/1759603002
      
      Cr-Commit-Position: refs/heads/master@{#34422}
      44e9622a
    • rmcilroy's avatar
      [Interpreter] Log source positions for bytecode arrays. · d5820158
      rmcilroy authored
      Add support to log source position offsets to the profiler. As part of
      this change PositionsRecorder is split into two, with the subset needed
      by log.cc moved into log.h and the remainder kept in assembler.h as
      AssemblerPositionsRecorder. The interpreter's source position table
      builder is updated to log positions when the profiler is active.
      
      BUG=v8:4766
      LOG=N
      
      Review URL: https://codereview.chromium.org/1737043002
      
      Cr-Commit-Position: refs/heads/master@{#34416}
      d5820158
  4. 01 Mar, 2016 5 commits
  5. 29 Feb, 2016 1 commit
    • bmeurer's avatar
      [stubs] Introduce a proper ToBooleanStub. · d1df58e8
      bmeurer authored
      Rename the existing (patching) ToBooleanStub to ToBooleanICStub to match
      our naming convention, and add a new TurboFan-powered ToBooleanStub,
      which just does the ToBoolean conversion without any runtime call or
      code patching, so we can use it for Ignition (and TurboFan).
      
      Drive-by-fix: Add an Oddball::to_boolean field similar to the ones we
      already have for to_string and to_number, so we don't need to actually
      dispatch on the concrete Oddball at all.
      
      R=epertoso@chromium.org, rmcilroy@chromium.org, yangguo@chromium.org
      
      Review URL: https://codereview.chromium.org/1744163002
      
      Cr-Commit-Position: refs/heads/master@{#34361}
      d1df58e8
  6. 26 Feb, 2016 3 commits
    • bmeurer's avatar
      [turbofan] Don't use the CompareIC in JSGenericLowering. · d00da47b
      bmeurer authored
      The CompareICStub produces an untagged raw word value, which has to be
      translated to true or false manually in the TurboFan code. But for lazy
      bailout after the CompareIC, we immediately go back to fullcodegen or
      Ignition with the raw value, to a location where both fullcodegen and
      Ignition expect a boolean value, which might crash or in the worst case
      (depending on the exact computation inside the CompareIC) could lead to
      arbitrary memory access.
      
      Short-term fix is to use the proper runtime functions (unified with the
      interpreter now) for comparisons. Next task is to provide optimized
      versions of these based on the CodeStubAssembler, which can then be used
      via code stubs in TurboFan or directly in handlers in the interpreter.
      
      R=mstarzinger@chromium.org
      BUG=v8:4788
      LOG=n
      
      Review URL: https://codereview.chromium.org/1738153002
      
      Cr-Commit-Position: refs/heads/master@{#34335}
      d00da47b
    • oth's avatar
      [interpreter] Preparation for 32-bit operands. · 1db484f7
      oth authored
      Extends the constant pool to deal with more slices.
      
      Adds ReadUnalignedUInt32().
      
      BUG=v8:4280,v8:4747
      LOG=N
      
      Review URL: https://codereview.chromium.org/1731893003
      
      Cr-Commit-Position: refs/heads/master@{#34319}
      1db484f7
    • bmeurer's avatar
      [interpreter] ToObject never yields null. · 06fe8afe
      bmeurer authored
      We don't need to compare the result of ToObject against null, since
      ToObject will always yield a proper receiver (or throw a TypeError).
      
      R=rmcilroy@chromium.org
      
      Review URL: https://codereview.chromium.org/1736233002
      
      Cr-Commit-Position: refs/heads/master@{#34318}
      06fe8afe
  7. 25 Feb, 2016 8 commits
  8. 24 Feb, 2016 5 commits
  9. 23 Feb, 2016 2 commits
  10. 22 Feb, 2016 1 commit
  11. 19 Feb, 2016 4 commits
    • rmcilroy's avatar
      [Interpreter] Enable runtime profiler support for Ignition. · b62bf1e6
      rmcilroy authored
      Adds a profiling counter to each BytecodeArray object, and adds
      code to Jump and Return bytecode handlers to update this
      counter by the size of the jump or the distance from the return
      to the start of the function. This is more accurate than fullcodegen's
      approach since it takes forward jumps into account as well as back-edges.
      
      Modifies RuntimeProfiler to track ticks for interpreted frames.
      Currently we use the SharedFunctionInfo::profiler_ticks() instead
      of adding another to tick field to avoid adding another field to
      BytecodeArray since SharedFunctionInfo::profiler_ticks() is only
      used by Crankshaft otherwise so we shouldn't need both for
      
      BUG=v8:4689
      LOG=N
      
      Review URL: https://codereview.chromium.org/1707693003
      
      Cr-Commit-Position: refs/heads/master@{#34166}
      b62bf1e6
    • nikolaos's avatar
      This patch implements an alternative approach to the rewriting · ed665880
      nikolaos authored
      of non-pattern expressions, according to the (internally circulated)
      design document.  Details to be provided here.
      
      1.  RewritableAssignmentExpression has been renamed to RewritableExpression.
          It is a wrapper for AST nodes that wait for some potential rewriting
          (that may or may not happen).  Also, Is... and As... macros now see
          through RewritableExpressions.
      
      2.  The function state keeps a list of rewritable expressions that must be
          rewritten only if they are used as non-pattern expressions.
      
      3.  Expression classifiers are now templates, parameterized by parser
          traits.  They keep some additional state: a pointer to the list of
          non-pattern rewritable expressions.  It is important that expression
          classifiers be used strictly in a stack fashion, from now on.
      
      4.  The RewriteNonPattern function has been simplified.
      
      BUG=chromium:579913
      LOG=N
      
      Committed: https://crrev.com/7f5c864a6faf2b957b7273891e143b9bde35487c
      Cr-Commit-Position: refs/heads/master@{#34154}
      
      Review URL: https://codereview.chromium.org/1702063002
      
      Cr-Commit-Position: refs/heads/master@{#34162}
      ed665880
    • machenbach's avatar
      Revert of Non-pattern rewriting revisited (patchset #3 id:40001 of... · 5bb6b47b
      machenbach authored
      Revert of Non-pattern rewriting revisited (patchset #3 id:40001 of https://codereview.chromium.org/1702063002/ )
      
      Reason for revert:
      [Sheriff] This makes jsfunfuzz unhappy:
      https://build.chromium.org/p/client.v8/builders/V8%20Fuzzer/builds/7681
      
      Original issue's description:
      > This patch implements an alternative approach to the rewriting
      > of non-pattern expressions, according to the (internally circulated)
      > design document.  Details to be provided here.
      >
      > 1.  RewritableAssignmentExpression has been renamed to RewritableExpression.
      >     It is a wrapper for AST nodes that wait for some potential rewriting
      >     (that may or may not happen).  Also, Is... and As... macros now see
      >     through RewritableExpressions.
      >
      > 2.  The function state keeps a list of rewritable expressions that must be
      >     rewritten only if they are used as non-pattern expressions.
      >
      > 3.  Expression classifiers are now templates, parameterized by parser
      >     traits.  They keep some additional state: a pointer to the list of
      >     non-pattern rewritable expressions.  It is important that expression
      >     classifiers be used strictly in a stack fashion, from now on.
      >
      > 4.  The RewriteNonPattern function has been simplified.
      >
      > BUG=chromium:579913
      > LOG=N
      >
      > Committed: https://crrev.com/7f5c864a6faf2b957b7273891e143b9bde35487c
      > Cr-Commit-Position: refs/heads/master@{#34154}
      
      TBR=rossberg@chromium.org,bmeurer@chromium.org,titzer@chromium.org,nikolaos@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=chromium:579913
      
      Review URL: https://codereview.chromium.org/1712203002
      
      Cr-Commit-Position: refs/heads/master@{#34158}
      5bb6b47b
    • nikolaos's avatar
      This patch implements an alternative approach to the rewriting · 7f5c864a
      nikolaos authored
      of non-pattern expressions, according to the (internally circulated)
      design document.  Details to be provided here.
      
      1.  RewritableAssignmentExpression has been renamed to RewritableExpression.
          It is a wrapper for AST nodes that wait for some potential rewriting
          (that may or may not happen).  Also, Is... and As... macros now see
          through RewritableExpressions.
      
      2.  The function state keeps a list of rewritable expressions that must be
          rewritten only if they are used as non-pattern expressions.
      
      3.  Expression classifiers are now templates, parameterized by parser
          traits.  They keep some additional state: a pointer to the list of
          non-pattern rewritable expressions.  It is important that expression
          classifiers be used strictly in a stack fashion, from now on.
      
      4.  The RewriteNonPattern function has been simplified.
      
      BUG=chromium:579913
      LOG=N
      
      Review URL: https://codereview.chromium.org/1702063002
      
      Cr-Commit-Position: refs/heads/master@{#34154}
      7f5c864a
  12. 17 Feb, 2016 2 commits
  13. 16 Feb, 2016 2 commits
  14. 15 Feb, 2016 1 commit