1. 24 Sep, 2015 7 commits
    • 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 10 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
    • mbrandy's avatar
      PPC: Fix "[turbofan] Add support for reinterpreting integers as floating point and vice versa." · 308ae269
      mbrandy authored
      R=titzer@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, dstence@us.ibm.com
      BUG=
      
      Review URL: https://codereview.chromium.org/1358193002
      
      Cr-Commit-Position: refs/heads/master@{#30870}
      308ae269
    • mbrandy's avatar
      PPC: [ic] Also collect known map for relational comparison. · 394f3cf3
      mbrandy authored
      Port e56f265f
      
      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.
      
      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/1358063005
      
      Cr-Commit-Position: refs/heads/master@{#30869}
      394f3cf3
    • adamk's avatar
      Don't crash when preparsing destructured arguments · 7485da7a
      adamk authored
      This adds the materialized literal count accumulated while parsing the
      parameters (in the parser proper) to that accumulated by the preparser.
      
      This should have been caught in cctest/test-parsing, but it's not covered
      because the parsing tests call directly into the preparser rather than
      using Parser::ParseFunctionLiteral (which fully-parses the parameters
      and then calls into the preparser to skip over the function body).
      
      Note that this further-inflates the materialized literal count for
      functions with destructured arguments, since some of the counted
      literals are actually binding patterns. But that's not specific to
      binding patterns in formal parameters: it happens in function bodies, too.
      
      BUG=v8:4400,v8:4407
      LOG=n
      
      Review URL: https://codereview.chromium.org/1350913005
      
      Cr-Commit-Position: refs/heads/master@{#30868}
      7485da7a
    • conradw's avatar
      [strong] Implement revised strong class semantics · 24ec2a0b
      conradw authored
      Weak classes can inherit from strong ones again, a strong base class makes
      instances strong.
      
      BUG=v8:3956
      LOG=N
      
      Review URL: https://codereview.chromium.org/1347243004
      
      Cr-Commit-Position: refs/heads/master@{#30867}
      24ec2a0b
    • neis's avatar
      Make prettyprinter useful in gdb. · 191a0cb6
      neis authored
      R=rossberg
      BUG=
      
      Review URL: https://codereview.chromium.org/1354433004
      
      Cr-Commit-Position: refs/heads/master@{#30866}
      191a0cb6
    • mlippautz's avatar
      [tools] Add script to analyze GC tracing output · 5e08d818
      mlippautz authored
      BUG=
      
      Review URL: https://codereview.chromium.org/1348763006
      
      Cr-Commit-Position: refs/heads/master@{#30865}
      5e08d818
    • hpayer's avatar
      [heap] Process live weak cells directly in the marking visitor. · 0bfb773d
      hpayer authored
      This reduces the pause time of weak cells processing during a full GC.
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1363553002
      
      Cr-Commit-Position: refs/heads/master@{#30864}
      0bfb773d
    • Michael Achenbach's avatar
      Whitespace change to test infra changes. · 0ee53fdd
      Michael Achenbach authored
      Cr-Commit-Position: refs/heads/master@{#30863}
      0ee53fdd