- 29 Oct, 2018 1 commit
-
-
Benedikt Meurer authored
This introduces Word64 support for the CheckBounds operator, which now lowers to either CheckedUint32Bounds or CheckedUint64Bounds after the representation selection. The right hand side of CheckBounds can now be any positive safe integer on 64-bit architectures, whereas it remains Unsigned31 for 32-bit architectures. We only use the extended Word64 support when the right hand side is outside the Unsigned31 range, so for everything except DataViews this means that the performance should remain the same. The typing rule for the CheckBounds operator was updated to reflect this new behavior. The CheckBounds with a right hand side outside the Unsigned31 range will pass a new Signed64 feedback kind, which is handled with newly introduced CheckedFloat64ToInt64 and CheckedTaggedToInt64 operators in representation selection. The JSCallReducer lowering for DataView getType()/setType() methods was updated to not smi-check the [[ByteLength]] and [[ByteOffset]] anymore, but instead just use the raw uintptr_t values and operate on any value (for 64-bit architectures these fields can hold any positive safe integer, for 32-bit architectures it's limited to Unsigned31 range as before). This means that V8 can now handle huge DataViews fully, without falling off a performance cliff. This refactoring even gave us some performance improvements, on a simple micro-benchmark just exercising different DataView accesses we go from testDataViewGetUint8: 796 ms. testDataViewGetUint16: 997 ms. testDataViewGetInt32: 994 ms. testDataViewGetFloat64: 997 ms. to testDataViewGetUint8: 895 ms. testDataViewGetUint16: 889 ms. testDataViewGetInt32: 888 ms. testDataViewGetFloat64: 890 ms. meaning we lost around 10% on the single byte case, but gained 10% across the board for all the other element sizes. Design-Document: http://bit.ly/turbofan-word64 Bug: chromium:225811, v8:4153, v8:7881, v8:8171, v8:8383 Change-Id: Ic9d1bf152e47802c04dcfd679372e5c85e4abc83 Reviewed-on: https://chromium-review.googlesource.com/c/1303732Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#57095}
-
- 25 Oct, 2018 1 commit
-
-
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}
-
- 10 Oct, 2018 1 commit
-
-
Ben L. Titzer authored
This CL refactors the implementation of WASM->JS import wrappers in order to make the wrapper code shareable. Instead of specializing to the import index, we use a tuple as the object ref in the both the import and indirect tables. The tuple allows the wrapper code to load both the calling instance and the target callable, rather than relying on code specialization. This requires some tricky codegen machinery, because WASM call descriptors expect an instance argument in a given register, yet the wrappers receive a tuple, the code generator must generate a prologue that loads the instance (and the callable), since it is not possible to express this at the graph level. R=mstarzinger@chromium.org CC=clemensh@chromium.org Change-Id: Id67e307f7f5089e776f5439a53b5aee4b76934b6 Reviewed-on: https://chromium-review.googlesource.com/c/1268237 Commit-Queue: Ben Titzer <titzer@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#56520}
-
- 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}
-
- 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}
-
- 17 Sep, 2018 1 commit
-
-
Benedikt Meurer authored
This change introduces the necessary conversion operators to convert from Word64 to other representations (Tagged, Word32, Float64, etc.), and plugs in the Word64 representation for NumberAdd/NumberSubtract, such that TurboFan will go to Int64Add/Sub on 64-bit architectures when the inputs and the output of the operation is in safe integer range. This includes the necessary changes to the Deoptimizer to be able to rematerialize Int64 values as Smi/HeapNumber when going back to Ignition later. This change might affect performance, although measurements indicate that there should be no noticable performance impact. The goal is to have TurboFan support Word64 representation to a degree that changing the TypedArray length to an uint64_t (for 64-bit archs) becomes viable and doesn't have any negative performance implications. Independent of that we might get performance improvements in other areas such as for crypto code later. Bug: v8:4153, v8:7881, v8:8171, v8:8178 Design-Document: bit.ly/turbofan-word64 Change-Id: I29d56e2a31c1bae61d04a89d29ea73f21fd49c59 Cq-Include-Trybots: luci.chromium.try:linux_chromium_headless_rel Reviewed-on: https://chromium-review.googlesource.com/1225709 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#55937}
-
- 14 Sep, 2018 1 commit
-
-
Benedikt Meurer authored
This adds support to TurboFan's representation selection for the Word64 representation, and makes use of that to handle indices for memory access and allocation instructions (i.e. LoadElement, StoreElement, Allocate, etc.). These instructions had previously used Word32 as representation for the indices / sizes, and then internally converted it to the correct representation (aka Word64 on 64-bit architectures) later on, but that was kind of brittle, and sometimes led to weird generated code. The change thus only adds support to convert integer values in the safe integer range from all kinds of representations to Word64 (on 64-bit architectures). We don't yet handle the opposite direction and none of the representation selection heuristics for the numeric operations were changed so far. This will be done in follow-up CLs. This CL itself is supposed to be neutral wrt. functionality, and only serves as a starting point, and a cleanup for the (weird) implicit Word64 index/size handling. Bug: v8:7881, v8:8015, v8:8171 Design-Document: http://bit.ly/turbofan-word64 Change-Id: I3c6961a0e96cbc3fb8ac9d3e1be8f2e5c89bfd25 Cq-Include-Trybots: luci.chromium.try:linux_chromium_headless_rel Reviewed-on: https://chromium-review.googlesource.com/1224932 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#55886}
-
- 23 Aug, 2018 1 commit
-
-
Michael Starzinger authored
R=titzer@chromium.org BUG=v8:6408 Change-Id: I277beafaace334883ddbe63b9615e3f18085ce5e Reviewed-on: https://chromium-review.googlesource.com/1186411 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#55350}
-
- 22 Aug, 2018 1 commit
-
-
Bogdan Lazarescu authored
This is useful even if there are other uses of the arithmetic result, because it moves dependencies further back. Change-Id: I6136a657b547198cb4ec92f38b89ddf5df334124 Reviewed-on: https://chromium-review.googlesource.com/1179662Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Bogdan Lazarescu <bogdan.lazarescu@arm.com> Cr-Commit-Position: refs/heads/master@{#55292}
-
- 14 Aug, 2018 3 commits
-
-
Georgia Kouveli authored
* Perform the lookups into the builtins constant table and external reference table in the generic version of Mov that accepts an Operand source. This makes sure we do not miss looking up constants and external references when the generic Mov is called. * Remove Mov(ExternalReference) as ExternalReference can be implicitly converted to an Operand. * Remove two Move functions that are unused in architecture-independent code. Replace their uses in arm64-specific code with the generic Mov, which does all the necessary work now. Change-Id: Ibbcee6ba22f661984cd830717e14c9b35a1fba0a Reviewed-on: https://chromium-review.googlesource.com/1172351 Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#55121}
-
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 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: 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}
-
Bogdan Lazarescu authored
Change-Id: I4a6d57903016323eba439cd7f959f263d6605c84 Reviewed-on: https://chromium-review.googlesource.com/1169165Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Bogdan Lazarescu <bogdan.lazarescu@arm.com> Cr-Commit-Position: refs/heads/master@{#55094}
-
- 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}
-
- 13 Jul, 2018 1 commit
-
-
Bill Budge authored
- Reorganizes shuffle tests into tabular form. - Adds a test that composes random numbers of random shuffles to make new shuffles. - Adds a test that generates functions to compute a complex expression consisting of shuffles, and compares interpreter results to compiled code results. - Fixes a problem with temp register exhaustion on ARM 32-bit. - Matches identity shuffles (returning first or second operand unchanged) and uses EmitIdentity() for these. Bug: v8:6020 Change-Id: Ie41c14fee52a7406b1d32e731e050096400e12f5 Reviewed-on: https://chromium-review.googlesource.com/1119567 Commit-Queue: Bill Budge <bbudge@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#54446}
-
- 10 Jul, 2018 2 commits
-
-
Bill Budge authored
- Dup (broadcast) shuffles are always swizzles (single operand), which are canonicalized to only use the first input, so we don't need to check the index and switch operands. Bug: v8:6020 Change-Id: I3ef8ba8071775dfbd21c0cab3fdf24db17f496bb Reviewed-on: https://chromium-review.googlesource.com/1129540Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#54367}
-
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}
-
- 05 Jul, 2018 1 commit
-
-
Georgia Kouveli authored
This is a reland of 8e39af62 Original change's description: > [arm64] Use root register for addressing external references. > > This optimization is already done on x64 (7500e507). > > Bug: v8:7844 > Change-Id: Iccc3bb55aa79ef1d4423576c79d9ce6f829f2828 > Reviewed-on: https://chromium-review.googlesource.com/1120343 > Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com> > Reviewed-by: Sigurd Schneider <sigurds@chromium.org> > Cr-Commit-Position: refs/heads/master@{#54162} Bug: v8:7844 Change-Id: I2eab2d753fd8e374bf7c912a107c93edc58ef4c7 Reviewed-on: https://chromium-review.googlesource.com/1126259Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com> Cr-Commit-Position: refs/heads/master@{#54257}
-
- 04 Jul, 2018 2 commits
-
-
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}
-
Aleksey Kozyatinskiy authored
This reverts commit 8e39af62. Reason for revert: prevent v8 roll to chromium. Original change's description: > [arm64] Use root register for addressing external references. > > This optimization is already done on x64 (7500e507). > > Bug: v8:7844 > Change-Id: Iccc3bb55aa79ef1d4423576c79d9ce6f829f2828 > Reviewed-on: https://chromium-review.googlesource.com/1120343 > Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com> > Reviewed-by: Sigurd Schneider <sigurds@chromium.org> > Cr-Commit-Position: refs/heads/master@{#54162} TBR=sigurds@chromium.org,georgia.kouveli@arm.com Change-Id: I08801917164e42c99a14a5e767d5c034f6979e87 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:7844 Reviewed-on: https://chromium-review.googlesource.com/1124996Reviewed-by:
Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> Cr-Commit-Position: refs/heads/master@{#54188}
-
- 03 Jul, 2018 1 commit
-
-
Georgia Kouveli authored
This optimization is already done on x64 (7500e507). Bug: v8:7844 Change-Id: Iccc3bb55aa79ef1d4423576c79d9ce6f829f2828 Reviewed-on: https://chromium-review.googlesource.com/1120343 Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com> Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#54162}
-
- 20 Jun, 2018 1 commit
-
-
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}
-
- 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}
-
- 18 Jun, 2018 1 commit
-
-
Michael Starzinger authored
By now we no longer emit calls with {RelocInfo::CODE_TARGET} as part of WebAssembly code. Hence the requirement to block sharing of code targets disappeared and the support can be dropped. R=jarin@chromium.org Change-Id: I6df026cd05769ddaa6ea8df5a7b17b62e8a7c373 Reviewed-on: https://chromium-review.googlesource.com/1100889Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#53782}
-
- 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}
-
- 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}
-
- 12 Jun, 2018 1 commit
-
-
jgruber authored
Indirections for external references are now handled completely in macro assemblers, which can produce more efficient code. Bug: v8:6666 Change-Id: I158f2e2517e2d97a1006cec6e3b4ac3a7ef3fab6 Reviewed-on: https://chromium-review.googlesource.com/1095307 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#53666}
-
- 11 Jun, 2018 1 commit
-
-
Bill Budge authored
- Shuffle canonicalization improved to reverse operands to match more architectural shuffles. - Handles shuffles where the order of operands is reversed. - Adds tests for non-canonical shuffles, and for swizzles. - Improves TryMatchConcat method. - Substantially rewrites shuffles on ia32 to better handle swizzles and fix bugs on reversed shuffles where source registers are overwritten. - Adds Palignr macro-assembler instructions for ia32. Bug: v8:6020 Change-Id: I8e43a1e7650057c66690af1504b67509a1437d75 Reviewed-on: https://chromium-review.googlesource.com/1070934 Commit-Queue: Bill Budge <bbudge@chromium.org> Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Reviewed-by:
Martyn Capewell <martyn.capewell@arm.com> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#53648}
-
- 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}
-
- 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}
-
- 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}
-
- 02 May, 2018 1 commit
-
-
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}
-