- 10 Aug, 2018 1 commit
-
-
Clemens Hammacher authored
Most platforms do not need these methods. Thus, make them private to the mips headers. R=titzer@chromium.org Bug: v8:6600 Change-Id: I3fb1a2a3fd9a53dfc55b45763c150911db43b537 Reviewed-on: https://chromium-review.googlesource.com/1169203Reviewed-by:
Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#55032}
-
- 09 Aug, 2018 1 commit
-
-
Junliang Yan authored
Port 352e408b Original Commit Message: Add codegen support for up to 4GiB memories in Liftoff code. This CL also adds three new mjsunit tests that stress large WASM memories (1, 2, and 4 GiB) and checks that accesses near these boundaries properly generate traps. Note there is still some trickiness around the setting of: 1.) the flag --wasm-max-mem-pages 2.) wasm-limits.h kSpecMaxWasmMemoryPages = 65536 3.) wasm-limits.h kV8MaxWasmMemoryPages = 32767 In particular, the allocation of memories is still limited to 3.) and the runtime flag can only lower this limit. The above means that the tests for 2GiB and 4GiB memories will silently OOM by design until 3.) is changed (though they currently pass with manual testing). I argue it is better to include these tests up front, since they will immediately trigger if their memory allocation succeeds. Therefore the plan is to lift the restriction on 3.) after removing all other other internal V8 limitations including array buffers and views. R=titzer@chromium.org, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com BUG=v8:7881 LOG=N Change-Id: Ice70a9ac5a9a26b08cc77acb7deec98305574d01 Reviewed-on: https://chromium-review.googlesource.com/1167914 Commit-Queue: Junliang Yan <jyan@ca.ibm.com> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#55026}
-
- 02 Jul, 2018 1 commit
-
-
Clemens Hammacher authored
On Windows (32-bit), we need to emit explicit stack limit checks for stack frames bigger than one page (4kB). This CL implements this by emitting corresponding code at the end of Liftoff functions if needed. R=mstarzinger@chromium.org Bug: v8:7908, v8:6600 Change-Id: Iacb3e7afdd433a4e68620d9230bd0ba473611da8 Reviewed-on: https://chromium-review.googlesource.com/1120175 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#54141}
-
- 28 Jun, 2018 1 commit
-
-
Michael Starzinger authored
This loads the stack limit address from the instance object instead of embedding it into the instruction stream. It is another piece towards making the generated code independent of the Isolate. R=clemensh@chromium.org BUG=v8:7424 Change-Id: I9381956adf2d7c42f6626708229cfdd5c4ca114f Reviewed-on: https://chromium-review.googlesource.com/1117189 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#54076}
-
- 11 Jun, 2018 1 commit
-
-
Michael Starzinger authored
This switches Liftoff code to use WebAssembly runtime stubs instead of builtin calls for handling traps, similar to what we use in TurboFan generated code as well. R=clemensh@chromium.org BUG=v8:7424 Change-Id: If2554067b3e294220306c67861bb1fb14db7b492 Reviewed-on: https://chromium-review.googlesource.com/1087275 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#53644}
-
- 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}
-
- 05 Jun, 2018 1 commit
-
-
Igor Sheludko authored
This CL introduces a new gn argument: v8_enable_pointer_compression which is false by default. All the changes done in this CL are made under this flag. Upper half-word of a Smi word must be properly sign-extended according to the sign of the lower-half containing the actual Smi value. Bug: v8:7703 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I2b52ab49cd18c7c613130705de445fef44c30ac5 Reviewed-on: https://chromium-review.googlesource.com/1061175Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#53519}
-
- 18 May, 2018 1 commit
-
-
Vincent Belliard authored
For AArch64, clean correctly the pools when the compilation is aborted Bug: v8:6600 Change-Id: I4bacdbeae49290ece0ce1bf47319bf7076fec37c Reviewed-on: https://chromium-review.googlesource.com/1066151 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#53263}
-
- 14 May, 2018 1 commit
-
-
Predrag Rudic authored
Change-Id: I1815de5bc5fc955014cba8099e8c704a23a2e9be Reviewed-on: https://chromium-review.googlesource.com/1044187Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#53148}
-
- 03 May, 2018 1 commit
-
-
Clemens Hammacher authored
Now that wasm-linkage.h is split off, we can easily implement {MoveToReturnRegister} in platform independent code. R=titzer@chromium.org Bug: v8:6600 Change-Id: I072a0ee48d58ed29e0df489016f838915c3f2cb2 Reviewed-on: https://chromium-review.googlesource.com/1041690 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#52939}
-
- 27 Apr, 2018 1 commit
-
-
Clemens Hammacher authored
This adds support for f64.min and f64.max, implemented on ia32, x64, mips and mips64. R=ahaas@chromium.org Bug: v8:6600 Change-Id: Ib4383df08692c76df5861fe71a96c4354fdf10c1 Reviewed-on: https://chromium-review.googlesource.com/1028235 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#52838}
-
- 26 Apr, 2018 1 commit
-
-
Clemens Hammacher authored
This adds support for f32.min and f32.max, implemented on ia32, x64, mips and mips64. R=ahaas@chromium.org Bug: v8:6600 Change-Id: If73abf3cf46011ba84158ed2ec02d074adcf4ba2 Reviewed-on: https://chromium-review.googlesource.com/1027841 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#52803}
-
- 25 Apr, 2018 1 commit
-
-
Clemens Hammacher authored
This adds support for i64.div_s, i64.div_u, i64.rem_s, and i64.rem_u. R=ahaas@chromium.org Bug: v8:6600 Change-Id: I37e564684b278c8d2f664a859851c67f4bd83190 Reviewed-on: https://chromium-review.googlesource.com/1027612Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#52785}
-
- 24 Apr, 2018 1 commit
-
-
Clemens Hammacher authored
This adds support for i32.rem_u and i32.rem_s, implemented on ia32 and x64. R=ahaas@chromium.org Bug: v8:6600 Change-Id: Id08a51f7a0dcb7a1ed43c5a97be7a7dafff85397 Reviewed-on: https://chromium-review.googlesource.com/1023932Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#52764}
-
- 23 Apr, 2018 2 commits
-
-
Vincent Belliard authored
On AArch64, we can't push arguments one by one because sp must always be 16 byte aligned. This patch adds a LiftoffStackSlots class which holds everything which has to be pushed. This way, on AArch64, we will be able to reserve the needed space and eventually add some padding. Then, all pushes will be converted to stores into this reserved space. Bug: v8:6600 Change-Id: I17480fb841f16e07356b35326c59e3c7f03ed012 Reviewed-on: https://chromium-review.googlesource.com/1023977 Commit-Queue: Vincent Belliard <vincent.belliard@arm.com> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#52746}
-
Clemens Hammacher authored
This adds support for i32.div_u and i32.div_s, implemented on ia32 and x64. R=ahaas@chromium.org Bug: v8:6600 Change-Id: I920fb0613ecba0021dab0936690415be88d666e9 Reviewed-on: https://chromium-review.googlesource.com/1021890 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#52737}
-
- 20 Apr, 2018 1 commit
-
-
Clemens Hammacher authored
Instead of passing multiple pointers to input and output, or to two input values, just pass one pointer which holds all inputs and where the output is written. This also reduces the size of generated Turbofan graphs, since only one stack slot is needed and less arguments are passed to the call. It also fixes undefined behaviour, since we were passing a pointer e.g. as {uint64_t*}, but accessed it using {ReadUnalignedValue}. Now we pass an Address, which does not have any alignment constraints. R=ahaas@chromium.org Bug: v8:3770, v8:6600 Change-Id: I54ef80b7e27f77587a9062560c0b3e01d6593e6d Reviewed-on: https://chromium-review.googlesource.com/1019147 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#52702}
-
- 18 Apr, 2018 1 commit
-
-
Clemens Hammacher authored
This implement float to i32/u32 conversions on ia32 and x64. R=ahaas@chromium.org Bug: v8:6600 Change-Id: I4eb6a74d86fafce3245bf3f37d32ac6ca156550a Reviewed-on: https://chromium-review.googlesource.com/1014123Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#52662}
-
- 16 Apr, 2018 1 commit
-
-
Vincent Belliard authored
First version which can compile a very basic code. Change-Id: I3b98412a5ca39a28f8fe5b60516b82c6981dd187 Reviewed-on: https://chromium-review.googlesource.com/993232 Commit-Queue: Vincent Belliard <vincent.belliard@arm.com> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#52622}
-
- 12 Apr, 2018 2 commits
-
-
Clemens Hammacher authored
This adds support for i64.mul. On x64, the implementation is straight forward, on ia32, we need three multiplies and two additions. R=ahaas@chromium.org Bug: v8:6600 Change-Id: I083872c1a6885458396ae5ff29e29d057e458561 Reviewed-on: https://chromium-review.googlesource.com/1009943 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#52576}
-
sreten.kovacevic authored
Add big endian support for MIPS in Liftoff. Bug: v8:6600 Change-Id: Ibd90e7b6a8f0f826bd70ef489135cabcadeed7b0 Reviewed-on: https://chromium-review.googlesource.com/995457 Commit-Queue: Sreten Kovacevic <sreten.kovacevic@mips.com> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ivica Bogosavljevic <ivica.bogosavljevic@mips.com> Cr-Commit-Position: refs/heads/master@{#52565}
-
- 09 Apr, 2018 2 commits
-
-
Junliang Yan authored
Port 17bb05f5 Original Commit Message: This adds support for i64.and, i64.or and i64.xor. R=clemensh@chromium.org, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com BUG= LOG=N Change-Id: I48ca8f14cb01444c495731c1c310acd1be59a19e Reviewed-on: https://chromium-review.googlesource.com/1003118Reviewed-by:
Joran Siu <joransiu@ca.ibm.com> Commit-Queue: Junliang Yan <jyan@ca.ibm.com> Cr-Commit-Position: refs/heads/master@{#52489}
-
Kim-Anh Tran authored
The prologue checks if optimized code exists, and if not, continues execution of the current function. Otherwise, it jumps to the address specified in the native module's code_table. Also-by: clemensh@chromium.org Change-Id: If3e76de02115f44ab7758590a949c3f0965a11ca Reviewed-on: https://chromium-review.googlesource.com/985837 Commit-Queue: Kim-Anh Tran <kimanh@google.com> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#52471}
-
- 06 Apr, 2018 1 commit
-
-
Ben L. Titzer authored
This change makes lifetime management of WasmCode much simpler. By using the WasmInstanceObject as the context for WASM code execution, including the pointer to the memory base and indirect function tables, this keeps the instance alive when WASM code is on the stack, since the instance object is passed as a parameter and spilled onto the stack. This is in preparation of sharing the code between instances and isolates. Bug: v8:7424 R=mstarzinger@chromium.org Change-Id: Ia35a3ce91a8f6135767fa764e185cde8bbc889f4 Reviewed-on: https://chromium-review.googlesource.com/997932 Commit-Queue: Ben Titzer <titzer@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#52436}
-
- 05 Apr, 2018 5 commits
-
-
Clemens Hammacher authored
This adds support for i64.and, i64.or and i64.xor. R=titzer@chromium.org Bug: v8:6600 Change-Id: Ie64e1874f87cd250f3e0641e021f584ecd0aaff9 Reviewed-on: https://chromium-review.googlesource.com/995444Reviewed-by:
Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#52396}
-
Clemens Hammacher authored
This implements f64 comparisons analogue to f32 comparisons (f64.eq, f64.ne, f64.lt, f64.gt, f64.le, f64.ge). R=titzer@chromium.org Bug: v8:6600 Change-Id: I382d575e4f2c585c2de1313f2c2fd2c8cda54a9d Reviewed-on: https://chromium-review.googlesource.com/995773 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#52390}
-
Clemens Hammacher authored
This is a reland of 5ae8420c Original change's description: > [Liftoff] Implement float rounding > > This adds support for the four rounding operations on f32 and f64: > f32.ceil, f32.floor, f32.trunc, f32.nearest_int, f64.ceil, f64.floor, > f64.trunc, and f64.nearest_int. > > R=titzer@chromium.org > > Bug: v8:6600 > Change-Id: I16ea91e26c3233af7a33bbb794cd4182f9d7cdb0 > Reviewed-on: https://chromium-review.googlesource.com/995894 > Commit-Queue: Clemens Hammacher <clemensh@chromium.org> > Reviewed-by: Ben Titzer <titzer@chromium.org> > Cr-Commit-Position: refs/heads/master@{#52377} Bug: v8:6600 Change-Id: I9e69309b71041e411bda9ce1375d2451197a111b Reviewed-on: https://chromium-review.googlesource.com/997393 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#52382}
-
Clemens Hammacher authored
This reverts commit 5ae8420c. Reason for revert: Fails on non-sse machine: https://build.chromium.org/p/client.v8/builders/V8%20Linux64%20-%20debug/builds/21480 Original change's description: > [Liftoff] Implement float rounding > > This adds support for the four rounding operations on f32 and f64: > f32.ceil, f32.floor, f32.trunc, f32.nearest_int, f64.ceil, f64.floor, > f64.trunc, and f64.nearest_int. > > R=titzer@chromium.org > > Bug: v8:6600 > Change-Id: I16ea91e26c3233af7a33bbb794cd4182f9d7cdb0 > Reviewed-on: https://chromium-review.googlesource.com/995894 > Commit-Queue: Clemens Hammacher <clemensh@chromium.org> > Reviewed-by: Ben Titzer <titzer@chromium.org> > Cr-Commit-Position: refs/heads/master@{#52377} TBR=titzer@chromium.org,clemensh@chromium.org Change-Id: Iefdeb088b84384f7bc5dc5de6917bc60e9b8292c No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:6600 Reviewed-on: https://chromium-review.googlesource.com/997392Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#52378}
-
Clemens Hammacher authored
This adds support for the four rounding operations on f32 and f64: f32.ceil, f32.floor, f32.trunc, f32.nearest_int, f64.ceil, f64.floor, f64.trunc, and f64.nearest_int. R=titzer@chromium.org Bug: v8:6600 Change-Id: I16ea91e26c3233af7a33bbb794cd4182f9d7cdb0 Reviewed-on: https://chromium-review.googlesource.com/995894 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#52377}
-
- 04 Apr, 2018 3 commits
-
-
Ben Titzer authored
This reverts commit 57bf0bfe. Reason for revert: <INSERT REASONING HERE> Original change's description: > [wasm] Merge the WasmContext into WasmInstanceObject > > This change makes lifetime management of WasmCode much simpler. > By using the WasmInstanceObject as the context for WASM code execution, > including the pointer to the memory base and indirect function tables, > this keeps the instance alive when WASM code is on the stack, since > the instance object is passed as a parameter and spilled onto the stack. > This is in preparation of sharing the code between instances and > isolates. > > Bug: v8:7424 > > Change-Id: Ic2e4b7bcc2feb20001d0553a615a8a9dff36317e > Reviewed-on: https://chromium-review.googlesource.com/958520 > Commit-Queue: Ben Titzer <titzer@chromium.org> > Reviewed-by: Clemens Hammacher <clemensh@chromium.org> > Reviewed-by: Andreas Haas <ahaas@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Cr-Commit-Position: refs/heads/master@{#52361} TBR=mstarzinger@chromium.org,titzer@chromium.org,ahaas@chromium.org,clemensh@chromium.org Change-Id: I653e27b46dbc43ad773eda4292d521a508f42d79 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:7424 Reviewed-on: https://chromium-review.googlesource.com/995418Reviewed-by:
Ben Titzer <titzer@chromium.org> Commit-Queue: Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#52364}
-
Ben L. Titzer authored
This change makes lifetime management of WasmCode much simpler. By using the WasmInstanceObject as the context for WASM code execution, including the pointer to the memory base and indirect function tables, this keeps the instance alive when WASM code is on the stack, since the instance object is passed as a parameter and spilled onto the stack. This is in preparation of sharing the code between instances and isolates. Bug: v8:7424 Change-Id: Ic2e4b7bcc2feb20001d0553a615a8a9dff36317e Reviewed-on: https://chromium-review.googlesource.com/958520 Commit-Queue: Ben Titzer <titzer@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#52361}
-
Clemens Hammacher authored
This adds support for i64 addition and subtraction. R=titzer@chromium.org Bug: v8:6600 Change-Id: If7ed762091b0ebd688eb2a8cac84e59b91c8a322 Reviewed-on: https://chromium-review.googlesource.com/992316Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#52351}
-
- 20 Mar, 2018 2 commits
-
-
Clemens Hammacher authored
This adds support for i64.eqz, and all binary comparisons (i64.eq, i64.ne, i64.lt_s, i64.le_s, i64.lt_u, i64.le_u, i64.gt_s, i64.ge_s, i64.gt_u, i64.and i64.ge_u). R=titzer@chromium.org Bug: v8:6600 Change-Id: Ic6c59529b007220698e09d5959394bcfb6590173 Reviewed-on: https://chromium-review.googlesource.com/969125 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#52063}
-
Clemens Hammacher authored
This adds support for the f32.abs and f64.abs opcodes. R=titzer@chromium.org Bug: v8:6600 Change-Id: I05a16bb4301d492ba8d22a6326c7b2ce0f9f2faa Reviewed-on: https://chromium-review.googlesource.com/968502Reviewed-by:
Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#52051}
-
- 19 Mar, 2018 1 commit
-
-
Clemens Hammacher authored
This adds support for i64.shl, i64.shr_s, and i64.shr_u. R=titzer@chromium.org Bug: v8:6600 Change-Id: Ibc1982064ff3c9f3a494b5fa329841a0d3bc7bce Reviewed-on: https://chromium-review.googlesource.com/964844 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#52022}
-
- 14 Mar, 2018 1 commit
-
-
Clemens Hammacher authored
During a C call, a previous value of the stack pointer is stored in a platform specific callee saved register. Loading the out argument of the C call might overwrite the value in that register, if the destination register collides with the platform specific register. Hence, do first use that register to restore the previous stack pointer, and only then load the out argument. Similarly, when pushing arguments to the stack, do first push all values and then set the platform specific register in order to avoid overwriting an argument value held in that register. Drive-by: Fix offset computations for parameters pushed to the stack for c calls. R=titzer@chromium.org Bug: chromium:820802,chromium:820896,chromium:820807,v8:6600 Change-Id: If4567467b7912454f0bd2cad5927233c98894b03 Reviewed-on: https://chromium-review.googlesource.com/959064Reviewed-by:
Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#51916}
-
- 09 Mar, 2018 1 commit
-
-
Clemens Hammacher authored
This adds support for f32.convert_{s,u}/i{32,64}. On 32-bit platforms, i64 conversions are implemented by a call to a c function. Since the signature of this c function is very different to the currently used functions in Liftoff (in particular they contain an out parameter), this CL requires a major refactoring of how Liftoff generates c-calls. R=titzer@chromium.org Bug: v8:6600 Change-Id: Iffb4d0263ca1ca3eb9c6216344220322cda16062 Reviewed-on: https://chromium-review.googlesource.com/952122 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#51841}
-
- 05 Mar, 2018 2 commits
-
-
Clemens Hammacher authored
I initially left them out because I thought they are harder to implement than the other float binops, but it turns out it is actually just the same. R=ahaas@chromium.org Bug: v8:6600 Change-Id: I68b98daf4dfaf4e00d57fc68257fe43977c4ae6a Reviewed-on: https://chromium-review.googlesource.com/948543Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#51745}
-
Clemens Hammacher authored
On ia32, support for vsqrtss and vsqrtsd was missing, so I add the implementation of these instructions and disassembly support. On x64, disassembly support for vsqrtss was missing, while vsqrtsd was implemented. Now both are implemented. The implementation of f32.sqrt and f64.sqrt is very straight-forward on ia32 and x64, we can immediately emit the {v}sqrtss or {v}sqrtsd instruction. R=ahaas@chromium.org Bug: v8:6600 Change-Id: Icf3ec05a97a23e94cdf70f4a72f30dd02fbddd13 Reviewed-on: https://chromium-review.googlesource.com/944221Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#51724}
-
- 27 Feb, 2018 1 commit
-
-
Clemens Hammacher authored
This adds support for f32.neg and f64.neg. Note that this cannot be computed as "0 - src", as this would not turn 0 into -0. Instead, we need to explicitly flip the sign bit. R=ahaas@chromium.org Bug: v8:6600 Change-Id: I3cbcfa156c5d2a727e0e2da279369bf055f0d657 Reviewed-on: https://chromium-review.googlesource.com/937202Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#51601}
-