1. 04 Jun, 2018 2 commits
  2. 14 Apr, 2018 1 commit
    • Jakob Kummerow's avatar
      [ubsan] Change Address typedef to uintptr_t · 2459046c
      Jakob Kummerow authored
      The "Address" type is V8's general-purpose type for manipulating memory
      addresses. Per the C++ spec, pointer arithmetic and pointer comparisons
      are undefined behavior except within the same array; since we generally
      don't operate within a C++ array, our general-purpose type shouldn't be
      a pointer type.
      
      Bug: v8:3770
      Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;master.tryserver.blink:linux_trusty_blink_rel
      Change-Id: Ib96016c24a0f18bcdba916dabd83e3f24a1b5779
      Reviewed-on: https://chromium-review.googlesource.com/988657
      Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52601}
      2459046c
  3. 05 Apr, 2018 1 commit
  4. 22 Mar, 2018 1 commit
  5. 13 Feb, 2018 1 commit
  6. 09 Feb, 2018 2 commits
  7. 16 Jan, 2018 1 commit
  8. 02 Dec, 2017 1 commit
    • Mathias Bynens's avatar
      Normalize casing of hexadecimal digits · 822be9b2
      Mathias Bynens authored
      This patch normalizes the casing of hexadecimal digits in escape
      sequences of the form `\xNN` and integer literals of the form
      `0xNNNN`.
      
      Previously, the V8 code base used an inconsistent mixture of uppercase
      and lowercase.
      
      Google’s C++ style guide uses uppercase in its examples:
      https://google.github.io/styleguide/cppguide.html#Non-ASCII_Characters
      
      Moreover, uppercase letters more clearly stand out from the lowercase
      `x` (or `u`) characters at the start, as well as lowercase letters
      elsewhere in strings.
      
      BUG=v8:7109
      TBR=marja@chromium.org,titzer@chromium.org,mtrofin@chromium.org,mstarzinger@chromium.org,rossberg@chromium.org,yangguo@chromium.org,mlippautz@chromium.org
      NOPRESUBMIT=true
      
      Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: I790e21c25d96ad5d95c8229724eb45d2aa9e22d6
      Reviewed-on: https://chromium-review.googlesource.com/804294
      Commit-Queue: Mathias Bynens <mathias@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49810}
      822be9b2
  9. 22 Nov, 2017 1 commit
  10. 18 Oct, 2017 1 commit
  11. 13 Oct, 2017 1 commit
  12. 09 Sep, 2017 1 commit
    • Anisha Rohra's avatar
      s390/PPC: Make Register et al. real classes · 0b491c89
      Anisha Rohra authored
      Port 9e995e12
      Port 408f252b
      
        Up to now, each architecture defined all Register types as structs,
        with lots of redundancy. An often found comment noted that they cannot
        be classes due to initialization order problems. As these problems are
        gone with C++11 constexpr constants, I now tried making Registers
        classes again.
        All register types now inherit from RegisterBase, which provides a
        default set of methods and named constructors (like ::from_code,
        code(), bit(), is_valid(), ...).
        This design allows to guarantee an interesting property: Each register
        is either valid, or it's the no_reg register. There are no other
        invalid registers. This is guaranteed statically by the constexpr
        constructor, and dynamically by ::from_code.
      
        I decided to disallow the default constructor completely, so instead of
        "Register reg;" you now need "Register reg = no_reg;". This makes
        explicit how the Register is initialized.
      
        I did this change to the x64, ia32, arm, arm64, mips and mips64 ports.
        Overall, code got much more compact and more safe. In theory, it should
        also increase performance (since the is_valid() check is simpler), but
        this is probably not measurable.
      
      R=bjaideep@ca.ibm.com, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
      BUG=
      LOG=N
      
      Change-Id: I2e87efc8790290c64fd6c0a2d093326710b30ed3
      Reviewed-on: https://chromium-review.googlesource.com/658065Reviewed-by: 's avatarJaideep Bajwa <bjaideep@ca.ibm.com>
      Commit-Queue: Jaideep Bajwa <bjaideep@ca.ibm.com>
      Cr-Commit-Position: refs/heads/master@{#47933}
      0b491c89
  13. 15 Aug, 2017 1 commit
  14. 26 Jul, 2017 1 commit
    • Jaideep Bajwa's avatar
      PPC/s390: Move TF parts of MacroAssembler into new TurboAssembler. · 2b23e892
      Jaideep Bajwa authored
      Port dfdcaf43
      Port 2e1f5567
      
      Original Commit Message:
      
          This CL introduces TurboAssembler, a super-class of Assembler and sub-class
          of MacroAssembler. TurboAssembler contains all the functionality that is used
          by Turbofan and previously was part of MacroAssembler. TurboAssembler has
          access to the isolate but, in contrast to MacroAssembler, does not expect to
          be running on the main thread.
      
      R=neis@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
      BUG=v8:6048
      LOG=N
      
      Change-Id: I3f51771afefe46410db7cda2625472d78c87f8c6
      Reviewed-on: https://chromium-review.googlesource.com/583584Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Commit-Queue: Jaideep Bajwa <bjaideep@ca.ibm.com>
      Cr-Commit-Position: refs/heads/master@{#46900}
      2b23e892
  15. 24 Jul, 2017 2 commits
  16. 13 Jul, 2017 1 commit
  17. 12 Jul, 2017 1 commit
  18. 28 Jun, 2017 1 commit
  19. 23 Jun, 2017 1 commit
  20. 08 Jun, 2017 1 commit
    • sampsong's avatar
      PPC/s390: [compiler] Delay allocation of code-embedded heap numbers. · ae947e26
      sampsong authored
      Port 659e8f7b
      
      Original Commit Message:
      
          Instead of allocating and embedding certain heap numbers into the code
          during code assembly, emit dummies but record the allocation requests.
          Later then, in Assembler::GetCode, allocate the heap numbers and patch
          the code by replacing the dummies with the actual objects. The
          RelocInfos for the embedded objects are already recorded correctly when
          emitting the dummies.
      
      R=neis@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, bjaideep@ca.ibm.com, michael_dawson@ca.ibm.com
      BUG=v8:6048
      LOG=N
      
      Review-Url: https://codereview.chromium.org/2929843002
      Cr-Commit-Position: refs/heads/master@{#45793}
      ae947e26
  21. 28 Apr, 2017 1 commit
  22. 30 Mar, 2017 1 commit
  23. 29 Mar, 2017 1 commit
  24. 17 Mar, 2017 1 commit
    • neis's avatar
      Disentangle assembler from isolate. · 94b088ca
      neis authored
      This is a first step towards moving Turbofan code generation off the main thread.
      
      Summary of the changes:
      - AssemblerBase no longer has a pointer to the isolate. Instead, its
        constructor receives the few things that it needs from the isolate (on most
        architectures this is just the serializer_enabled flag).
      - RelocInfo no longer has a pointer to the isolate. Instead, the functions
        that need it take it as an argument.  (There are currently still a few that
        implicitly access the isolate through a HeapObject.)
      - The MacroAssembler now explicitly holds a pointer to the isolate (before, it
        used to get it from the Assembler).
      - The jit_cookie also moved from AssemblerBase to the MacroAssemblers, since
        it's not used at all in the Assemblers.
      - A few architectures implemented parts of the Assembler with the help
        of a Codepatcher that is based on MacroAssembler.  Since the Assembler no
        longer has the isolate, but the MacroAssembler still needs it, this doesn't
        work anymore.  Instead, these Assemblers now use a new PatchingAssembler.
      
      BUG=v8:6048
      
      Review-Url: https://codereview.chromium.org/2732273003
      Cr-Commit-Position: refs/heads/master@{#43890}
      94b088ca
  25. 27 Feb, 2017 1 commit
  26. 24 Feb, 2017 1 commit
  27. 13 Jan, 2017 1 commit
  28. 12 Jan, 2017 1 commit
  29. 10 Jan, 2017 1 commit
  30. 18 Aug, 2016 1 commit
  31. 29 Jun, 2016 1 commit
  32. 28 Jun, 2016 1 commit
    • bjaideep's avatar
      PPC/s390: Reland [heap] Avoid the use of cells to point from code to new-space objects. · 85cebe73
      bjaideep authored
      Port 5e058540
      
      Original commit message:
      
          The reason for reverting is: This breaks gc-stress bot:
          https://chromegw.corp.google.com/i/client.v8/builders/V8%20Linux64%20GC%20Stress%20-%20custom%20snapshot
      
          Abortion of compaction could cause duplicate entries in the typed-old-to-new remembered set.
          These duplicates could cause a DCHECK to trigger which checks that slots recorded in the
          remembered set never point to to-space. This reland-CL allows duplicates in the remembered
          set by removing the DCHECK, and additionally clears entries in the remembered set if objects are moved.
      
          Original issue's description:
      
          Cells were needed originally because there was no typed remembered set to
          record direct pointers from code space to new space. A previous
          CL (https://codereview.chromium.org/2003553002/) already introduced
          the remembered set, this CL uses it.
      
          This CL
          * stores direct pointers in code objects, even if the target is in new space,
          * records the slot of the pointer in typed-old-to-new remembered set,
          * adds a list which stores weak code-to-new-space references,
          * adds a test to test-heap.cc for weak code-to-new-space references,
          * removes prints in tail-call-megatest.js
      
      R=ahaas@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/2108673003
      Cr-Commit-Position: refs/heads/master@{#37346}
      85cebe73
  33. 27 Jun, 2016 1 commit
    • ssanfilippo's avatar
      This commit is the first step towards emitting unwinding information in · 7d073b03
      ssanfilippo authored
      the .eh_frame format as part of the jitdump generated when
      FLAG_perf_prof is enabled. The final goal is allowing precise unwinding
      of callchains that include JITted code when profiling V8 using perf.
      
      Unwinding information is stored in the body of code objects after the
      code itself, prefixed with its length and aligned to a 8-byte boundary.
      A boolean flag in the header signals its presence, resulting in zero
      memory overhead when the generation of unwinding info is disabled or
      no such information was attached to the code object.
      
      A new jitdump record type (with id 4) is introduced for specifying
      optional unwinding information for code load records. The EhFrameHdr
      struct is also introduced, together with a constructor to initialise it
      from the associated code object.
      
      At this stage no unwinding information is written to the jitdump, but
      the infrastructure for doing so is ready in place.
      
      BUG=v8:4899
      LOG=N
      
      Review-Url: https://codereview.chromium.org/1993653003
      Cr-Commit-Position: refs/heads/master@{#37296}
      7d073b03
  34. 20 Jun, 2016 2 commits
    • bjaideep's avatar
      PPC/s390: [wasm] Separate compilation from instantiation · 8071e21c
      bjaideep authored
      Port c1d01aea
      
      Original commit message:
      
          Compilation of wasm functions happens before instantiation. Imports are linked afterwards, at instantiation time. Globals and memory are also
          allocated and then tied in via relocation at instantiation time.
      
          This paves the way for implementing Wasm.compile, a prerequisite to
          offering the compiled code serialization feature.
      
          Currently, the WasmModule::Compile method just returns a fixed array
          containing the code objects. More appropriate modeling of the compiled module to come.
      
          Opportunistically centralized the logic on how to update memory
          references, size, and globals, since that logic is the exact same on each
          architecture, except for the actual storing of values back in the
          instruction stream.
      
      R=mtrofin@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com
      
      BUG=v8:5072
      LOG=N
      
      Review-Url: https://codereview.chromium.org/2087453002
      Cr-Commit-Position: refs/heads/master@{#37116}
      8071e21c
    • yangguo's avatar
      Simplify AssemblerPositionsRecorder. · 9c3d730d
      yangguo authored
      R=bmeurer@chromium.org, jgruber@chromium.org
      
      Review-Url: https://codereview.chromium.org/2072963003
      Cr-Commit-Position: refs/heads/master@{#37089}
      9c3d730d
  35. 16 Jun, 2016 1 commit
  36. 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