- 01 Oct, 2018 1 commit
-
-
Clemens Hammacher authored
This removes duplication in the platform-dependent assemblers by introducing {AssemblerBase::ShouldRecordRelocInfo}. On arm64, we also remove a bool and replace it by an early exit. R=mstarzinger@chromium.org Bug: v8:8238 Change-Id: I08c623a19167a358c3188dc9008f045120da82b1 Reviewed-on: https://chromium-review.googlesource.com/1251085Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#56319}
-
- 21 Sep, 2018 1 commit
-
-
Florian Sattler authored
Fixing clang-tidy warning. Replace 0 with nullptr. Add NOLINT for special cases. Add default/override to methods. Bug: v8:8015 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: Iff483356ace471d816051c6dd06ca08809ae1c09 Reviewed-on: https://chromium-review.googlesource.com/1238333Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Marja Hölttä <marja@chromium.org> Commit-Queue: Florian Sattler <sattlerf@google.com> Cr-Commit-Position: refs/heads/master@{#56129}
-
- 20 Sep, 2018 1 commit
-
-
Florian Sattler authored
Fixing clang-tidy warning. Bug: v8:8015 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: Ibc5124e06f5774e7695029e2d21084a7efb965e6 Reviewed-on: https://chromium-review.googlesource.com/1224412 Commit-Queue: Florian Sattler <sattlerf@google.com> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#56065}
-
- 19 Sep, 2018 1 commit
-
-
Maya Lekova authored
This CL implements the following design doc: https://docs.google.com/document/d/1h5kdfemMQMpUd15PSKW1lqikJW5hsGwrmOvoqhGFRts/edit?ts=5b978756#heading=h.urs7r34mx9p Bug: v8:7790 Change-Id: I5f758c6d906ea9275c30b28f339063c64a2dc8d8 Reviewed-on: https://chromium-review.googlesource.com/1221807Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#56021}
-
- 15 Sep, 2018 1 commit
-
-
Igor Sheludko authored
This allows to avoid passing around Isolate instance for no actual reason when generating "codegen" functions. Bug: v8:8015 Change-Id: Ic3a9bd5a8ecb5b559479e44c5e1309a78a1546e7 Reviewed-on: https://chromium-review.googlesource.com/1226133Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#55926}
-
- 11 Sep, 2018 1 commit
-
-
Clemens Hammacher authored
The macro has been deprecated since 2016, and it keeps confusing me, so let's just remove it completely from the code base. R=leszeks@chromium.org TBR=mstarzinger@chromium.org, verwaest@chromium.org, jgruber@chromium.org Bug: v8:8015 Change-Id: Ibe1122fd9d2624bc94873d9c51dc8499c54a04fd Reviewed-on: https://chromium-review.googlesource.com/1209322Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#55779}
-
- 17 Aug, 2018 1 commit
-
-
Sigurd Schneider authored
This reduced the number of targets depending on assembler.h from ~900 to ~350. Bug: v8:8054 Change-Id: I74ae2ce7a4b27791d0ee25542ee0b2175bedf5f7 Reviewed-on: https://chromium-review.googlesource.com/1174534 Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#55188}
-
- 08 Aug, 2018 1 commit
-
-
Michael Starzinger authored
We instantiate the JumpTableAssembler in patching mode (i.e. directly on existing code without an intermittent buffer). In this mode it is not possible to record reloc information. This makes sure we no longer just blindly write into the non-existing buffer. R=clemensh@chromium.org BUG=v8:8028 Change-Id: I4abb8f06cf819fef608e901c4740263f0cecd08a Reviewed-on: https://chromium-review.googlesource.com/1166834 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#54966}
-
- 01 Aug, 2018 1 commit
-
-
Sigurd Schneider authored
uses of the function where that was assumed to not be the case. RelocInfo: :NONE satisfies IsShareableRelocMode; this cleans up some Change-Id: Iafd7262496edc389131966f07f4e5b4fa8b5c1e6 Reviewed-on: https://chromium-review.googlesource.com/1158574Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#54845}
-
- 31 Jul, 2018 1 commit
-
-
Michael Achenbach authored
This reverts commit d854d351. Reason for revert: Speculative revert for webkit unit tests: https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8-Blink%20Linux%2064/25209 Original change's description: > [builtins] Clear RelocInfo for off-heap trampolines > > For technical reasons, we used to serialize off-heap trampolines with a > RelocInfo containing a single OFF_HEAP_TARGET entry. This RelocInfo was > never needed at runtime. It also ended up being somewhat misleading > because printing an embedded code object would show the OFF_HEAP_TARGET > entry (belonging to the trampoline) at the first 'real' instruction. > > With this CL, we explicitly serialize an empty byte array as the reloc > info for each off-heap trampoline, i.e. the snapshot will never contain > such off-heap target reloc infos. > > Bug: v8:6666, v8:7969 > Change-Id: If6fa85a438d093ed5dcea07ce0de1db49a224d28 > Reviewed-on: https://chromium-review.googlesource.com/1146643 > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Yang Guo <yangguo@chromium.org> > Cr-Commit-Position: refs/heads/master@{#54786} TBR=yangguo@chromium.org,jgruber@chromium.org Change-Id: If5eabd162141149361df90095b89a173fe2cb81e No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:6666, v8:7969 Reviewed-on: https://chromium-review.googlesource.com/1155594Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Commit-Queue: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#54801}
-
- 30 Jul, 2018 1 commit
-
-
jgruber authored
For technical reasons, we used to serialize off-heap trampolines with a RelocInfo containing a single OFF_HEAP_TARGET entry. This RelocInfo was never needed at runtime. It also ended up being somewhat misleading because printing an embedded code object would show the OFF_HEAP_TARGET entry (belonging to the trampoline) at the first 'real' instruction. With this CL, we explicitly serialize an empty byte array as the reloc info for each off-heap trampoline, i.e. the snapshot will never contain such off-heap target reloc infos. Bug: v8:6666, v8:7969 Change-Id: If6fa85a438d093ed5dcea07ce0de1db49a224d28 Reviewed-on: https://chromium-review.googlesource.com/1146643 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#54786}
-
- 24 Jul, 2018 1 commit
-
-
Clemens Hammacher authored
This is a reland of a462a785 Original change's description: > [turboassembler] Introduce hard-abort mode > > For checks and assertions (mostly for debug code, like stack alignment > or zero extension), we had two modes: Emit a call to the {Abort} > runtime function (the default), and emit a debug break (used for > testing, enabled via --trap-on-abort). > In wasm, where we cannot just call a runtime function because code must > be isolate independent, we always used the trap-on-abort behaviour. > This causes problems for our fuzzers, which do not catch SIGTRAP, and > hence do not detect debug code failures. > > This CL introduces a third mode ("hard abort"), which calls a C > function via {ExternalReference}. The C function still outputs the > abort reason, but does not print the stack trace. It then aborts via > "OS::Abort", just like the runtime function. > This will allow fuzzers to detect the crash and even find a nice error > message. > > Even though this looks like a lot of code churn, it is actually not. > Most added lines are new tests, and other changes are minimal. > > R=mstarzinger@chromium.org > > Bug: chromium:863799 > Change-Id: I77c58ff72db552d49014614436259ccfb49ba87b > Reviewed-on: https://chromium-review.googlesource.com/1142163 > Commit-Queue: Clemens Hammacher <clemensh@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Cr-Commit-Position: refs/heads/master@{#54592} Bug: chromium:863799 Change-Id: I7729a47b4823a982a8e201df36520aa2b6ef5326 Reviewed-on: https://chromium-review.googlesource.com/1146100Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#54656}
-
- 20 Jul, 2018 2 commits
-
-
Sigurd Schneider authored
This reverts commit a462a785. Reason for revert: Breaks a TurboAssembler test: https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Arm/7726 Original change's description: > [turboassembler] Introduce hard-abort mode > > For checks and assertions (mostly for debug code, like stack alignment > or zero extension), we had two modes: Emit a call to the {Abort} > runtime function (the default), and emit a debug break (used for > testing, enabled via --trap-on-abort). > In wasm, where we cannot just call a runtime function because code must > be isolate independent, we always used the trap-on-abort behaviour. > This causes problems for our fuzzers, which do not catch SIGTRAP, and > hence do not detect debug code failures. > > This CL introduces a third mode ("hard abort"), which calls a C > function via {ExternalReference}. The C function still outputs the > abort reason, but does not print the stack trace. It then aborts via > "OS::Abort", just like the runtime function. > This will allow fuzzers to detect the crash and even find a nice error > message. > > Even though this looks like a lot of code churn, it is actually not. > Most added lines are new tests, and other changes are minimal. > > R=mstarzinger@chromium.org > > Bug: chromium:863799 > Change-Id: I77c58ff72db552d49014614436259ccfb49ba87b > Reviewed-on: https://chromium-review.googlesource.com/1142163 > Commit-Queue: Clemens Hammacher <clemensh@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Cr-Commit-Position: refs/heads/master@{#54592} TBR=mstarzinger@chromium.org,clemensh@chromium.org Change-Id: I60c011cfe262ccebbb9abf32699a9fe17e72a3c8 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:863799 Reviewed-on: https://chromium-review.googlesource.com/1145431 Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#54597}
-
Clemens Hammacher authored
For checks and assertions (mostly for debug code, like stack alignment or zero extension), we had two modes: Emit a call to the {Abort} runtime function (the default), and emit a debug break (used for testing, enabled via --trap-on-abort). In wasm, where we cannot just call a runtime function because code must be isolate independent, we always used the trap-on-abort behaviour. This causes problems for our fuzzers, which do not catch SIGTRAP, and hence do not detect debug code failures. This CL introduces a third mode ("hard abort"), which calls a C function via {ExternalReference}. The C function still outputs the abort reason, but does not print the stack trace. It then aborts via "OS::Abort", just like the runtime function. This will allow fuzzers to detect the crash and even find a nice error message. Even though this looks like a lot of code churn, it is actually not. Most added lines are new tests, and other changes are minimal. R=mstarzinger@chromium.org Bug: chromium:863799 Change-Id: I77c58ff72db552d49014614436259ccfb49ba87b Reviewed-on: https://chromium-review.googlesource.com/1142163 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#54592}
-
- 09 Jul, 2018 1 commit
-
-
Sigurd Schneider authored
This CL uses pc-relative jumps and calls (B/BL) for calls from embedded builtins to embedded builtins. To make this work, the code range size is limited to 32MB on arm during mksnapshot, which ensures that all builtin to builtin offsets for jumps/calls fit into the B/BL immediate. At code generation time, we put a placeholder into the instruction offset which we resolve to the right code object when the code is copied to the heap. We use a new relocation mode RELATIVE_CODE_TARGET for these relative jumps. The relocation mode RELATIVE_CODE_TARGET should never appear after generating the snapshot. We modify the target_address/set_target_address methods of RelocInfo such that they return the absolute target addresses for pc-relative B/BL instructions. This ensures that the GC can treat RELATIVE_CODE_TARGET in the same way as code targets. This, however, only matters during snapshot creation time, and production code never contains RELATIVE_CODE_TARGET relocations. Bug: v8:6666 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: If7eab83ad588859ca87c654a5ddc3e37caea884c Reviewed-on: https://chromium-review.googlesource.com/1117181Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#54320}
-
- 06 Jul, 2018 1 commit
-
-
Sigurd Schneider authored
This CL surfaces AssemblerOptions to CodeAssembler::GenerateCode and to pipeline methods. To allow forward declaring AssemblerOptions, AssemblerBase::Options was moved out of the AssemblerBase class. Bug: v8:6666 Change-Id: If9fc50d3d4767bb5dd39a0c3b6e094021f4cae2b Reviewed-on: https://chromium-review.googlesource.com/1127039 Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#54286}
-
- 05 Jul, 2018 1 commit
-
-
Sigurd Schneider authored
The code target vector is used by backends whenever initial code creation uses immediates that cannot hold a code pointer: An index into the vector is used instead, and the vector contains the corresponding code object. This CL makes the code target vector available on all platforms. Bug: v8:6666 Change-Id: I2026acd6a77a3465fe2285b84d47866c3b794855 Reviewed-on: https://chromium-review.googlesource.com/1118885 Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#54236}
-
- 03 Jul, 2018 1 commit
-
-
jgruber authored
This CL replaces most uses of the V8_EMBEDDED_BUILTIN define by a new read-only runtime flag called FLAG_embedded_builtins. The flag is true iff V8_EMBEDDED_BUILTINS is defined. Bug: v8:6666 Change-Id: Ifcc909dc9b028a2c967f8a0e45029df5e71072df Reviewed-on: https://chromium-review.googlesource.com/1122401 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#54156}
-
- 26 Jun, 2018 1 commit
-
-
Michael Starzinger authored
R=clemensh@chromium.org Change-Id: Id8a0849d3456be1062a065a23f51bac250de4f7d Reviewed-on: https://chromium-review.googlesource.com/1107936Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#54026}
-
- 22 Jun, 2018 2 commits
-
-
Georg Neis authored
Use V8_INLINE and V8_NOINLINE instead. R=sigurds@chromium.org TBR=yangguo@chromium.org TBR=hpayer@chromium.org Change-Id: I1ccfcdc2178ded15ec730ab0577c4fc96a76a4f9 Reviewed-on: https://chromium-review.googlesource.com/1111840 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#53966}
-
Clemens Hammacher authored
This prologue is not needed any more now that we have the jump table. If optimized code exists, we will not even enter the Liftoff code any more, but instead jump to the optimized code right away. This also allows to remove the {WASM_CODE_TABLE_ENTRY} relocation info kind. R=mstarzinger@chromium.org Bug: v8:7758 Change-Id: I0449693d7434088fb264104fe59365d7ca2b74c6 Reviewed-on: https://chromium-review.googlesource.com/1110222Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#53954}
-
- 21 Jun, 2018 1 commit
-
-
Sigurd Schneider authored
This CL reverts commit 38bec2ea and implements the same functionality via Assembler::RecordRelocInfo. Bug: v8:6666 Change-Id: I2e6b60697f68e956257f4c0877342da1bffca361 Reviewed-on: https://chromium-review.googlesource.com/1107710 Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#53911}
-
- 20 Jun, 2018 4 commits
-
-
Ben L. Titzer authored
This CL attempts to simplify the Assembler's dependency on the isolate, in particular on a global "serializer_enabled" mode contained therein. The "serializer_enabled" condition enabled and disabled a number of things in both the assemblers and macro assemblers. To make these dependencies explicit, the Assembler::IsolateData is refactored to be a proper Assembler::Options struct that controls specific assembler behaviors, with default settings easily computable from the isolate. This also helps make the contract for compiling WASM code more explicit (since WASM code needs to have reloc info recorded for external references) we can explicitly enable this recording without trying to "trick" the assembler using "serializer_enabled". R=jgruber@chromium.org CC=mstarzinger@chromium.org, herhut@chromium.org Change-Id: I7a8ba49df7b75b292d73ec2aa6e507c27a3d99c8 Reviewed-on: https://chromium-review.googlesource.com/1105982 Commit-Queue: Ben Titzer <titzer@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#53890}
-
Georgia Kouveli authored
When encountering a LoadStackPointer input to a comparison, generate a register LocationOperand that points to the stack pointer. This can avoid unnecessary spilling of the stack pointer. Since sp is a special register for arm64, we need to add a mechanism to print its name in RegisterConfiguration. This is a port of https://chromium-review.googlesource.com/1055568 that made the same change for arm. It also ports the tests added in https://chromium-review.googlesource.com/1099068 to arm and arm64. Bug: v8:7844 Change-Id: I5adc672ff877b9888ef755e8e60e4eabbc61061b Reviewed-on: https://chromium-review.googlesource.com/1107810Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com> Cr-Commit-Position: refs/heads/master@{#53889}
-
Michael Starzinger authored
R=clemensh@chromium.org Change-Id: I89339f2d9035d1882e8d29a9119f1bc2d68927e5 Reviewed-on: https://chromium-review.googlesource.com/1105759Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#53879}
-
Georgia Kouveli authored
We can instead pass the deopt id in a register, where before we were passing the deopt entry address. This removes the need for the deopt tables altogether, saving 192kB. Change-Id: I479d4de1a0245de328720b6b03a1955c8c63f696 Reviewed-on: https://chromium-review.googlesource.com/1076472Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com> Cr-Commit-Position: refs/heads/master@{#53863}
-
- 19 Jun, 2018 1 commit
-
-
Michael Starzinger authored
This removes special casing in the handling of {RelocInfo::CODE_TARGET} for cases where such references appeared in {WasmCode}. Such references can only appear in real {Code} objects and also only target real {Code} objects by now. R=clemensh@chromium.org Change-Id: I87c55c60cd6344bb67fa8c8d04b66fb523d07ba7 Reviewed-on: https://chromium-review.googlesource.com/1104680 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#53848}
-
- 18 Jun, 2018 1 commit
-
-
Clemens Hammacher authored
Since https://crrev.com/2951473002, there is only one reloc info for code targets, so there is no need for the special {kCodeTargetMask}. R=mstarzinger@chromium.org Bug: v8:7754 Change-Id: I1055108c0128c7de0f5cfefc5e90bbd9dc75522a Reviewed-on: https://chromium-review.googlesource.com/1098663Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#53776}
-
- 16 Jun, 2018 1 commit
-
-
Kanghua Yu authored
The jump optimization maybe run Turbofan pipeline twice for each TF/CS builtins, and relies on the fact that the number of j/jmp instruction generated is always the same. This CL introduces a verification process to ensure that instruction sequence and virtual registers are always the same in two stages, before the final code generation phase. R=danno@chromium.org, jarin@chromium.org Bug: v8:7839 Change-Id: Id77e9bc80f54f79d7a845315e0b99e3f4b6a54fb Reviewed-on: https://chromium-review.googlesource.com/1100491 Commit-Queue: Kanghua Yu <kanghua.yu@intel.com> Reviewed-by:
Daniel Clifford <danno@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#53774}
-
- 14 Jun, 2018 1 commit
-
-
Clemens Hammacher authored
Extract code generation (for the trampoline) from {wasm-code-manager.cc} to a new {JumpTableAssembler}. This prepares a CL to add more logic to the {JumpTableAssembler} to also generate jump tables for lazy compilation and tier up. R=mstarzinger@chromium.org Change-Id: I383585b7e4b5a4af3ca08d07e374b44654c1a09f Reviewed-on: https://chromium-review.googlesource.com/1046585 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#53729}
-
- 13 Jun, 2018 1 commit
-
-
Ben L. Titzer authored
Lift the declaration of the heap allocation request list and the method which adds to the list up to AssemblerBase. Change-Id: I099260425af8cb579144998c71c538f19ba00e65 Reviewed-on: https://chromium-review.googlesource.com/1098959Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#53708}
-
- 08 Jun, 2018 1 commit
-
-
Michael Starzinger authored
This makes sure that reloc entries with WASM_STUB_CALL mode can be shared within the constant pool. Call sites to such stubs never need to be patched individually and absolute addresses of such call targets can be shared when they are put into constant pools. This applies to ARM, ARM64 and PPC architectures only. R=clemensh@chromium.org BUG=chromium:850413 Change-Id: I657248f61f122f1a3d6d30ebd14326df45f67540 Reviewed-on: https://chromium-review.googlesource.com/1091055Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#53603}
-
- 07 Jun, 2018 1 commit
-
-
Clemens Hammacher authored
Struct fields should not end in an underscore according to the style guide. Drive-by: Add {TurboAssembler} constructor which receives an {IsolateData} directly, to allow creating a {TurboAssembler} in a background thread. R=mstarzinger@chromium.org Change-Id: I32800476690f4c8619059519b7d27b06f5d4be95 Reviewed-on: https://chromium-review.googlesource.com/1090278 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#53582}
-
- 04 Jun, 2018 3 commits
-
-
Michael Starzinger authored
R=clemensh@chromium.org Change-Id: I0ea2e8db0e2b52a2edbd485d0cd52e94eea84d9e Reviewed-on: https://chromium-review.googlesource.com/1084487 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#53499}
-
Clemens Hammacher authored
The slots for imported functions are unused by now. Shrink the table to only store pointers for non-imported functions (i.e. wasm functions defined in this module). R=mstarzinger@chromium.org Change-Id: I6d13f889528b42beca73c860a800bde7a8e921ab Reviewed-on: https://chromium-review.googlesource.com/1084845Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#53493}
-
Michael Starzinger authored
This makes stack checks in WasmCode independent of the underlying Isolate by loading the limit address from the WasmInstanceObject instead of embedding it into the instruction stream. It hence removes the last use of the Isolate field from WasmGraphBuilder. Additionally this introduces the notion of a "runtime stub" which represents stub code global to the NativeModule that can be directly called from each WasmCode in the same module. These stubs can act as trampolines via which Isolate-independent WasmCode can enter other V8 builtins or runtime functions that remain Isolate-dependent. They will eventually replace the current "trampoline" in a NativeModule. R=titzer@chromium.org BUG=v8:7424 Change-Id: Ie1f5582ee656b1ab7716ea06316d6e21a0268e74 Reviewed-on: https://chromium-review.googlesource.com/1078732 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#53487}
-
- 01 Jun, 2018 1 commit
-
-
Dan Elphick authored
Pass heap directly into RelocInfo::set_target_object and its calling functions to avoid HeapObject::GetHeap(). Bug: v8:7786 Change-Id: I516b8b2d80a86ba5aba70160290e78354bb9a7b8 Reviewed-on: https://chromium-review.googlesource.com/1080548Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#53469}
-
- 30 May, 2018 1 commit
-
-
Michael Starzinger authored
R=jgruber@chromium.org Change-Id: I9925ded8cee5c620f543171b2f93abb1f954e72e Reviewed-on: https://chromium-review.googlesource.com/1078438Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#53435}
-
- 28 May, 2018 1 commit
-
-
Michael Starzinger authored
R=titzer@chromium.org Change-Id: I238835a63403e3688f271fc04f4a80c4b3c767c0 Reviewed-on: https://chromium-review.googlesource.com/1074656Reviewed-by:
Ben Titzer <titzer@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#53381}
-
- 25 May, 2018 1 commit
-
-
jgruber authored
This addresses one of the major remaining slowdowns with embedded builtins on x64. When generating code for a call to a builtin callee from a builtin caller, we'd look up the Code target object from the builtins constant list, calculate the location of the first instruction, and jump to it. Note that for embedded builtin callees, the Code object is itself only a trampoline to the off-heap code and thus an additional indirection. An example of the call sequence in pseudo-asm: // Load from the constants list. mov reg, [kRootPointer, kBuiltinsConstantListOffset] mov reg, [reg, offset_of_the_code_constant] // Calculate first instruction and call it. add reg, Code::kHeaderOffset call reg // The trampoline forwards to the off-heap area. mov kOffHeapTrampolineRegister, <off-heap instruction_start> jmp kOffHeapTrampolineRegister This CL changes calls to embedded builtin targets to use pc-relative addressing. This reduces the above instruction sequence to: call <pc-relative offset to target instruction_start> Embedded-to-embedded calls jump directly to the embedded instruction stream, bypassing the trampoline. Heap-to-embedded calls (and all calls to heap-builtins) use pc-relative addressing targeting the on-heap Code object. Other relevant platforms (arm,arm64,mips,mips64) do not use pc-relative calls. For these, we'll need a different solution, e.g. a table of embedded builtin addresses reachable from the root pointer, similar to the external reference table. Bug: v8:6666 Change-Id: Ic0317d454e2da37d74eaecebcdfcbc0d5f5041ad Reviewed-on: https://chromium-review.googlesource.com/1068732 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#53349}
-