- 14 Aug, 2018 2 commits
-
-
Benedikt Meurer authored
This adds support for unaligned load/store access to the DataView backing store and uses byteswap operations to fix up the endianess when necessary. This changes the Word32ReverseBytes operator to be a required operator and adds the missing support on the Intel and ARM platforms (on 64-bit platforms the Word64ReverseBytes operator is also mandatory now). This further improves the performance on the dataviewperf.js test mentioned in the tracking bug by up to 40%, and at the same time reduces the code complexity in the EffectControlLinearizer. Bug: chromium:225811 Change-Id: I7c1ec826faf46a144a5a9068f8f815a5fd040997 Reviewed-on: https://chromium-review.googlesource.com/1174252Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#55111}
-
Leszek Swirski authored
This reverts commit c46915b9. Reason for revert: Disasm failures https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux%20-%20debug/21727 Original change's description: > [turbofan] Further optimize DataView accesses. > > This adds support for unaligned load/store access to the DataView > backing store and uses byteswap operations to fix up the endianess > when necessary. This changes the Word32ReverseBytes operator to be > a required operator and adds the missing support on the Intel and > ARM platforms (on 64-bit platforms the Word64ReverseBytes operator > is also mandatory now). > > This further improves the performance on the dataviewperf.js test > mentioned in the tracking bug by up to 40%, and at the same time > reduces the code complexity in the EffectControlLinearizer. > > Bug: chromium:225811 > Change-Id: I296170b828c2ccc1c317ed37840b564aa14cdec2 > Reviewed-on: https://chromium-review.googlesource.com/1172777 > Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> > Reviewed-by: Sigurd Schneider <sigurds@chromium.org> > Cr-Commit-Position: refs/heads/master@{#55099} TBR=sigurds@chromium.org,bmeurer@chromium.org Change-Id: If7a62e3a1a4ad26823fcbd2ab6eb4c053ad11c49 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:225811 Reviewed-on: https://chromium-review.googlesource.com/1174171Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#55107}
-
- 13 Aug, 2018 1 commit
-
-
Benedikt Meurer authored
This adds support for unaligned load/store access to the DataView backing store and uses byteswap operations to fix up the endianess when necessary. This changes the Word32ReverseBytes operator to be a required operator and adds the missing support on the Intel and ARM platforms (on 64-bit platforms the Word64ReverseBytes operator is also mandatory now). This further improves the performance on the dataviewperf.js test mentioned in the tracking bug by up to 40%, and at the same time reduces the code complexity in the EffectControlLinearizer. Bug: chromium:225811 Change-Id: I296170b828c2ccc1c317ed37840b564aa14cdec2 Reviewed-on: https://chromium-review.googlesource.com/1172777 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#55099}
-
- 08 Aug, 2018 2 commits
-
-
Deepti Gandluri authored
Bug: v8:8005 Change-Id: I07774c23a332dac96e30d1bfe471db311de46496 Reviewed-on: https://chromium-review.googlesource.com/1166543Reviewed-by:
Bill Budge <bbudge@chromium.org> Commit-Queue: Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/master@{#54988}
-
Shiyu Zhang authored
Partial constant pool aims at reducing code size and only takes effect for shareable constants. Different from ARM’s constant pool, partial constant pool does not emit constant pools at the end of each code object. Instead, it keeps the first shareable constant inlined in the instructions and uses rip-relative memory loadings for the same constants in subsequent instructions. These rip-relative memory loadings will target at the position of the first inlined constant. For example: REX.W movq r10,0x7f9f75a32c20 ; 10 bytes … REX.W movq r10,0x7f9f75a32c20 ; 10 bytes … turns into REX.W movq r10,0x7f9f75a32c20 ; 10 bytes … REX.W movq r10,[rip+0xffffff96] ; 7 bytes … Change-Id: I25a417f6d82da96024989bddf0451d7df9340c00 Reviewed-on: https://chromium-review.googlesource.com/1082231Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Shiyu Zhang <shiyu.zhang@intel.com> Cr-Commit-Position: refs/heads/master@{#54963}
-
- 27 Jul, 2018 1 commit
-
-
Deepti Gandluri authored
Functions/variables for some atomic memory operators use type, representation interchangeably. Fix to make it consistent. Bug: v8:7754, v8:6532 Change-Id: I16ae35b72728739aee4bc67287317c2fd4a9088a Reviewed-on: https://chromium-review.googlesource.com/1152462Reviewed-by:
Bill Budge <bbudge@chromium.org> Commit-Queue: Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/master@{#54763}
-
- 25 Jul, 2018 3 commits
-
-
Marja Hölttä authored
This significantly reduces the build time when modifying wasm files: before touching all wasm headers required 684 steps to rebuild, now it's 216. BUG=v8:7754,v8:7490 TBR=clemensh@chromium.org, ulan@chromium.org, tebbi@chromium.org, verwaest@chromium.org, jgruber@chromium.org Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng Change-Id: I9003b5b73ac568a29688c5f97ec718c9de8aaaef Reviewed-on: https://chromium-review.googlesource.com/1150163 Commit-Queue: Marja Hölttä <marja@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#54699}
-
Leszek Swirski authored
This reverts commit 9d18a7fd. Reason for revert: Breaks build https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux%20-%20noi18n%20-%20debug/21856 Original change's description: > [iwyu] Remove sfi-inl.h -> wasm include > > This significantly reduces the build time when modifying wasm > files: before touching all wasm headers required 684 steps to > rebuild, now it's 216. > > BUG=v8:7754,v8:7490 > > Change-Id: Id7ff6f9063168556daad4840ee614cf68144cdb2 > Reviewed-on: https://chromium-review.googlesource.com/1145264 > Commit-Queue: Marja Hölttä <marja@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> > Reviewed-by: Clemens Hammacher <clemensh@chromium.org> > Cr-Commit-Position: refs/heads/master@{#54681} TBR=ulan@chromium.org,marja@chromium.org,titzer@chromium.org,jgruber@chromium.org,clemensh@chromium.org,tebbi@chromium.org,bmeurer@chromium.org,verwaest@chromium.org Change-Id: I3b4087916f65b16db75974dba58914c8ea377a08 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:7754, v8:7490 Reviewed-on: https://chromium-review.googlesource.com/1149920Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#54683}
-
Marja Hölttä authored
This significantly reduces the build time when modifying wasm files: before touching all wasm headers required 684 steps to rebuild, now it's 216. BUG=v8:7754,v8:7490 Change-Id: Id7ff6f9063168556daad4840ee614cf68144cdb2 Reviewed-on: https://chromium-review.googlesource.com/1145264 Commit-Queue: Marja Hölttä <marja@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#54681}
-
- 19 Jul, 2018 1 commit
-
-
Deepti Gandluri authored
Currently AtomicStores use AtomicExchange to store to memory, but AtomicExchange produces an output that is ignored by the AtomicStore visitor, a side effect of this is that a register already in use gets overwritten by the output of the exchange. BUG:v8:7602 Change-Id: I4ec3107a0a27503611e349e6f56ca9492d05d9f8 Reviewed-on: https://chromium-review.googlesource.com/1134576Reviewed-by:
Ben Smith <binji@chromium.org> Reviewed-by:
Bill Budge <bbudge@chromium.org> Commit-Queue: Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/master@{#54565}
-
- 17 Jul, 2018 1 commit
-
-
Clemens Hammacher authored
The instruction selector currently sometimes emits a lea32 with an offset of 0, which the code generator just ignores (emits no code at all). This can result in the result of TruncateInt64ToInt32 to not be zero extended. This CL fixes that by disallowing lea32 instructions with 0 offset, and fixing the instruction selector to generate a movl or just no code for that case. R=jarin@chromium.org Bug: chromium:863810, v8:7947 Change-Id: I1b21fc5f0fda9ca3144917538c3d0bbf46601c33 Reviewed-on: https://chromium-review.googlesource.com/1137825Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#54489}
-
- 10 Jul, 2018 1 commit
-
-
Michael Starzinger authored
This fixes the special stack check we emit for very large frames to no longer embed the limit address but load it from the instance object instead. It makes sure WasmCode remains independent of the Isolate. R=clemensh@chromium.org BUG=v8:7424 Change-Id: I8dc40a31a3a4de04aeb6b0b800694cce2321f837 Reviewed-on: https://chromium-review.googlesource.com/1131186Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#54360}
-
- 04 Jul, 2018 1 commit
-
-
Michael Starzinger authored
R=clemensh@chromium.org Change-Id: I756507bea262c16eb60e1c78dfb349d54633d37d Reviewed-on: https://chromium-review.googlesource.com/1124689Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#54190}
-
- 02 Jul, 2018 1 commit
-
-
Stephan Herhut authored
This change helps mostly to reduce register pressure. By default, we compile LoadStackPointer into a move from the stack register into some general purpose register and then later use that register. This might trigger a spill to free up space, which is particularly costly in loops. Change-Id: I886233f890b7833f873fc24773f621add7cf0588 Reviewed-on: https://chromium-review.googlesource.com/1104351 Commit-Queue: Stephan Herhut <herhut@chromium.org> Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#54126}
-
- 26 Jun, 2018 1 commit
-
-
Sigurd Schneider authored
We had a kRootRegisterBias on x64 before. This CL ports the feature to all other platforms as well. The root register bias is helpful to adjust the value of the root register, which allows to better utilize signed immediate offset constants in load instructions. We currently use a separate add instruction to add kRootRegisterBias in the code that initializes the root register. This could be improved by adding a custom relocation mode ensuring that instead of the root address, the root address plus the bias is inserted (and in this way the add instruction can be omitted). Bug: v8:6666 Change-Id: I55cf02ab85d11e3c6d0d83a8f7905dbf924890f1 Reviewed-on: https://chromium-review.googlesource.com/1113539 Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#54023}
-
- 19 Jun, 2018 1 commit
-
-
Tobias Tebbi authored
Bug: chromium:849098 Change-Id: Iec81d08cf6edb6040445650cadf802a34b65b8e1 Reviewed-on: https://chromium-review.googlesource.com/1092749 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#53843}
-
- 15 Jun, 2018 1 commit
-
-
jgruber authored
This reverts two commits: Introduce CodeAssembler::LoadRootsPointer 377803f8 [turbofan][x64] Reduce reg-to-reg moving instruction for LoadRootsRegister IR d4177d11 LoadRootsPointer was used by indirections for heap constants and external references from within CSA. Now that handling has moved to the macro-assembler, it can be removed. Bug: v8:6666 Change-Id: I868fe100e65a0a7a44ffc81674fa1ce79a56f7ed Reviewed-on: https://chromium-review.googlesource.com/1097080 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#53770}
-
- 14 Jun, 2018 2 commits
-
-
jgruber authored
The stack check instruction sequence is pattern-matched in instruction-selector-{ia32,x64}.cc and replaced with its own specialized opcode, for which we later generate an efficient stack check in a single instruction. But this pattern matching has never worked for CSA-generated code. The matcher expected LoadStackPointer in the right operand and the external reference load in the left operand. CSA generated exactly vice-versa. This CL does a few things; it 1. reverts the recent change to load the limit from smi roots: Revert "[csa] Load the stack limit from smi roots" This reverts commit 507c29c9. 2. tweaks the CSA instruction sequence to output what the matcher expects. 3. refactors stack check matching into a new StackCheckMatcher class. 4. typifies CSA::PerformStackCheck as a drive-by. Bug: v8:6666,v8:7844 Change-Id: I9bb879ac10bfe7187750c5f9e7834dc4accf28b5 Reviewed-on: https://chromium-review.googlesource.com/1099068Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#53737}
-
Michael Starzinger authored
This allows WebAssembly runtime stubs implemented as {WasmCode} to be called with regular stub linkage. So far we have only been able to call such stubs with WebAssembly linkage. Also switch two more on-heap builtins over to WebAssembly runtime stubs. R=clemensh@chromium.org BUG=v8:7424 Change-Id: Ifa553b5908ee27a1be780c325a114449d7fe7001 Reviewed-on: https://chromium-review.googlesource.com/1100882Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#53734}
-
- 13 Jun, 2018 1 commit
-
-
Michael Starzinger authored
This uses a WebAssembly runtime stub for the out-of-line {DoubleToI} computation instead of a builtin specific to a certain Isolate. It is another step towards making {WasmCode} independent of the Isolate. R=clemensh@chromium.org BUG=v8:7424 Change-Id: Ifdaa8e2511b67468d75e0e4aaf70010ced04a11a Reviewed-on: https://chromium-review.googlesource.com/1098672 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#53702}
-
- 08 Jun, 2018 1 commit
-
-
Kanghua Yu authored
Before: movl r10,0x1 REX.W movq [rbp-0x40],r10 After: REX.W movq [rbp-0x40],0x1 Change-Id: Iebc77e14a947fd89f7ed4702cea703c15dcb6718 Reviewed-on: https://chromium-review.googlesource.com/1092159Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#53598}
-
- 07 Jun, 2018 1 commit
-
-
Michael Starzinger authored
This makes all runtime calls compiled by Liftoff load the respective CEntry builtin from the instance object instead of embedding it into the instruction stream. Another step towards making the code independent of the originating Isolate. As a drive-by this also changes one implicit runtime call in the stack check in the TurboFan backend in a similar fashion. R=clemensh@chromium.org BUG=v8:7424 Change-Id: Ifab5995aa95250d6fae60ef5debb98aee2b6fc0c Reviewed-on: https://chromium-review.googlesource.com/1089067 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#53578}
-
- 06 Jun, 2018 2 commits
-
-
Michael Starzinger authored
This avoids embedding {RelocInfo::CODE_TARGET} addresses into WasmCode by calling a WebAssembly runtime stub instead. The stubs themselves are not yet independent of the Isolate, but will be made so soon. Note that this also introduces a proper {compiler::TrapId} to avoid accidental parameter type confusion with {TrapIf} and {TrapUnless} operators. R=clemensh@chromium.org BUG=v8:7424 Change-Id: I32ef5a1253f336fc739d2192247826e9458456df Reviewed-on: https://chromium-review.googlesource.com/1086937Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#53557}
-
Igor Sheludko authored
In order to port CompileLazy and DeserializeLazy builtins to CSA we need to support this mode to be able to tail call to compiled or deserialized JS code object. Bug: v8:5269, v8:7703 Change-Id: I6abdc989af16774f6454b2ea0a97b1ce5ece5125 Reviewed-on: https://chromium-review.googlesource.com/1087452Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#53543}
-
- 05 Jun, 2018 1 commit
-
-
Michael Starzinger authored
This removes the obsolete support to create {WASM_COMPILED} stack frames within the out-of-line trap handler code. All trapping code needs to push such a frame on entry by now, because the instance object is pushed implicitly as part of the prologue. Deferred frame building would not have access to a valid instance object. R=clemensh@chromium.org Change-Id: I96ac37fa00c527e6395a018c653c8ef85c70d04f Reviewed-on: https://chromium-review.googlesource.com/1085465Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#53509}
-
- 04 Jun, 2018 1 commit
-
-
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}
-
- 28 May, 2018 1 commit
-
-
Igor Sheludko authored
The result of SmiUntag is a sign-extended word-size value. Bug: v8:7703 Change-Id: I85dc87b541cab78286e47e2147c16c6a0939f509 Reviewed-on: https://chromium-review.googlesource.com/1073232Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#53389}
-
- 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}
-
- 16 May, 2018 1 commit
-
-
Andreas Haas authored
In WebAssembly benchmarks I saw Binop instructions with 6 inputs. We don't know how many inputs there can actually be, so we conservatively increase the number to 8 now. R=jarin@chromium.org Bug=chromium:842501 Change-Id: Id087481e7e524006c2f03fc545f9e35d1cad1fe8 Reviewed-on: https://chromium-review.googlesource.com/1061114Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#53207}
-
- 15 May, 2018 1 commit
-
-
Kanghua Yu authored
On IA architecture, arithmetic and shifting operations set the flags according to the computation result. subl rsi,0x1 REX.W movq rbx,[rbx+0x17] cmpl rsi, 0 <-- TO BE REDUCED jnz 0x3f54d2dcef0 ==> REX.W movq rbx,[rbx+0x17] subl rsi,0x1 jnz 0x3f54d2dcef0 & orl rdx,rbx cmpl rdx,0x0 <-- TO BE REDUCED jnz 0x3f54d22b0f5 ==> orl rdx,rbx jnz 0x3f54d22b0f5 Bug: chromium:842497, chromium:842501 Change-Id: I4e2c40861b76ac3f508b01ee27249e85eab3222f Reviewed-on: https://chromium-review.googlesource.com/1057351Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Kanghua Yu <kanghua.yu@intel.com> Cr-Commit-Position: refs/heads/master@{#53171}
-
- 14 May, 2018 2 commits
-
-
Andreas Haas authored
The clusterfuzz issue crashes because VisitBinops expected only but 4 input operands but in the generated graph 5 input operands get created The issue is fixed by increasing the size of the input operand buffer. R=jarin@chromium.org Bug: chromium:842501 Change-Id: I4bbb09a968e165e6f5a0a02d06eee97333f7aa38 Reviewed-on: https://chromium-review.googlesource.com/1056989Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#53147}
-
Benedikt Meurer authored
This reverts commit 42334363. Reason for revert: Seems to lead to floating point exceptions, i.e. with this code: ```js __v_0 = 'x'.repeat(); var __f_1 = (function __f_0() { "use asm"; function __f_1(__v_5, __v_0) { __v_5 = __v_5 | 0; __v_0 = __v_0 | 0; return ((__v_5 >>> 4) % (__v_0 >>> 1073741824)) | -1073741825; } return { __f_1: __f_1 }; })().__f_1; for (var __v_5 = 0; __v_5 < 4294967296; __v_5 += 3999773) {__v_5 % __v_0 | 0, __f_1(); } ``` Running with UBSan via `d8-ubsan-vptr-linux-release-v8-component-53134/d8 --random-seed=54105979 --disable-in-process-stack-traces --stress-marking=100 fuzz-02382.js` Original change's description: > [turbofan][x64] Reduce compare-zero followed by flags-setting binop > > On IA architecture, arithmetic and shifting operations set the flags > according to the computation result. > > subl rsi,0x1 > REX.W movq rbx,[rbx+0x17] > cmpl rsi, 0 <-- TO BE REDUCED > jnz 0x3f54d2dcef0 > ==> > REX.W movq rbx,[rbx+0x17] > subl rsi,0x1 > jnz 0x3f54d2dcef0 > & > orl rdx,rbx > cmpl rdx,0x0 <-- TO BE REDUCED > jnz 0x3f54d22b0f5 > ==> > orl rdx,rbx > jnz 0x3f54d22b0f5 > > Change-Id: If69c023712212ad7b9fa8b29f4b98274f7885e35 > Reviewed-on: https://chromium-review.googlesource.com/1051445 > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> > Commit-Queue: Kanghua Yu <kanghua.yu@intel.com> > Cr-Commit-Position: refs/heads/master@{#53118} TBR=bmeurer@chromium.org,kanghua.yu@intel.com # Not skipping CQ checks because original CL landed > 1 day ago. Change-Id: I8a177b9268a2fefcd6877d8f33134e7e0c980926 Reviewed-on: https://chromium-review.googlesource.com/1057067Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#53137}
-
- 11 May, 2018 1 commit
-
-
Kanghua Yu authored
On IA architecture, arithmetic and shifting operations set the flags according to the computation result. subl rsi,0x1 REX.W movq rbx,[rbx+0x17] cmpl rsi, 0 <-- TO BE REDUCED jnz 0x3f54d2dcef0 ==> REX.W movq rbx,[rbx+0x17] subl rsi,0x1 jnz 0x3f54d2dcef0 & orl rdx,rbx cmpl rdx,0x0 <-- TO BE REDUCED jnz 0x3f54d22b0f5 ==> orl rdx,rbx jnz 0x3f54d22b0f5 Change-Id: If69c023712212ad7b9fa8b29f4b98274f7885e35 Reviewed-on: https://chromium-review.googlesource.com/1051445Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Kanghua Yu <kanghua.yu@intel.com> Cr-Commit-Position: refs/heads/master@{#53118}
-
- 09 May, 2018 1 commit
-
-
Clemens Hammacher authored
The {CommentOperator}, used for implementing the --code-comments flag, is not UBSan-safe. This CL fixes this and adds a test which uses code comments. R=bmeurer@chromium.org Bug: v8:7744 Change-Id: Ia6ec509e77d998df085ac7377cb24854354e3aa2 Reviewed-on: https://chromium-review.googlesource.com/1051235 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#53100}
-
- 07 May, 2018 1 commit
-
-
Kanghua Yu authored
This eliminates one instruction for following pattern: movl rX, rY // TruncateInt64ToInt32 subl rX, imm32 ==> leal rX, [rY - imm32] R=bmeurer@chromium.org Change-Id: I4164e1407f5953302051e905555da14d3ca6680a Reviewed-on: https://chromium-review.googlesource.com/1046381Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Kanghua Yu <kanghua.yu@intel.com> Cr-Commit-Position: refs/heads/master@{#53021}
-
- 02 May, 2018 2 commits
-
-
Deepti Gandluri authored
Bug: v8:6532, v8:7570 Change-Id: Ieca502a6a13449ea65e47fb43f0e3d7cb5a09a7d Reviewed-on: https://chromium-review.googlesource.com/1031176 Commit-Queue: Deepti Gandluri <gdeepti@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#52926}
-
Pierre Langlois authored
In order to keep track of where the return address is stored in each block, the UnwindingInfoWriter needs to know if a block exits the current function. However, we would only mark returns and tail-calls as exists, while we also have kArchDebugAbort, kArchThrowTerminator and kArchDeoptimize. This would lead to assertions when generating the snapshot in debug mode with `v8_perf_prof_unwinding_info = true`. Bug: v8:7660 Change-Id: Iee2ab222251f6922dd21442e12cbb6b56534bf54 Reviewed-on: https://chromium-review.googlesource.com/1019504Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Pierre Langlois <pierre.langlois@arm.com> Cr-Commit-Position: refs/heads/master@{#52906}
-
- 30 Apr, 2018 1 commit
-
-
Jaroslav Sevcik authored
The idea is to mark all the branches and loads participating in array bounds checks, and let them contribute-to/use the poisoning register. In the code, the marks for array indexing operations now contain "Critical" in their name. By default (--untrusted-code-mitigations), we only instrument the "critical" operations with poisoning. With that in place, we also remove the array masking approach based on arithmetic. Since we do not propagate the poison through function calls, we introduce a node for poisoning an index that is passed through function call - the typical example is the bounds-checked index that is passed to the CharCodeAt builtin. Most of the code in this CL is threads through the three levels of protection (safe, critical, unsafe) for loads, branches and flags. Bug: chromium:798964 Change-Id: Ief68e2329528277b3ba9156115b2a6dcc540d52b Reviewed-on: https://chromium-review.googlesource.com/995413 Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#52883}
-
- 26 Apr, 2018 2 commits
-
-
jgruber authored
This is a reland of f5d30851 Original change's description: > [builtins] Introduce further constant & external reference indirections > > This introduces further indirections for embedded constants and > external references for builtins generated by the macro-assembler. > The used mechanisms (LookupConstant and LookupExternalReference) are > identical to what we already use in CSA. > > Almost all builtins are now isolate-independent in both release and > debug modes. snapshot_blob.bin is roughly 670K smaller in embedded > builds vs. non-embedded builds, while libv8.so is roughly 280K larger. > > Bug: v8:6666 > Change-Id: I7a6c2193ef5a763e6cf7543dd51597d6fff6c110 > Reviewed-on: https://chromium-review.googlesource.com/1006581 > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Cr-Commit-Position: refs/heads/master@{#52810} TBR=mstarzinger@chromium.org Bug: v8:6666 Change-Id: I73dfe207f2c5f79a9a06c165c75f5619e88a5a17 Reviewed-on: https://chromium-review.googlesource.com/1030550Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#52819}
-
jgruber authored
This reverts commit f5d30851. Breakages: https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20noi18n%20-%20debug/builds/20370 https://build.chromium.org/p/client.v8/builders/V8%20Linux64%20-%20custom%20snapshot%20-%20debug/builds/21174 TBR=yangguo@chromium.org No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:6666 Change-Id: Ic4d28fccf647aadcac0a60430b7fb66d22ce4577 Reviewed-on: https://chromium-review.googlesource.com/1030431Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#52813}
-