1. 05 May, 2016 1 commit
    • bjaideep's avatar
      PPC: Add new relocation type WASM_MEMORY_SIZE_REFERENCE, use relocatable... · a870cf3a
      bjaideep authored
      PPC: Add new relocation type WASM_MEMORY_SIZE_REFERENCE, use relocatable pointers to update wasm memory size references in generated code.
      
      Port 117a56b7
      
      Original commit message:
      
           - Add new RelocInfo mode WASM_MEMORY_SIZE_REFERENCE in the assembler and add relocation information to immediates in compare instructions.
           - Use relocatable constants for MemSize/BoundsCheck in the wasm compiler
      
      R=gdeepti@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com
      
      BUG=
      LOG=N
      
      Review-Url: https://codereview.chromium.org/1948263003
      Cr-Commit-Position: refs/heads/master@{#36054}
      a870cf3a
  2. 16 Mar, 2016 3 commits
    • mbrandy's avatar
      Reland PPC portion of "Detect cache line size on Linux for PPC hosts." · 042f09a9
      mbrandy authored
      This version does not modify arm64.
      
      R=jkummerow@chromium.org, michael_dawson@ca.ibm.com
      BUG=
      
      Review URL: https://codereview.chromium.org/1806893002
      
      Cr-Commit-Position: refs/heads/master@{#34827}
      042f09a9
    • mbrandy's avatar
      PPC: [wasm] Int64Lowering of Int64Sub. · eb0a2324
      mbrandy authored
      Port 33c08596
      
      Original commit message:
          Int64Sub is lowered to a new turbofan operator, Int32SubPair. The new
          operator takes 4 inputs an generates 2 outputs. The inputs are the low
          word of the left input, high word of the left input, the low word of the
          right input, and high word of the right input. The ouputs are the low
          and high word of the result of the subtraction.
      
          The implementation is very similar to the implementation of Int64Add.
      
      R=ahaas@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
      BUG=
      
      Review URL: https://codereview.chromium.org/1812473002
      
      Cr-Commit-Position: refs/heads/master@{#34821}
      eb0a2324
    • jkummerow's avatar
      Revert "Detect cache line size on Linux for PPC hosts." · 5d62db74
      jkummerow authored
      along with "[arm64] Fix i/d cache line size confusion typo"
      and "Fix a warning about inline asm source/destination mismatches..."
      which were building on it.
      
      This reverts the following commits:
      8d7399f9
      474e6a3d
      c3ff68b6
      
      Reason for revert: We're getting a large number of crash reports from
      arm64 devices that are obviously related to cache flushing after code
      patching. Bisection results say that the problems started at revision
      c3ff68b6. Since I can't find a bug in that CL except for the typo that
      I've fixed in 474e6a3d (which made some of the crashes go away but not
      all of them), we have no choice but to revert the changes in order to
      get stability under control while we investigate.
      
      BUG=chromium:594646
      LOG=n
      
      Review URL: https://codereview.chromium.org/1806853002
      
      Cr-Commit-Position: refs/heads/master@{#34816}
      5d62db74
  3. 15 Mar, 2016 1 commit
    • mbrandy's avatar
      PPC: [wasm] Int64Lowering of Int64Add. · 0548cf49
      mbrandy authored
      Port 1b230799
      
      Original commit message:
          Int64Add is lowered to a new turbofan operator, Int32AddPair. The new
          operator takes 4 inputs an generates 2 outputs. The inputs are the low
          word of the left input, high word of the left input, the low word of the
          right input, and high word of the right input. The ouputs are the low
          and high word of the result of the addition.
      
      R=ahaas@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
      BUG=
      
      Review URL: https://codereview.chromium.org/1803113002
      
      Cr-Commit-Position: refs/heads/master@{#34797}
      0548cf49
  4. 01 Feb, 2016 1 commit
    • mbrandy's avatar
      Detect cache line size on Linux for PPC hosts. · c3ff68b6
      mbrandy authored
      In the interest of generalization, this change:
      - Consolidates cache line size detection for all interested
        architectures under base::CPU (currently leveraged by only
        PPC and ARM64).
      - Differentiates between instruction vs data cache line sizes.
      
      R=rmcilroy@chromium.org, jochen@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
      BUG=
      
      Review URL: https://codereview.chromium.org/1643363002
      
      Cr-Commit-Position: refs/heads/master@{#33642}
      c3ff68b6
  5. 20 Jan, 2016 1 commit
  6. 09 Dec, 2015 1 commit
    • mbrandy's avatar
      PPC64: [turbofan] Changed TruncateFloat64ToInt64 to TryTruncateFloat64ToInt64. · b9f92c15
      mbrandy authored
      Port 95844d94
      
      Original commit message:
          The new operator provides a second output which indicates whether the
          conversion from float64 to int64 was successful or not. The second
          output returns 0 if the conversion fails. If the conversion succeeds,
          then the second output is differs from 0.
      
          The second output can be ignored, which means that the operator can be
          used the same way as the original operator.
      
      R=ahaas@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
      BUG=
      
      Review URL: https://codereview.chromium.org/1515603002
      
      Cr-Commit-Position: refs/heads/master@{#32724}
      b9f92c15
  7. 27 Nov, 2015 3 commits
  8. 23 Nov, 2015 1 commit
  9. 17 Nov, 2015 1 commit
  10. 11 Nov, 2015 2 commits
  11. 10 Nov, 2015 1 commit
  12. 16 Oct, 2015 1 commit
  13. 05 Oct, 2015 1 commit
    • mbrandy's avatar
      PPC: Remove register index/code indirection · f53fda63
      mbrandy authored
      Port 5cf1c0bc
      
      Original commit message:
          Previous to this patch, both the lithium and TurboFan register
          allocators tracked allocated registers by "indices", rather than
          the register codes used elsewhere in the runtime. This patch
          ensures that codes are used everywhere, and in the process cleans
          up a bunch of redundant code and adds more structure to how the
          set of allocatable registers is defined.
      
          Some highlights of changes:
      
          * TurboFan's RegisterConfiguration class moved to V8's top level
            so that it can be shared with Crankshaft.
          * Various "ToAllocationIndex" and related methods removed.
          * Code that can be easily shared between Register classes on
            different platforms is now shared.
          * The list of allocatable registers on each platform is declared
            as a list rather than implicitly via the register index <->
            code mapping.
      
      R=danno@chromium.org, bmeurer@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/1381383002
      
      Cr-Commit-Position: refs/heads/master@{#31114}
      f53fda63
  14. 03 Sep, 2015 1 commit
  15. 17 Aug, 2015 1 commit
  16. 30 Jul, 2015 1 commit
  17. 14 Jul, 2015 1 commit
    • mbrandy's avatar
      PPC: Limit unbound label tracking to branch references. · 7b1d583d
      mbrandy authored
      Labels which are not associated with branches (e.g. labels which
      record the location of the embedded constant pool or jump tables)
      should not be tracked for the purpose of trampoline generation.
      
      This also improves management of the high water mark in the buffer
      which triggers trampoline generation such that it is reset whenever
      the number of tracked branches drops to zero.
      
      These changes should help minimize unnecessary trampoline and
      (subsequent) slow branch generation.
      
      R=dstence@us.ibm.com, michael_dawson@ca.ibm.com
      BUG=
      
      Review URL: https://codereview.chromium.org/1237213002
      
      Cr-Commit-Position: refs/heads/master@{#29659}
      7b1d583d
  18. 13 Jul, 2015 1 commit
  19. 02 Jul, 2015 1 commit
  20. 24 Jun, 2015 1 commit
  21. 09 Jun, 2015 1 commit
    • mbrandy's avatar
      Fix issues with Arm's use of embedded constant pools · e3d76269
      mbrandy authored
      - Introduce Assembler::DataAlign for table alignment in code object
      - Fix several misuses of r8 (alias of the pool pointer register, pp)
      - Fix calculation of pp in OSR/handler entry invocation
      - Enable missing cases in deserializer
      - Fix references to ool constant pools in comments.
      
      R=rmcilroy@chromium.org, michael_dawson@ca.ibm.com
      BUG=chromium:497180
      LOG=N
      
      Review URL: https://codereview.chromium.org/1155673005
      
      Cr-Commit-Position: refs/heads/master@{#28873}
      e3d76269
  22. 04 Jun, 2015 1 commit
    • mbrandy's avatar
      Add support for Embedded Constant Pools for PPC and Arm · eac7f046
      mbrandy authored
      Embed constant pools within their corresponding Code
      objects.
      
      This removes support for out-of-line constant pools in favor
      of the new approach -- the main advantage being that it
      eliminates the need to allocate and manage separate constant
      pool array objects.
      
      Currently supported on PPC and ARM.  Enabled by default on
      PPC only.
      
      This yields a 6% improvment in Octane on PPC64.
      
      R=bmeurer@chromium.org, rmcilroy@chromium.org, michael_dawson@ca.ibm.com
      BUG=chromium:478811
      LOG=Y
      
      Review URL: https://codereview.chromium.org/1162993006
      
      Cr-Commit-Position: refs/heads/master@{#28801}
      eac7f046
  23. 03 Jun, 2015 1 commit
  24. 02 Jun, 2015 1 commit
    • mbrandy's avatar
      Add support for Embedded Constant Pools for PPC and Arm · a9404029
      mbrandy authored
      Embed constant pools within their corresponding Code
      objects.
      
      This removes support for out-of-line constant pools in favor
      of the new approach -- the main advantage being that it
      eliminates the need to allocate and manage separate constant
      pool array objects.
      
      Currently supported on PPC and ARM.  Enabled by default on
      PPC only.
      
      This yields a 6% improvment in Octane on PPC64.
      
      R=danno@chromium.org, svenpanne@chromium.org, bmeurer@chromium.org, rmcilroy@chromium.org, dstence@us.ibm.com, michael_dawson@ca.ibm.com
      BUG=chromium:478811
      LOG=Y
      
      Review URL: https://codereview.chromium.org/1131783003
      
      Cr-Commit-Position: refs/heads/master@{#28770}
      a9404029
  25. 01 Jun, 2015 1 commit
  26. 27 Mar, 2015 1 commit
  27. 24 Mar, 2015 1 commit
  28. 11 Mar, 2015 1 commit
    • michael_dawson's avatar
      Contribution of PowerPC port (continuation of 422063005) - uplevel · 45e4a789
      michael_dawson authored
      Contribution of PowerPC port (continuation of 422063005,
      817143002,866843003, and 901083004). This patch updates
      the ppc directories to make them current with changes in
      common code as of today.
      
      We had to exclude the test test-serialize/SerializeInternalReference
      until we agree on the right way to add those changes for PPC as
      outlined in the description in the google doc provided earlier.
      
      We also had to exclude a couple of other tests due to new
      failures seen since the last uplevel.  We excluded as opposed
      to waiting until we could investigate to maximize the chance
      of getting PPC compiling in the google repos before new
      breaking changes are made.
      
      I'll note that before applying any of our changes the
      mozilla part of quickcheck was already broken when using
      the lastest repo content so I had to run without that
      
      	modified:   src/compiler/ppc/code-generator-ppc.cc
      	modified:   src/compiler/ppc/instruction-codes-ppc.h
      	modified:   src/compiler/ppc/instruction-selector-ppc.cc
      	modified:   src/ic/ppc/handler-compiler-ppc.cc
      	modified:   src/ic/ppc/ic-compiler-ppc.cc
      	modified:   src/ppc/assembler-ppc-inl.h
      	modified:   src/ppc/assembler-ppc.cc
      	modified:   src/ppc/assembler-ppc.h
      	modified:   src/ppc/builtins-ppc.cc
      	modified:   src/ppc/code-stubs-ppc.cc
      	modified:   src/ppc/codegen-ppc.cc
      	modified:   src/ppc/full-codegen-ppc.cc
      	modified:   src/ppc/lithium-codegen-ppc.cc
      	modified:   src/ppc/macro-assembler-ppc.cc
      	modified:   src/ppc/macro-assembler-ppc.h
      	modified:   test/cctest/cctest.status
      
      R=danno@chromium.org, svenpanne@chromium.org
      
      BUG=
      
      Review URL: https://codereview.chromium.org/994533004
      
      Cr-Commit-Position: refs/heads/master@{#27125}
      45e4a789
  29. 04 Mar, 2015 1 commit
    • yangguo's avatar
      Refactor BreakLocationIterator. · 1a608493
      yangguo authored
      We now have BreakLocation::Iterator to iterate via RelocIterator, and
      create a BreakLocation when we are done iterating. The reloc info is
      stored in BreakLocation in a GC-safe way and instantiated on demand.
      
      R=ulan@chromium.org
      BUG=v8:3924
      LOG=N
      
      Review URL: https://codereview.chromium.org/967323002
      
      Cr-Commit-Position: refs/heads/master@{#26983}
      1a608493
  30. 03 Mar, 2015 1 commit
    • michael_dawson's avatar
      Contribution of PowerPC port (continuation of 422063005) - currency · a3465838
      michael_dawson authored
      Contribution of PowerPC port (continuation of 422063005, 817143002,
      866843003, and 901083004. This patch updates the ppc directories
      to make them current with changes in common code, removes the
      optimization to use the ool constant pool, and excludes tests that
      don't pass under the ppc simulator given a 240s timeout.
      
      Subsequent patches will cover:
         - remaining optimizations for PPC
         - remaining AIX changes not resolved by 4.8 compiler (4.8 is only recently available for AIX)
         - incremental updates required to ppc directories due to platform specific changes made
          in google repos while we complete the above steps.
      
      	modified:   src/compiler/ppc/code-generator-ppc.cc
      	modified:   src/ic/ppc/handler-compiler-ppc.cc
      	modified:   src/ppc/assembler-ppc-inl.h
      	modified:   src/ppc/assembler-ppc.cc
      	modified:   src/ppc/assembler-ppc.h
      	modified:   src/ppc/builtins-ppc.cc
      	modified:   src/ppc/code-stubs-ppc.cc
      	modified:   src/ppc/debug-ppc.cc
      	modified:   src/ppc/deoptimizer-ppc.cc
      	modified:   src/ppc/frames-ppc.cc
      	modified:   src/ppc/frames-ppc.h
      	modified:   src/ppc/full-codegen-ppc.cc
      	modified:   src/ppc/lithium-codegen-ppc.cc
      	modified:   src/ppc/lithium-ppc.cc
      	modified:   src/ppc/lithium-ppc.h
      	modified:   src/ppc/macro-assembler-ppc.cc
      	modified:   src/ppc/macro-assembler-ppc.h
      	modified:   test/cctest/cctest.status
      	modified:   test/mjsunit/mjsunit.status
      
      R=danno@chromium.org, svenpanne@chromium.org
      
      BUG=
      
      Review URL: https://codereview.chromium.org/965823002
      
      Cr-Commit-Position: refs/heads/master@{#26951}
      a3465838
  31. 20 Feb, 2015 1 commit
    • michael_dawson's avatar
      Contribution of PowerPC port (continuation of 422063005) - PPC dir update 2 - mark2 · 0fb091fc
      michael_dawson authored
      Rebase to latest and use branch created by git new-branch to get a patch that
      only has the required changes.  Created new branch, reset to HEAD and then
      cherry picked across the changes
      
      	modified:   src/compiler/ppc/code-generator-ppc.cc
      	modified:   src/compiler/ppc/instruction-selector-ppc.cc
      	modified:   src/disassembler.cc
      	modified:   src/ic/ppc/handler-compiler-ppc.cc
      	modified:   src/ic/ppc/ic-compiler-ppc.cc
      	modified:   src/ppc/assembler-ppc-inl.h
      	modified:   src/ppc/assembler-ppc.cc
      	modified:   src/ppc/assembler-ppc.h
      	modified:   src/ppc/builtins-ppc.cc
      	modified:   src/ppc/code-stubs-ppc.cc
      	modified:   src/ppc/deoptimizer-ppc.cc
      	modified:   src/ppc/disasm-ppc.cc
      	modified:   src/ppc/full-codegen-ppc.cc
      	modified:   src/ppc/macro-assembler-ppc.cc
      	modified:   src/serialize.cc
      
      R=danno@chromium.org, svenpanne@chromium.org
      
      Review URL: https://codereview.chromium.org/935383002
      
      Cr-Commit-Position: refs/heads/master@{#26762}
      0fb091fc
  32. 13 Feb, 2015 1 commit
  33. 12 Feb, 2015 3 commits
    • loislo's avatar
      CPUProfiler: Push deopt reason further to ProfileNode. · d23ab23b
      loislo authored
      1) create beefy RelocInfo table when cpu profiler is active, so if a function
      was optimized when profiler was active RelocInfo would get separate DeoptInfo
      for the each deopt case.
      
      2) push DeoptInfo from CodeEntry to ProfileNode.
      When deopt happens we put the info collected on #1 into CodeEntry and record stack sample.
      On the sampling thread we grab the deopt data and append it to the corresponding ProfileNode deopts list.
      
      Sample profile dump.
      [Top down]:
          0  (root) 0 #1
          1     29 #2
          1      test 29 #3
          2        opt_function 29 #4
          2          opt_function 29 #5
                         deopted at 118 with reason 'not a heap number'
                         deopted at 137 with reason 'division by zero'
      
      BUG=452067
      LOG=n
      
      Committed: https://crrev.com/ce8701b247d3c6604f24f17a90c02d17b4417f54
      Cr-Commit-Position: refs/heads/master@{#26615}
      
      Review URL: https://codereview.chromium.org/919953002
      
      Cr-Commit-Position: refs/heads/master@{#26630}
      d23ab23b
    • loislo's avatar
      Revert of CPUProfiler: Push deopt reason further to ProfileNode. (patchset #1... · cb6ea146
      loislo authored
      Revert of CPUProfiler: Push deopt reason further to ProfileNode. (patchset #1 id:1 of https://codereview.chromium.org/919953002/)
      
      Reason for revert:
      static initializers broke the build
      
      Original issue's description:
      > CPUProfiler: Push deopt reason further to ProfileNode.
      >
      > 1) create beefy RelocInfo table when cpu profiler is active, so if a function
      > was optimized when profiler was active RelocInfo would get separate DeoptInfo
      > for the each deopt case.
      >
      > 2) push DeoptInfo from CodeEntry to ProfileNode.
      > When deopt happens we put the info collected on #1 into CodeEntry and record stack sample.
      > On the sampling thread we grab the deopt data and append it to the corresponding ProfileNode deopts list.
      >
      > Sample profile dump.
      > [Top down]:
      >     0  (root) 0 #1
      >     1     29 #2
      >     5      test 29 #3
      >     3        opt_function 29 #4
      >                  deopted at 52 with reason 'not a heap number'
      >                  deopted at 71 with reason 'division by zero'
      >
      > BUG=452067
      > LOG=n
      >
      > Committed: https://crrev.com/ce8701b247d3c6604f24f17a90c02d17b4417f54
      > Cr-Commit-Position: refs/heads/master@{#26615}
      
      TBR=jarin@chromium.org,svenpanne@chromium.org,yurys@chromium.org,alph@chromium.org
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=452067
      
      Review URL: https://codereview.chromium.org/915173005
      
      Cr-Commit-Position: refs/heads/master@{#26616}
      cb6ea146
    • loislo's avatar
      CPUProfiler: Push deopt reason further to ProfileNode. · ce8701b2
      loislo authored
      1) create beefy RelocInfo table when cpu profiler is active, so if a function
      was optimized when profiler was active RelocInfo would get separate DeoptInfo
      for the each deopt case.
      
      2) push DeoptInfo from CodeEntry to ProfileNode.
      When deopt happens we put the info collected on #1 into CodeEntry and record stack sample.
      On the sampling thread we grab the deopt data and append it to the corresponding ProfileNode deopts list.
      
      Sample profile dump.
      [Top down]:
          0  (root) 0 #1
          1     29 #2
          5      test 29 #3
          3        opt_function 29 #4
                       deopted at 52 with reason 'not a heap number'
                       deopted at 71 with reason 'division by zero'
      
      BUG=452067
      LOG=n
      
      Review URL: https://codereview.chromium.org/919953002
      
      Cr-Commit-Position: refs/heads/master@{#26615}
      ce8701b2