- 25 Feb, 2019 1 commit
-
-
Benedikt Meurer authored
We'll need one bit in the SharedFunctionInfo::flags to record whether it's safe to skip arguments adaptor frames (for v8:8895), so this just removes the SharedFunctionInfo::IsDerivedConstructorBit which is redundant, since the same information is already available in the SharedFunctionInfo::FunctionKindBits, and most places in the code use that already, with the exception of the JSConstructStubGeneric builtin. This changes the JSConstructStubGeneric builtin to just check the function kind instead of testing the explicit bit, which also makes this more consistent. It seems like there's not much overhead to that, doing an additional bitmasking plus two comparisons instead of one. This shouldn't really matter since invocation and execution of the constructors is going to dominate and optimized code inlines all of this anyways. If this turns out to affect performance, we can still look into encoding the FunctionKindBits more cleverly. Drive-by-fix: Move the FunctionKindBits first in the flags to avoid the shift when accessing the function kind. This seems logic, since for the actual boolean bit fields it doesn't matter where they are in the flags, whereas for the function kind this saves one shift. Bug: v8:8834, v8:8895 Change-Id: I184a8f5cc5c140bdc272cf9a5ad546093c457306 Reviewed-on: https://chromium-review.googlesource.com/c/1482915Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#59821}
-
- 21 Feb, 2019 1 commit
-
-
Benedikt Meurer authored
In the Crankshaft days we (mis)used the Representation to also express the various internal representations that the compiler understands. But with TurboFan we now have proper MachineRepresentation and MachineType, which do that independently. So there's no need to have this in the Representation class anymore, and instead the Representation class only needs to deal with the field representations. Bug: v8:8749, v8:8834, v8:8865 Change-Id: I34ea9558b5fdf20d6c7939b52762eaffd4316b06 Reviewed-on: https://chromium-review.googlesource.com/c/1479954 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#59750}
-
- 15 Feb, 2019 1 commit
-
-
Jakob Kummerow authored
This takes heap-inl.h out of the "Giant Include Cluster". Naturally, that means adding a bunch of explicit includes in a bunch of places that relied on transitively including them before. As of this patch, no header file outside src/heap/ includes heap-inl.h. Bug: v8:8562,v8:8499 Change-Id: I65fa763f90e66afc30d105b9277792721f05a6d4 Reviewed-on: https://chromium-review.googlesource.com/c/1459659 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#59617}
-
- 05 Feb, 2019 1 commit
-
-
Junliang Yan authored
Change-Id: I59b14188682b5d8843a732aaebf1cc3a4403f7f8 Reviewed-on: https://chromium-review.googlesource.com/c/1454760Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Junliang Yan <jyan@ca.ibm.com> Cr-Commit-Position: refs/heads/master@{#59374}
-
- 17 Jan, 2019 1 commit
-
-
Clemens Hammacher authored
and TurboAssembler. Instead of listing all the different combinations of arguments (which is one more now, temporarily), just forward all arguments down via MacroAssembler and TurboAssembler to TurboAssemblerBase. Interestingly, this requires more specific types sometimes (int instead of size_t), since further down the forwarding chain, the compiler does not recognize any more that the value is a constant, and emits a warning about a possibly truncating implicit conversion. R=mstarzinger@chromium.org Bug: v8:8689, v8:8562 Change-Id: Ifd13d2210ee64251c0075c0d9b68cacd5107d9ab Reviewed-on: https://chromium-review.googlesource.com/c/1414913Reviewed-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@{#58869}
-
- 08 Jan, 2019 1 commit
-
-
Ross McIlroy authored
Remove the use of a jump table in the prologue of the deopt entries and instead pass the bailout id explicitly in a register when calling the deopt entry routine from optimized code. This unifies the logic with the way the Arm64 code works. It saves the following amount of memory in code stubs: - arm: 384KB - ia32: 480KB - x64: 240KB This could be offset by a slight increase in the size of optimized code for loading the immediate, however this impact should be minimal and will scale with the maximum number of bailout ids (e.g., the size of code will increase by one instruction per bailout id on Arm, therefore ~98,000 bailouts will be needed before the overhead is greater than the current fixed table size). Change-Id: I838604b48fa04cbd45320c7b9dac0de08fd8eb25 Reviewed-on: https://chromium-review.googlesource.com/c/1398224 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#58636}
-
- 21 Dec, 2018 1 commit
-
-
Jakob Gruber authored
This CL does two things: 1. It introduces Call/JumpCodeObject as the bottleneck for all calls to non-heap-constant Code objects; and 2. it dispatches directly to the off-heap entry point for all embedded code. Codegen at runtime remains unchanged to preserve the shorter, branch-less calling sequence. Bug: v8:7777 Change-Id: I15fdcb51625209904c6a56737f085a23219319b9 Reviewed-on: https://chromium-review.googlesource.com/c/1382461 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#58440}
-
- 17 Dec, 2018 2 commits
-
-
Jakob Gruber authored
This changes Torque's builtin pointers to use a Smi representation underneath instead of storing the Code target object. Callsites look up the target entry point through IsolateData::builtin_entry_table. The notable effect of this CL is that builtin pointer calls no longer call any on-heap Code. Bug: v8:7777 Change-Id: Ibf6c749dd46cae7aba51494b09921229dd436f63 Reviewed-on: https://chromium-review.googlesource.com/c/1379880 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#58286}
-
Jakob Gruber authored
Currently, Torque's builtin pointers store a Code target underneath and callsites generate a kArchCallCodeObject opcode. When embedded builtins are enabled, the call thus first calls the on-heap trampoline, which finally jumps to the target off-heap builtin code. This will no longer be possible in jitless mode, since on-heap code must not be executable. As a step towards changing the way builtin pointers are called (function pointers will hold the builtin index as a Smi, and callsites look up the off-heap target address and jump there), this CL adds a dedicated opcode for builtin pointer calls to the compiler pipeline. The calling mechanism itself is unchanged, changes there will happen in a follow-up. Drive-by: rename 'FunctionPointer' in torque/ to 'BuiltinPointer'. Bug: v8:7777 Change-Id: Ic999a1cd7c3172425dd4a1513ae2f50c774faddb Reviewed-on: https://chromium-review.googlesource.com/c/1378175Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#58281}
-
- 11 Dec, 2018 1 commit
-
-
Jakob Gruber authored
This: - documents removal of Code's stub key field. - removes SerializedCodeData's CodeStubKeys field. - removes masm's custom self-reference marker mechanism. Bug: v8:7777 Change-Id: Ie5c51bc895e508acdeb3994cf5558a2cf4c21540 Reviewed-on: https://chromium-review.googlesource.com/c/1367744 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#58145}
-
- 07 Dec, 2018 4 commits
-
-
Jakob Gruber authored
This is a reland of f849396c Original change's description: > [nojit] Remove code stubs > > All stubs have been migrated to builtins. This CL removes most related > code. > > Bug: v8:7777, v8:5784 > Change-Id: I4470cfef34788e6c8e0fd5fd09e40e250d088dad > Reviewed-on: https://chromium-review.googlesource.com/c/1365284 > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Reviewed-by: Yang Guo <yangguo@chromium.org> > Cr-Commit-Position: refs/heads/master@{#58093} Tbr: mstarzinger@chromium.org,yangguo@chromium.org,jkummerow@chromium.org,bmeurer@chromium.org Bug: v8:7777, v8:5784 Change-Id: I005ee2a820d49a75a90481d262a310e4ccfd1391 Reviewed-on: https://chromium-review.googlesource.com/c/1367746Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#58101}
-
Jakob Gruber authored
This reverts commit f849396c. Reason for revert: arm64: https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux%20-%20arm64%20-%20sim%20-%20MSAN/24229 Original change's description: > [nojit] Remove code stubs > > All stubs have been migrated to builtins. This CL removes most related > code. > > Bug: v8:7777, v8:5784 > Change-Id: I4470cfef34788e6c8e0fd5fd09e40e250d088dad > Reviewed-on: https://chromium-review.googlesource.com/c/1365284 > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Reviewed-by: Yang Guo <yangguo@chromium.org> > Cr-Commit-Position: refs/heads/master@{#58093} TBR=jkummerow@chromium.org,yangguo@chromium.org,mstarzinger@chromium.org,jarin@chromium.org,jgruber@chromium.org,bmeurer@chromium.org Change-Id: I52c3abd3f4e5872fe26ed7e527a58b118e02b387 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:7777, v8:5784 Reviewed-on: https://chromium-review.googlesource.com/c/1367804Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#58095}
-
Jakob Gruber authored
All stubs have been migrated to builtins. This CL removes most related code. Bug: v8:7777, v8:5784 Change-Id: I4470cfef34788e6c8e0fd5fd09e40e250d088dad Reviewed-on: https://chromium-review.googlesource.com/c/1365284 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#58093}
-
Jakob Gruber authored
This migrates the JSEntryStub to three dedicated builtins: JSEntry JSConstructEntry JSRunMicrotasksEntry Drive-by: Tweaks to make the code isolate-independent (e.g. using the correct macro assembler method to load and store external references through the kRootRegister). Drive-by: The context slot on x64/ia32 must be set up after kRootRegister is initialized, so we first reserve the slot and later load its value. Drive-by: Update all remaining comments referencing JSEntryStub. Bug: v8:7777 Change-Id: Ie3ba17ffb3bde6f18ec1d26d778b258719b2d4ef Reviewed-on: https://chromium-review.googlesource.com/c/1365275Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#58088}
-
- 05 Dec, 2018 1 commit
-
-
Jakob Gruber authored
Drive-by: Replace uses in CallApi* with a direct call now that they've been converted to builtins themselves and are thus immovable. Bug: v8:7777 Change-Id: I660b5788bdac4f5e45cc5c5677b86be17474cd83 Reviewed-on: https://chromium-review.googlesource.com/c/1361161 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#58037}
-
- 29 Nov, 2018 2 commits
-
-
Peter Marshall authored
This is a reland of d5f4a33e Landing with test disabled for now. Original change's description: > [cpu-profiler] Fix stack iterability for fast C calls with no exit frame > > Before fast C calls, store the current FP and PC on the isolate. When > iterating frames in SafeStackFrameIterator, check if these fields are > set and start iterating at the calling frame's FP instead of the current > FP, which will be in C++ code. We need to do this because c_entry_fp is > not set on the Isolate for Fast-C-Calls because we don't build an exit > frame. > > This change makes stack samples that occur within 'Fast-C-Calls' > iterable, meaning we can properly attribute ticks within the JS caller. > > Fast-C-Calls can't call back into JS code, so we can only ever have one > such call on the stack at a time, allowing us to store the FP on the > isolate rather than the stack. > > TBR=v8-mips-ports@googlegroups.com > > Bug: v8:8464, v8:7202 > Change-Id: I7bf39eba779dad34754d5759d741c421b362a406 > Reviewed-on: https://chromium-review.googlesource.com/c/1340241 > Commit-Queue: Peter Marshall <petermarshall@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Martyn Capewell <martyn.capewell@arm.com> > Reviewed-by: Alexei Filippov <alph@chromium.org> > Cr-Commit-Position: refs/heads/master@{#57896} TBR=v8-mips-ports@googlegroups.com TBR=jgruber@chromium.org Bug: v8:8464, v8:7202 Change-Id: I260d5ab3bc12c9c4529fb52a297a1040dcaa8ebf Reviewed-on: https://chromium-review.googlesource.com/c/1354466 Commit-Queue: Peter Marshall <petermarshall@chromium.org> Reviewed-by:
Peter Marshall <petermarshall@chromium.org> Cr-Commit-Position: refs/heads/master@{#57935}
-
Michael Achenbach authored
This reverts commit ddaa1f0a. Reason for revert: Still flaky on windows. Maybe reland and keep skipped on windows? https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Win32%20-%20nosnap%20-%20shared/31002 https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Win64/27826 Original change's description: > Reland "[cpu-profiler] Fix stack iterability for fast C calls with no exit frame" > > This is a reland of d5f4a33e > > Original change's description: > > [cpu-profiler] Fix stack iterability for fast C calls with no exit frame > > > > Before fast C calls, store the current FP and PC on the isolate. When > > iterating frames in SafeStackFrameIterator, check if these fields are > > set and start iterating at the calling frame's FP instead of the current > > FP, which will be in C++ code. We need to do this because c_entry_fp is > > not set on the Isolate for Fast-C-Calls because we don't build an exit > > frame. > > > > This change makes stack samples that occur within 'Fast-C-Calls' > > iterable, meaning we can properly attribute ticks within the JS caller. > > > > Fast-C-Calls can't call back into JS code, so we can only ever have one > > such call on the stack at a time, allowing us to store the FP on the > > isolate rather than the stack. > > > > TBR=v8-mips-ports@googlegroups.com > > > > Bug: v8:8464, v8:7202 > > Change-Id: I7bf39eba779dad34754d5759d741c421b362a406 > > Reviewed-on: https://chromium-review.googlesource.com/c/1340241 > > Commit-Queue: Peter Marshall <petermarshall@chromium.org> > > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > > Reviewed-by: Martyn Capewell <martyn.capewell@arm.com> > > Reviewed-by: Alexei Filippov <alph@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#57896} > > TBR=v8-mips-ports@googlegroups.com > TBR=jgruber@chromium.org > > Bug: v8:8464, v8:7202 > Change-Id: I5f37ded4ea572e8e9890ba186aa3d74a0dfc1274 > Reviewed-on: https://chromium-review.googlesource.com/c/1354042 > Reviewed-by: Peter Marshall <petermarshall@chromium.org> > Commit-Queue: Peter Marshall <petermarshall@chromium.org> > Cr-Commit-Position: refs/heads/master@{#57912} TBR=alph@chromium.org,jgruber@chromium.org,petermarshall@chromium.org,martyn.capewell@arm.com,v8-arm-ports@googlegroups.com,v8-mips-ports@googlegroups.com,ibogosavljevic@wavecomp.com Change-Id: If810648dbf60df2ff70455b6e8ef466136c90145 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:8464, v8:7202 Reviewed-on: https://chromium-review.googlesource.com/c/1354461Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Commit-Queue: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#57925}
-
- 28 Nov, 2018 3 commits
-
-
Peter Marshall authored
This is a reland of d5f4a33e Original change's description: > [cpu-profiler] Fix stack iterability for fast C calls with no exit frame > > Before fast C calls, store the current FP and PC on the isolate. When > iterating frames in SafeStackFrameIterator, check if these fields are > set and start iterating at the calling frame's FP instead of the current > FP, which will be in C++ code. We need to do this because c_entry_fp is > not set on the Isolate for Fast-C-Calls because we don't build an exit > frame. > > This change makes stack samples that occur within 'Fast-C-Calls' > iterable, meaning we can properly attribute ticks within the JS caller. > > Fast-C-Calls can't call back into JS code, so we can only ever have one > such call on the stack at a time, allowing us to store the FP on the > isolate rather than the stack. > > TBR=v8-mips-ports@googlegroups.com > > Bug: v8:8464, v8:7202 > Change-Id: I7bf39eba779dad34754d5759d741c421b362a406 > Reviewed-on: https://chromium-review.googlesource.com/c/1340241 > Commit-Queue: Peter Marshall <petermarshall@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Martyn Capewell <martyn.capewell@arm.com> > Reviewed-by: Alexei Filippov <alph@chromium.org> > Cr-Commit-Position: refs/heads/master@{#57896} TBR=v8-mips-ports@googlegroups.com TBR=jgruber@chromium.org Bug: v8:8464, v8:7202 Change-Id: I5f37ded4ea572e8e9890ba186aa3d74a0dfc1274 Reviewed-on: https://chromium-review.googlesource.com/c/1354042Reviewed-by:
Peter Marshall <petermarshall@chromium.org> Commit-Queue: Peter Marshall <petermarshall@chromium.org> Cr-Commit-Position: refs/heads/master@{#57912}
-
Maya Lekova authored
This reverts commit d5f4a33e. Reason for revert: Seems to cause a no snapshot build failure - https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux%20-%20nosnap%20-%20debug/21967 Original change's description: > [cpu-profiler] Fix stack iterability for fast C calls with no exit frame > > Before fast C calls, store the current FP and PC on the isolate. When > iterating frames in SafeStackFrameIterator, check if these fields are > set and start iterating at the calling frame's FP instead of the current > FP, which will be in C++ code. We need to do this because c_entry_fp is > not set on the Isolate for Fast-C-Calls because we don't build an exit > frame. > > This change makes stack samples that occur within 'Fast-C-Calls' > iterable, meaning we can properly attribute ticks within the JS caller. > > Fast-C-Calls can't call back into JS code, so we can only ever have one > such call on the stack at a time, allowing us to store the FP on the > isolate rather than the stack. > > TBR=v8-mips-ports@googlegroups.com > > Bug: v8:8464, v8:7202 > Change-Id: I7bf39eba779dad34754d5759d741c421b362a406 > Reviewed-on: https://chromium-review.googlesource.com/c/1340241 > Commit-Queue: Peter Marshall <petermarshall@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Martyn Capewell <martyn.capewell@arm.com> > Reviewed-by: Alexei Filippov <alph@chromium.org> > Cr-Commit-Position: refs/heads/master@{#57896} TBR=alph@chromium.org,jgruber@chromium.org,petermarshall@chromium.org,martyn.capewell@arm.com,v8-arm-ports@googlegroups.com,v8-mips-ports@googlegroups.com,ibogosavljevic@wavecomp.com Change-Id: I85f846e57b6fa845e7770c616435cebffdb2a245 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:8464, v8:7202 Reviewed-on: https://chromium-review.googlesource.com/c/1352302Reviewed-by:
Maya Lekova <mslekova@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#57899}
-
Peter Marshall authored
Before fast C calls, store the current FP and PC on the isolate. When iterating frames in SafeStackFrameIterator, check if these fields are set and start iterating at the calling frame's FP instead of the current FP, which will be in C++ code. We need to do this because c_entry_fp is not set on the Isolate for Fast-C-Calls because we don't build an exit frame. This change makes stack samples that occur within 'Fast-C-Calls' iterable, meaning we can properly attribute ticks within the JS caller. Fast-C-Calls can't call back into JS code, so we can only ever have one such call on the stack at a time, allowing us to store the FP on the isolate rather than the stack. TBR=v8-mips-ports@googlegroups.com Bug: v8:8464, v8:7202 Change-Id: I7bf39eba779dad34754d5759d741c421b362a406 Reviewed-on: https://chromium-review.googlesource.com/c/1340241 Commit-Queue: Peter Marshall <petermarshall@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Martyn Capewell <martyn.capewell@arm.com> Reviewed-by:
Alexei Filippov <alph@chromium.org> Cr-Commit-Position: refs/heads/master@{#57896}
-
- 26 Nov, 2018 1 commit
-
-
Jakob Gruber authored
The ProfileEntryHookStub is no longer used and can be removed. Bug: v8:7777, v8:8503 Change-Id: I4ccd75d38cfee3e7963338d5d8213915db9be4a9 Reviewed-on: https://chromium-review.googlesource.com/c/1349191 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#57823}
-
- 23 Nov, 2018 1 commit
-
-
George Wort authored
This implements AssertUnreachable for the arm32 port of Liftoff. Bug: v8:6600 Change-Id: I9aa5083dc1be175fc5f2f386d8aace021bab3b03 Reviewed-on: https://chromium-review.googlesource.com/c/1346335 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#57767}
-
- 16 Nov, 2018 2 commits
-
-
Clemens Hammacher authored
The platform specific macro assembler headers can not be included directly. They require symbols declared in macro-assembler.h. We also cannot include macro-assembler.h from the platform specific headers, because that would form a cycle, and the include in macro-assembler.h would be skipped, which then also fails. This CL documents and enforces this unfortunate situation. This helps with further iwyu cleanups. Note that current code which includes the platform specific headers only works because we transitively included macro-assembler.h already before. R=mstarzinger@chromium.org Bug: v8:8238, v8:7490 Change-Id: I2dc65ad950400941406e1f2f8969d0d15f524bf8 Reviewed-on: https://chromium-review.googlesource.com/c/1340240 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#57578}
-
Jakob Gruber authored
This pulls both classes into a dedicated file. InstructionStream may be removed in a follow-up. Tbr: mlippautz@chromium.org Bug: v8:6666 Change-Id: Ibd374eba25cebf7495390ec13f6b4aeac5e1dc01 Reviewed-on: https://chromium-review.googlesource.com/c/1337738Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#57562}
-
- 09 Nov, 2018 1 commit
-
-
Jakob Gruber authored
This is only used by ProfileEntryHookStub. For builtins, this also needs to go through an indirection. Bug: v8:6666 Change-Id: I088fa472e2d365ccfb2d027bfbdad182ffae487e Reviewed-on: https://chromium-review.googlesource.com/c/1326025Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#57379}
-
- 07 Nov, 2018 1 commit
-
-
Igor Sheludko authored
because otherwise cleared weak references require special treatment during decompression. Bug: v8:7703 Change-Id: I38761d656c606e7ba7fc3075dffbd855a9f72302 Reviewed-on: https://chromium-review.googlesource.com/c/1322909 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by:
Marja Hölttä <marja@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#57315}
-
- 05 Nov, 2018 1 commit
-
-
Jakob Kummerow authored
and split Smi out of objects.h into smi.h. Bug: v8:3770, v8:5402 Change-Id: I5ff7461495d29c785a76c79aca2616816a29ab1e Reviewed-on: https://chromium-review.googlesource.com/c/1313035Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Hannes Payer <hpayer@chromium.org> Reviewed-by:
Adam Klein <adamk@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#57252}
-
- 25 Oct, 2018 2 commits
-
-
Michael Starzinger authored
This adds support for having reference type values (i.e. anyref) stored in an exception. It is the natural combination of the reference type proposal and the exception handling proposal. Note that this also introduces support for having write barriers in generated WasmCode, as this is the first time we are storing references within generated code. Such write barriers will be needed for other uses of reference types (e.g. mutable global) regardless. R=clemensh@chromium.org TEST=mjsunit/wasm/exceptions-anyref BUG=v8:8341 Change-Id: I1211d4a850954622cb873eede0b4024fecc3dd8b Reviewed-on: https://chromium-review.googlesource.com/c/1296484 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#56995}
-
Igor Sheludko authored
Bug: v8:8182 Change-Id: I4dadd9cab071ecd4314c370be5f444e36acb708e Reviewed-on: https://chromium-review.googlesource.com/c/1297317Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#56973}
-
- 19 Oct, 2018 1 commit
-
-
Sigurd Schneider authored
Drive-by: Eliminate unnecessary includes to src/assembler.h. Bug: v8:8238 Change-Id: Ia0408b993b8b1c21a76c947f406f96b63fe41994 Reviewed-on: https://chromium-review.googlesource.com/c/1288810Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#56817}
-
- 17 Oct, 2018 1 commit
-
-
Jakob Gruber authored
Some confusion has crept in over time, specifically around the distinction between an offset to an external reference's address and an offset to its entry in the external reference table. This CL unifies naming and interfaces. Drive-by: Fix formatting in macro-assembler-x64. Bug: v8:6666 Change-Id: Iade98ca28a7304aba0254b92b553343826a08e41 Reviewed-on: https://chromium-review.googlesource.com/c/1286674 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#56741}
-
- 11 Oct, 2018 1 commit
-
-
Benedikt Meurer authored
This JSAsyncFunctionObject represents the implicit generator object inside of async functions, and also holds the outer promise for the async functions. This in turn allows us to get rid of the .promise in the Parser / BytecodeGenerator completely, and will make it possible to build zero-cost async stack traces independent of the concrete synchronous part of the stack frame (which currently breaks in Node.js). In the bytecode all the async function operations now take this new JSAsyncFunctionObject instead of passing both the .generator_object and the .promise, which further simplifies and shrinks the bytecode. It also reduces the size of async function frames, potentially making the suspend/resume cheaper. This also changes `await` to use intrinsics instead of calling to special JSFunctions on the native context, and thus reduces the size of the native contexts. Drive-by-fix: Introduce a dedicated JSCreateAsyncFunctionObject operator to TurboFan. Bug: v8:7253, v8:7522 Change-Id: I2305302285156aa1f71328ecac70377abdd92c80 Ref: nodejs/node#11865 Design-Document: http://bit.ly/v8-zero-cost-async-stack-traces Reviewed-on: https://chromium-review.googlesource.com/c/1273049 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Sathya Gunasekaran <gsathya@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Reviewed-by:
Maya Lekova <mslekova@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#56554}
-
- 10 Oct, 2018 1 commit
-
-
Igor Sheludko authored
... and remove Heap::RootCanBeWrittenAfterInitialization() and Heap::RootCanBeTreatedAsConstant() in favour of RootsTable::IsImmortalImmovable(). Bug: v8:8238 Change-Id: I804d06136de9584b8c4940fd8ab9d18fb3ef7980 Reviewed-on: https://chromium-review.googlesource.com/c/1270837 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#56500}
-
- 20 Sep, 2018 1 commit
-
-
Igor Sheludko authored
and introduce RootsTable - a V8 heap roots storage. So, the renaming part looks like this: Heap::RootListIndex -> RootIndex Heap::kBlahBlahRootIndex -> RootIndex::kBlahBlah Bug: v8:8015, v8:8182 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I38e1f3e3f6813ef35e37b0bed35e9ae14a62134f Reviewed-on: https://chromium-review.googlesource.com/1234613Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Hannes Payer <hpayer@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#56067}
-
- 03 Sep, 2018 1 commit
-
-
jgruber authored
The isolate can be efficiently loaded through other means: either as a root-relative load (if embedded builtins are enabled), or as an embedded external reference (i.e. the absolute pointer is included in the instruction stream) otherwise. The generated code should be at least as fast as previously. On x64 (with embedded builtins): Before: // Register moves in prologue: 0x7f47a6b4860a a 488955e0 REX.W movq [rbp-0x20],rdx // And the load from a stack slot at each use-site. 0x7f47a6b486f2 f2 488b7de0 REX.W movq rdi,[rbp-0x20] After: // Each use-site just loads a root-relative offset. 0x7f1645fcc6ce ee 498dbd38ffffff REX.W leaq rdi,[r13-0xc8] On ia32 (no embedded builtins), before: 0x5c608930 10 8955f0 mov [ebp-0x10],edx 0x5c6089fb db 891424 mov [esp],edx After: 0x41d0898d 8d b80033b156 mov eax,0x56b13300 Removal reduces register pressure, and frees up ebx as the root register on ia32. Note that the set of allocatable registers was only reduced on ia32 to exclude the root register. Bug: v8:6666 Change-Id: I14e401e2823c82042c76acae10c3c935b9982993 Reviewed-on: https://chromium-review.googlesource.com/1201586 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#55587}
-
- 23 Aug, 2018 1 commit
-
-
Sigurd Schneider authored
This CL removed padding from Abort on ARM, which is no longer needed. Bug: v8:8054 Change-Id: I7ff0b88ba90e10d15b67b5ae8ca80f2cf7460498 Reviewed-on: https://chromium-review.googlesource.com/1183664 Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#55356}
-
- 08 Aug, 2018 2 commits
-
-
Michael Starzinger authored
R=sigurds@chromium.org Change-Id: I1ca0e215da36400a8817bc8c8912ccfde8eca613 Reviewed-on: https://chromium-review.googlesource.com/1166911Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#54973}
-
Michael Starzinger authored
This is the port of concurrent jump table patching support to ARM. It extends the corresponding stress test and changes the encoding of code targets in jump table slots to use constant pool entries. R=clemensh@chromium.org TEST=cctest/test-jump-table-assembler BUG=v8:8018 Change-Id: I4b709a7f14dace0f4eb9219f995d42ca607bb25f Reviewed-on: https://chromium-review.googlesource.com/1164952 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#54971}
-
- 07 Aug, 2018 1 commit
-
-
Sigurd Schneider authored
The instruction size in bytes is now kInstrSize on all platforms. Bug: v8:6666 Change-Id: I2f9880a6a74199a439c8327a4117efb74240aa22 Reviewed-on: https://chromium-review.googlesource.com/1164955 Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#54944}
-
- 02 Aug, 2018 1 commit
-
-
Sigurd Schneider authored
Trampolines to off-heap targets may get inlined. In this case, it is hard to tell where the trampoline is going to; this CL adds code comments which identify the target builtin by name. Bug: v8:6666 Change-Id: Ib085ad118ad64551af2522f9187b4faaad6ce315 Reviewed-on: https://chromium-review.googlesource.com/1160536 Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#54874}
-