1. 24 Feb, 2016 2 commits
    • zhengxing.li's avatar
      X87: [fullcodegen] Implement operand stack depth tracking. · 9458a6e4
      zhengxing.li authored
        port 38915ed7 (r34211)
      
        original commit message:
        This implements a mechanism to track the exact depth of the operand
        stack in full-codegen for every sub-expression visitation. So far we
        only tracked the depth at statement level, but not at expression level.
        With the introduction of do-expressions it will be possible to construct
        local control flow (i.e. break, continue and friends) that target labels
        at an arbitrary operand stack depth, making this tracking a prerequisite
        for full do-expression support.
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1728953003
      
      Cr-Commit-Position: refs/heads/master@{#34231}
      9458a6e4
    • littledan's avatar
      Intl: Use private symbols to memoize bound functions · a59f62fc
      littledan authored
      The Intl object used to keep around functions which are bound to the
      receiver and memoized in the object (as required by the ECMA-402 spec)
      in ordinary properties with names like __boundformat__. This patch
      instead stores those methods in private symbol properties, so they are
      not exposed to users. A search in GitHub didn't find any uses of
      __boundformat__ (whereas the same search found plenty of usages of
      other V8 Intl features), so I think this should be fine in terms of
      web compatibility.
      
      BUG=v8:3785
      R=adamk
      LOG=Y
      
      Review URL: https://codereview.chromium.org/1728823002
      
      Cr-Commit-Position: refs/heads/master@{#34230}
      a59f62fc
  2. 23 Feb, 2016 29 commits
  3. 22 Feb, 2016 9 commits
    • littledan's avatar
      Remove the Proxy enumerate trap · 579c0107
      littledan authored
      In ES2016, the Proxy enumerate trap is removed. This patch changes
      for-in iteration on Proxies to use the ownKeys trap. Due to the clean
      organization of that code, the patch basically consists of deletions.
      
      R=adamk
      LOG=Y
      BUG=v8:4768
      
      Review URL: https://codereview.chromium.org/1717893002
      
      Cr-Commit-Position: refs/heads/master@{#34200}
      579c0107
    • littledan's avatar
      Optimize @@species based on a global 'protector' cell · 7033ae51
      littledan authored
      This patch makes ArraySpeciesCreate fast in V8 by avoiding two property reads
      when the following conditions are met:
      - No Array instance has had its __proto__ reset
      - No Array instance has had a constructor property defined
      - Array.prototype has not had its constructor changed
      - Array[Symbol.species] has not been reset
      
      For subclasses of Array, or for conditions where one of these assumptions is
      violated, the full lookup of species is done according to the ArraySpeciesCreate
      algorithm. Although this is a "performance cliff", it does not come up in the
      expected typical use case of @@species (Array subclassing), so it is hoped that
      this can form a good start. Array subclasses will incur the slowness of looking
      up @@species, but their use won't slow down invocations of, for example,
      Array.prototype.slice on Array base class instances.
      
      Possible future optimizations:
      - For the fallback case where the assumptions don't hold, optimize the two
        property lookups.
      - For Array.prototype.slice and Array.prototype.splice, even if the full lookup
        of @@species needs to take place, we still could take the rest of the C++
        fastpath. However, to do this correctly requires changing the calling convention
        from C++ to JS to pass the @@species out, so it is not attempted in this patch.
      
      With this patch, microbenchmarks of Array.prototype.slice do not suffer a
      noticeable performance regression, unlike their previous 2.5x penalty.
      
      TBR=hpayer@chromium.org
      
      Review URL: https://codereview.chromium.org/1689733002
      
      Cr-Commit-Position: refs/heads/master@{#34199}
      7033ae51
    • mbrandy's avatar
      PPC: [interpreter, debugger] support debug breaks via bytecode array copy · d15d2cf2
      mbrandy authored
      Port e032a98d
      
      R=yangguo@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
      BUG=v8:4690
      LOG=N
      
      Review URL: https://codereview.chromium.org/1721673003
      
      Cr-Commit-Position: refs/heads/master@{#34198}
      d15d2cf2
    • mbrandy's avatar
      PPC: Cleanup CRegister definition. · aadd792d
      mbrandy authored
      R=joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
      BUG=
      
      Review URL: https://codereview.chromium.org/1716293002
      
      Cr-Commit-Position: refs/heads/master@{#34197}
      aadd792d
    • littledan's avatar
      Remove Reflect.enumerate · 0b53b7d3
      littledan authored
      The Proxy enumerate trap and Reflect.enumerate are removed from the
      ES2016 draft specification. This patch removes the Reflect.enumerate
      function, and a follow-on patch will be responsible for the Proxy
      trap changes.
      
      R=adamk
      LOG=Y
      BUG=v8:4768
      
      Review URL: https://codereview.chromium.org/1721453002
      
      Cr-Commit-Position: refs/heads/master@{#34196}
      0b53b7d3
    • littledan's avatar
      Remove code optimizing for TypedArrays being @@isConcatSpreadable · a686f4f9
      littledan authored
      In theory, a user could define the Symbol.isConcatSpreadable property
      somewhere in the TypedArray class hierarchy. Array.prototype.concat
      optimizes for this case and has templated code for fast concat over
      TypedArrays. However, the default environment doesn't have this
      property set (it would probably not be web-compatible) and there isn't
      clear demand for this optimization. This patch removes that
      special-case code.
      
      R=adamk
      
      Review URL: https://codereview.chromium.org/1720533003
      
      Cr-Commit-Position: refs/heads/master@{#34195}
      a686f4f9
    • mbrandy's avatar
      [wasm] Fix linkage for PPC. · edff6e91
      mbrandy authored
      Floating point param and return registers should be within the
      compiler's allocatable set.
      
      TEST=cctest/test-run-wasm-js/Run_Float64Add_jswrapped
      R=titzer@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
      BUG=
      
      Review URL: https://codereview.chromium.org/1714223002
      
      Cr-Commit-Position: refs/heads/master@{#34194}
      edff6e91
    • machenbach's avatar
      [coverage] Use optimized builds for coverage data. · ea0530af
      machenbach authored
      Local testing suggests that optimized builds add more speed
      without trading off tool usability. We get the following
      differences (A: non-optimized build, B: optimized):
      
      Sometimes: Lines instrumented in A (covered and uncovered) are not instrumented in B.
      Rarely: Lines instrumented and covered in A are instrumented, but not covered in B.
      
      The latter might simply be caused by timing differences in
      the two builds.
      
      BUG=chromium:568949
      LOG=n
      NOTRY=true
      
      Review URL: https://codereview.chromium.org/1719923002
      
      Cr-Commit-Position: refs/heads/master@{#34193}
      ea0530af
    • ulan's avatar
      Fix AllocationSite body descriptor to include all pointer slots. · 72f884a1
      ulan authored
      Currently AllocationSite skips the weak_next pointer in IterateBody and IsValidSlot.
      
      This is not correct because the weak_next is a valid slot in AllocationSite.
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1719903002
      
      Cr-Commit-Position: refs/heads/master@{#34192}
      72f884a1