1. 24 Sep, 2015 15 commits
    • rmcilroy's avatar
      [Interpreter] Add support for loading globals in the interpreter. · 8087c49d
      rmcilroy authored
      Adds LdaGlobal bytecode and augments BytecodeGenerator to load globals for
      global variables and function calls.
      
      Modified TestBytecodeGenerator to add the ability to specify that a bytecode
      operand has an unknown value (used so we don't need to figure out the slot
      index of a global). Also added a helper which checks equality of BytecodeArray
      with the expected snipptets.
      
      Modified TestInterpreter to allow it to take snippets of JS and have the
      BytecodeGenerator generate the bytecode rather than having to build a
      BytecodeArray manually. This is used to enable the global tests.
      
      BUG=v8:4280
      LOG=N
      
      Review URL: https://codereview.chromium.org/1361113002
      
      Cr-Commit-Position: refs/heads/master@{#30910}
      8087c49d
    • martyn.capewell's avatar
      [turbofan] Elide fp32 convert for const compares · 809f6b15
      martyn.capewell authored
      Reduce operations of the form f64cmp(fp32to64(x), k) to f32cmp(x, k) when k
      can be encoded as a 32-bit float.
      
      Review URL: https://codereview.chromium.org/1365623002
      
      Cr-Commit-Position: refs/heads/master@{#30909}
      809f6b15
    • chunyang.dai's avatar
      X87: [es6] Introduce spec compliant IsConstructor. · 11fd60f5
      chunyang.dai authored
      port 8fe3ac07 (30902).
      
      original commit message:
      
          There was already a bit on the Map named "function with prototype",
          which basically meant that the Map was a map for a JSFunction that could
          be used as a constructor. Now this CL generalizes that bit to
          IsConstructor, which says that whatever (Heap)Object you are looking at
          can be used as a constructor (i.e. the bit is also set for bound
          functions that can be used as constructors and proxies that have a
          [[Construct]] internal method).
      
          This way we have a single chokepoint for IsConstructor checking, which
          allows us to get rid of the various ways in which we tried to guess
          whether something could be used as a constructor or not.
      
          Drive-by-fix: Renamed IsConstructor on FunctionKind to
          IsClassConstructor to resolve the weird name clash, and the
          IsClassConstructor name also matches the spec.
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1362313002
      
      Cr-Commit-Position: refs/heads/master@{#30908}
      11fd60f5
    • chunyang.dai's avatar
      X87: [runtime] Remove weird pushing of something on StackOverflow. · 46d61217
      chunyang.dai authored
      port 556b522a (r30883)
      
      original commit message:
      
          We somehow try to push some stuff on the stack when we detect a stack
          overflow, that we don't need. Even worse we might access outside the
          valid stack bounds. Since we don't need this, it's gone.
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1367943002
      
      Cr-Commit-Position: refs/heads/master@{#30907}
      46d61217
    • machenbach's avatar
      [test] Fetch mozilla test data from SVN. · 8c174202
      machenbach authored
      NOTRY=true
      
      Review URL: https://codereview.chromium.org/1367933002
      
      Cr-Commit-Position: refs/heads/master@{#30906}
      8c174202
    • pierre.langlois's avatar
      [arm64] Explicit commuted conditions in unittests · cf38725d
      pierre.langlois authored
      This patch explicitly names commuted conditions for floating point
      comparisons, instead of relying on CommuteFlagsCondition.  Otherwise, a
      bug in this function would not be caught.
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1364773002
      
      Cr-Commit-Position: refs/heads/master@{#30905}
      cf38725d
    • chunyang.dai's avatar
      X87: [builtin] Refactor Invoke to deal with any kind of callable. · 78be1562
      chunyang.dai authored
      port 634d1d86 (r30874).
      
      original commit message:
      
          Now both Execution::Call and Execution::New can deal with any
          kind of target and will raise a proper exception if the target is not
          callable (which is not yet spec compliant for New, as we would
          have to check IsConstructor instead, which we don't have yet).
      
          Now we no longer need to do any of these weird call/construct
          delegate gymnastics in C++, and we finally have a single true
          bottleneck for Call/Construct abstract operations in the code
          base, with only a few special handlings left in the compilers to
          optimize the JSFunction case.
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1362293002
      
      Cr-Commit-Position: refs/heads/master@{#30904}
      78be1562
    • chunyang.dai's avatar
      X87: [ic] Introduce BOOLEAN state for CompareIC. · 28de5bf8
      chunyang.dai authored
      port 10c5f2e8
      
      original commit message:
      
          Slow path for relational comparison of boolean primitive values
          now goes through the runtime, which made the slow path even
          slower than it already was. So in order to repair the regression,
          we just track boolean feedback for comparisons and use that
          to generate decent code in Crankshaft (not the best possible
          code, but good enough for Crankshaft; TurboFan will be able
          to do better on that).
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1367523005
      
      Cr-Commit-Position: refs/heads/master@{#30903}
      28de5bf8
    • bmeurer's avatar
      [es6] Introduce spec compliant IsConstructor. · 8fe3ac07
      bmeurer authored
      There was already a bit on the Map named "function with prototype",
      which basically meant that the Map was a map for a JSFunction that could
      be used as a constructor. Now this CL generalizes that bit to
      IsConstructor, which says that whatever (Heap)Object you are looking at
      can be used as a constructor (i.e. the bit is also set for bound
      functions that can be used as constructors and proxies that have a
      [[Construct]] internal method).
      
      This way we have a single chokepoint for IsConstructor checking, which
      allows us to get rid of the various ways in which we tried to guess
      whether something could be used as a constructor or not.
      
      Drive-by-fix: Renamed IsConstructor on FunctionKind to
      IsClassConstructor to resolve the weird name clash, and the
      IsClassConstructor name also matches the spec.
      
      CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_layout_dbg,v8_linux_nosnap_dbg
      R=jarin@chromium.org, rossberg@chromium.org
      BUG=v8:4413, v8:4430
      LOG=n
      
      Committed: https://crrev.com/8de4d9351df4cf66c8a128d561a6e331d196be54
      Cr-Commit-Position: refs/heads/master@{#30900}
      
      Review URL: https://codereview.chromium.org/1358423002
      
      Cr-Commit-Position: refs/heads/master@{#30902}
      8fe3ac07
    • bmeurer's avatar
      Revert of [es6] Introduce spec compliant IsConstructor. (patchset #2 id:20001... · 656ebdce
      bmeurer authored
      Revert of [es6] Introduce spec compliant IsConstructor. (patchset #2 id:20001 of https://codereview.chromium.org/1358423002/ )
      
      Reason for revert:
      Failed on Fuzzer and MIPS bot.
      
      Original issue's description:
      > [es6] Introduce spec compliant IsConstructor.
      >
      > There was already a bit on the Map named "function with prototype",
      > which basically meant that the Map was a map for a JSFunction that could
      > be used as a constructor. Now this CL generalizes that bit to
      > IsConstructor, which says that whatever (Heap)Object you are looking at
      > can be used as a constructor (i.e. the bit is also set for bound
      > functions that can be used as constructors and proxies that have a
      > [[Construct]] internal method).
      >
      > This way we have a single chokepoint for IsConstructor checking, which
      > allows us to get rid of the various ways in which we tried to guess
      > whether something could be used as a constructor or not.
      >
      > Drive-by-fix: Renamed IsConstructor on FunctionKind to
      > IsClassConstructor to resolve the weird name clash, and the
      > IsClassConstructor name also matches the spec.
      >
      > R=jarin@chromium.org, rossberg@chromium.org
      > BUG=v8:4430
      > LOG=n
      >
      > Committed: https://crrev.com/8de4d9351df4cf66c8a128d561a6e331d196be54
      > Cr-Commit-Position: refs/heads/master@{#30900}
      
      TBR=jarin@chromium.org,rossberg@chromium.org
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=v8:4430
      
      Review URL: https://codereview.chromium.org/1360403002
      
      Cr-Commit-Position: refs/heads/master@{#30901}
      656ebdce
    • bmeurer's avatar
      [es6] Introduce spec compliant IsConstructor. · 8de4d935
      bmeurer authored
      There was already a bit on the Map named "function with prototype",
      which basically meant that the Map was a map for a JSFunction that could
      be used as a constructor. Now this CL generalizes that bit to
      IsConstructor, which says that whatever (Heap)Object you are looking at
      can be used as a constructor (i.e. the bit is also set for bound
      functions that can be used as constructors and proxies that have a
      [[Construct]] internal method).
      
      This way we have a single chokepoint for IsConstructor checking, which
      allows us to get rid of the various ways in which we tried to guess
      whether something could be used as a constructor or not.
      
      Drive-by-fix: Renamed IsConstructor on FunctionKind to
      IsClassConstructor to resolve the weird name clash, and the
      IsClassConstructor name also matches the spec.
      
      R=jarin@chromium.org, rossberg@chromium.org
      BUG=v8:4430
      LOG=n
      
      Review URL: https://codereview.chromium.org/1358423002
      
      Cr-Commit-Position: refs/heads/master@{#30900}
      8de4d935
    • chunyang.dai's avatar
      X87: [builtins] Add support for NewTarget to Execution::New. · 5ced12c1
      chunyang.dai authored
      port 1dfac69f (r30857).
      
      original commit message:
      
          Introduce new builtins Construct and ConstructFunction (in line
          with the Call and CallFunction builtins that we already have) as
          proper bottleneck for Construct and [[Construct]] on JSFunctions.
          Use these builtins to support passing NewTarget from C++ to
          JavaScript land.
      
          Long-term we want the CallConstructStub to be used for
          gathering feedback on entry to construction chain (i.e. the
          initial new Foo), and use the Construct builtins to do the
          actual work inside the construction chain (i.e. calling into
          super and stuff).
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1362573002
      
      Cr-Commit-Position: refs/heads/master@{#30899}
      5ced12c1
    • chunyang.dai's avatar
      X87: [turbofan] Add support for reinterpreting integers as floating point and vice versa. · b785daa7
      chunyang.dai authored
      port c610a222 (r30849).
      
      original commit message:
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1362783003
      
      Cr-Commit-Position: refs/heads/master@{#30898}
      b785daa7
    • chunyang.dai's avatar
      X87: [ic] Also collect known map for relational comparison. · 687ef62e
      chunyang.dai authored
      port e56f265f (r30852).
      
      original commit message:
      
          Previously we only collected the known map for equality comparisons. But
          if we also collect it for relational comparisons, we can inline a fast
          path of ToPrimitive on the objects, which is especially interesting
          since both sides have the same map.
      
          For now we only inline a very limited subset of ToPrimitive in
          Crankshaft, which is when the receiver map (and its prototype chain)
          doesn't have @@toPrimitive, and both valueOf and toString are the
          default versions on the %ObjectPrototype%. In this case the relational
          comparison would reduce to a string comparison of "[object CLASS]" with
          itself and so we can reduce that to a boolean constant plus map checks
          on both left and right hand side, plus code dependencies on the
          prototype chain. This repairs the regression on box2d.
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1342243005
      
      Cr-Commit-Position: refs/heads/master@{#30897}
      687ef62e
    • v8-autoroll's avatar
      Update V8 DEPS. · 5e6f7a6c
      v8-autoroll authored
      Rolling v8/tools/clang to 1cde9025c16dfc3e23be2db010b24f657c255b4c
      
      TBR=machenbach@chromium.org,vogelheim@chromium.org,hablich@chromium.org
      
      Review URL: https://codereview.chromium.org/1359983006
      
      Cr-Commit-Position: refs/heads/master@{#30896}
      5e6f7a6c
  2. 23 Sep, 2015 23 commits
  3. 22 Sep, 2015 2 commits
    • mbrandy's avatar
      PPC: [builtins] Add support for NewTarget to Execution::New. · 0ad9b9e5
      mbrandy authored
      Port 1dfac69f
      
      Original commit message:
          Introduce new builtins Construct and ConstructFunction (in line
          with the Call and CallFunction builtins that we already have) as
          proper bottleneck for Construct and [[Construct]] on JSFunctions.
          Use these builtins to support passing NewTarget from C++ to
          JavaScript land.
      
          Long-term we want the CallConstructStub to be used for
          gathering feedback on entry to construction chain (i.e. the
          initial new Foo), and use the Construct builtins to do the
          actual work inside the construction chain (i.e. calling into
          super and stuff).
      
      R=bmeurer@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, dstence@us.ibm.com
      BUG=v8:4430
      LOG=n
      
      Review URL: https://codereview.chromium.org/1358203002
      
      Cr-Commit-Position: refs/heads/master@{#30872}
      0ad9b9e5
    • mbrandy's avatar
      PPC: [ic] Introduce BOOLEAN state for CompareIC. · 30285344
      mbrandy authored
      Port 10c5f2e8
      
      Original commit message:
          Slow path for relational comparison of boolean primitive values
          now goes through the runtime, which made the slow path even
          slower than it already was. So in order to repair the regression,
          we just track boolean feedback for comparisons and use that
          to generate decent code in Crankshaft (not the best possible
          code, but good enough for Crankshaft; TurboFan will be able
          to do better on that).
      
      R=bmeurer@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, dstence@us.ibm.com
      BUG=chromium:534200
      LOG=n
      
      Review URL: https://codereview.chromium.org/1362683002
      
      Cr-Commit-Position: refs/heads/master@{#30871}
      30285344