- 12 Feb, 2018 1 commit
-
-
Clemens Hammacher authored
Before doing an indirect call, we always have to call {PrepareCall}. Thus move this code out into platform-independent code. This also slightly simplifies the API for {CallIndirect}. R=ahaas@chromium.org Bug: v8:6600 Change-Id: Id88ae5a9e73d1b6526131a5789205eda12b660de Reviewed-on: https://chromium-review.googlesource.com/911369 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#51230}
-
- 09 Feb, 2018 2 commits
-
-
Ben L. Titzer authored
This is a purely cosmetic change. Rename all local variables and parameters of type CallDescriptor* to "call_descriptor". For locals that are now named "call_descriptor", use auto upon initialization, following the Google style guide (https://google.github.io/styleguide/cppguide.html#auto). Note: fields in structs and classes were not renamed in this CL. R=clemensh@chromium.org,mstarzinger@chromium.org,jarin@chromium.org Change-Id: Ic6f7afdba12f7b97741b098a9d0e0f58c41c587e Reviewed-on: https://chromium-review.googlesource.com/909866 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@{#51223}
-
Clemens Hammacher authored
This allows to emit the best opcode for the register move. The type is available at all call sites anyway. R=ahaas@chromium.org Bug: v8:6600 Change-Id: I8516deff4d8a5480cea9df37cfc003fb9c668e8c Reviewed-on: https://chromium-review.googlesource.com/910910Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#51210}
-
- 06 Feb, 2018 1 commit
-
-
Clemens Hammacher authored
This adds support for the {i64.const} opcode. Since this makes i64 values show up on the wasm stack, quite some code paths need to handle them. The {CheckSupportedType} method still returns false for kWasmI64, which will be changed in a follow-up CL. That requires more changes since it unlocks more uses of i64, e.g. in loads and stores. R=titzer@chromium.org Bug: v8:6600 Change-Id: Ie012d0cd3db001f8693573fd16a3cfafe187009b Reviewed-on: https://chromium-review.googlesource.com/893319 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#51105}
-
- 02 Feb, 2018 1 commit
-
-
jgruber authored
This check verifies that all .h files in the src/ directory have an include guard of the form #ifndef V8_PATH_TO_FILE_H_ #define V8_PATH_TO_FILE_H_ // ... #endif // V8_PATH_TO_FILE_H_ The check can be skipped with a magic comment: // PRESUBMIT_INTENTIONALLY_MISSING_INCLUDE_GUARD Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng;master.tryserver.blink:linux_trusty_blink_rel Change-Id: I0a7b96abec289ad60f64ba8418f1892a6969596d Reviewed-on: https://chromium-review.googlesource.com/897487Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#51079}
-
- 26 Jan, 2018 1 commit
-
-
Clemens Hammacher authored
This ensures that i32 values which are loaded into 64 bit registers have the upper 32 bits cleared. R=titzer@chromium.org Bug: v8:6600 Change-Id: I5eb2b65ac079b5683c83d755b1aa4a626411d5d4 Reviewed-on: https://chromium-review.googlesource.com/888702Reviewed-by:
Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#50907}
-
- 25 Jan, 2018 1 commit
-
-
Clemens Hammacher authored
Also refactor the implementation of i32.eqz such that the same platform-specific code can be reused. As a next step, it should be straight-forward to add other i32 comparison operations. R=titzer@chromium.org Bug: v8:6600 Change-Id: I4e8768d4ceb7294ba35777b7777ddd69d1a58cf1 Reviewed-on: https://chromium-review.googlesource.com/877889 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#50868}
-
- 24 Jan, 2018 2 commits
-
-
Clemens Hammacher authored
When executing register moves, we might need to spill registers to the stack. Ensure that we don't exceed the reserved stack space for the current frame. R=ahaas@chromium.org Bug: v8:7366, v8:6600 Change-Id: Ic11ff2ff5f46535c3663ef4cf62b095f6c8ba637 Reviewed-on: https://chromium-review.googlesource.com/883282 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#50847}
-
Clemens Hammacher authored
When reserving stack space by decrementing rsp/esp, we were ignoring the constant size needed for the stack marker and the wasm context. Later, we were using that space anyway, which can lead to errors if e.g. interrupt handlers kick in and use that space below rsp/esp. R=ahaas@chromium.org Bug: v8:7366, v8:6600 Change-Id: I2f49ef5785d33e98c29c5cf4fe7624a02e8c7628 Reviewed-on: https://chromium-review.googlesource.com/883881Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#50843}
-
- 23 Jan, 2018 1 commit
-
-
Clemens Hammacher authored
When spilling a value to the stack, make sure to fill it as the same type later. Otherwise, we might load garbage from the stack and violate the assumption that the upper 32 bits of a 64 bit register are zero if it currently holds a 32 bit value. R=titzer@chromium.org Bug: v8:7353, v8:6600 Change-Id: I7f2b1b31b7f3c13aa152c682cb59400fb5a3ebf0 Reviewed-on: https://chromium-review.googlesource.com/880682 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#50797}
-
- 22 Jan, 2018 1 commit
-
-
Clemens Hammacher authored
This CL adds support for indirect calls. R=titzer@chromium.org Bug: v8:6600 Change-Id: Ia29b87fa1f7be873cd722f934b8007c38794dceb Reviewed-on: https://chromium-review.googlesource.com/877884 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#50756}
-
- 17 Jan, 2018 1 commit
-
-
Clemens Hammacher authored
This adds support for tracing memory operations in code compiled with Liftoff. This is the first runtime call we emit from Liftoff code, so part of this code can be reused for other runtime calls. Drive-by: Reuse outer compilation zone (avoid one Zone allocation). Bug: v8:6600, v8:7210 Change-Id: I8b22088d0685338d533d328cb371384210e0ed22 Reviewed-on: https://chromium-review.googlesource.com/864663Reviewed-by:
Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#50652}
-
- 12 Jan, 2018 2 commits
-
-
Clemens Hammacher authored
Liftoff could only call to code object on the gc heap so far. This CL extends this to support calls to the native wasm heap. This became urgent since --jit-to-native is enabled by default now. R=titzer@chromium.org Bug: v8:6600 Change-Id: Ie07416a4041d4e6ea26a8c315008a41d81f52aab Reviewed-on: https://chromium-review.googlesource.com/863667 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#50537}
-
Clemens Hammacher authored
This adds support for i32.popcnt. If no hardware instruction for popcnt is available, call out to C. R=titzer@chromium.org Bug: v8:6600 Change-Id: I9ae9e1d1e1392168d19c0eedcdd33eeea609a54f Reviewed-on: https://chromium-review.googlesource.com/860658 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#50528}
-
- 10 Jan, 2018 1 commit
-
-
Clemens Hammacher authored
This adds support for i32.shl, i32.shr_u and i32.shr_s. These are the first instructions implemented which have constraints on the registers they use (rcx in this case), so the implementation is a bit more involved. It's still worth trying to emit good code here, as shifts are quite common in our benchmarks. This code will later have to be extended to use i32 immediates directly instead of loading them into a register first. This will result in smaller code and better performance. R=titzer@chromium.org Bug: v8:6600 Change-Id: I45b41ab062b58a9b2bc7e14a68663180307b900d Reviewed-on: https://chromium-review.googlesource.com/859761 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#50481}
-
- 09 Jan, 2018 3 commits
-
-
Clemens Hammacher authored
This adds support for i32.eqz, i32.clz, and i32.ctz. R=titzer@chromium.org Bug: v8:6600 Change-Id: I0dd7c14cf98b68463edae7de3ced9a9d1f82de44 Reviewed-on: https://chromium-review.googlesource.com/852456 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#50441}
-
Clemens Hammacher authored
This adds support for direct calls in Liftoff. Drive-by: Fix / extend two tests for calls which were helpful for developing this CL. R=ahaas@chromium.org Bug: v8:6600 Change-Id: I20a98d9dd330da9a020c8c9b5c10b04e94af684d Reviewed-on: https://chromium-review.googlesource.com/847579 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#50427}
-
Clemens Hammacher authored
Store protected instruction info needed for the wasm trap handler. This code will be used and covered by existing tests once we add support for if-constructs to Liftoff. R=titzer@chromium.org CC=eholk@chromium.org Bug: v8:6600, v8:5277 Change-Id: I508b0ab8572ef8b5c7943564714fcec7e9eb8e3b Reviewed-on: https://chromium-review.googlesource.com/853497 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Eric Holk <eholk@chromium.org> Cr-Commit-Position: refs/heads/master@{#50425}
-
- 08 Jan, 2018 1 commit
-
-
Clemens Hammacher authored
This ensure that once features are added for other platform, we don't forget to implement all platform specific methods that are then being used. R=ahaas@chromium.org Bug: v8:6600 Change-Id: I4cc948da280fdb63da1938edc6b391d180b88cad Reviewed-on: https://chromium-review.googlesource.com/853494 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#50401}
-
- 04 Jan, 2018 1 commit
-
-
Sathya Gunasekaran authored
This patch breaks out bailout reasons into two enum classes. This helps save 3 bits on the SharedFunctionInfo as we don't have to track the abort reasons. Change-Id: Ic2e7e7e32b0fa31491f1c6f0003a61390d68fd97 Reviewed-on: https://chromium-review.googlesource.com/848244Reviewed-by:
Ben Titzer <titzer@chromium.org> Reviewed-by:
Adam Klein <adamk@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org> Cr-Commit-Position: refs/heads/master@{#50364}
-
- 21 Dec, 2017 1 commit
-
-
Clemens Hammacher authored
Refactor out-of-line code to represent either traps or stack checks, and add function-entry stack checks. R=ahaas@chromium.org Bug: v8:6600 Change-Id: I467ccc2016f67da5562a576aeaeceba002cd04ca Reviewed-on: https://chromium-review.googlesource.com/834208 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#50266}
-
- 15 Dec, 2017 1 commit
-
-
Clemens Hammacher authored
Add support for memory operations without trap handling, i.e. emit memory bounds checks. Drive-by: Reorganize liftoff-assembler-defs.h. R=titzer@chromium.org Bug: v8:6600, v8:7210 Change-Id: I30d84dfcaabd4bd9d147e007e525d00fa474b155 Reviewed-on: https://chromium-review.googlesource.com/824275 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#50141}
-
- 13 Dec, 2017 2 commits
-
-
Clemens Hammacher authored
LiftoffAssembler::ReserveStackSpace expected number of bytes, not number of stack slots. Also, make this clear in the naming of the parameter, and remove a dead field. R=titzer@chromium.org Bug: v8:6600 Change-Id: Ic4c7167cfa26a169b2936acdde865863141f441d Reviewed-on: https://chromium-review.googlesource.com/823967Reviewed-by:
Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#50072}
-
Clemens Hammacher authored
Add support for loading and storing i32 values to and from memory. Support for f32 and for non-traphandler configurations (i.e. emitting bounds checks) will be added in a follow-up CL. R=titzer@chromium.org Bug: v8:6600 Change-Id: I43c44ce61f5acbac325261212374eb0f48c6ee89 Reviewed-on: https://chromium-review.googlesource.com/809164Reviewed-by:
Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#50068}
-
- 01 Dec, 2017 2 commits
-
-
Clemens Hammacher authored
This CL adds support for f32 locals and parameters, and implements the basic f32 binary operations. R=titzer@chromium.org Bug: v8:6600 Change-Id: Ia2d792dd1a6f7e97eab52a4ac49543b128fe3041 Reviewed-on: https://chromium-review.googlesource.com/796854Reviewed-by:
Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#49802}
-
Clemens Hammacher authored
LiftoffRegister is an abstraction over Register and DoubleRegister. Many functions in Liftoff do not need to distinguish GP and FP registers. LiftoffRegister allows to implement most functions generically. Accessors allow to convert them back to Register or DoubleRegister. Both register types are represented in a unified index space, which allows to extend this concept to more register types and implement aliasing in a straight-forward manner. Many functions currently only implement the GP case. FP will be added later. R=titzer@chromium.org Bug: v8:6600 Change-Id: I043b787bc09dd1a06506ad515eb325b8ea19746d Reviewed-on: https://chromium-review.googlesource.com/793390Reviewed-by:
Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#49780}
-
- 28 Nov, 2017 1 commit
-
-
Clemens Hammacher authored
Many methods which currently receive a {ValueType} really just need to know the register class. Thus introduce a {RegClass} enum with values {kGpReg} and {kFpReg}, and change some methods to use it. For most methods, only the {kGpReg} case is implemented for now. Support for {kFpReg} will be added later. R=titzer@chromium.org Bug: v8:6600 Change-Id: I1db793c59270862c4e1b877e6e4bd81020a650f8 Reviewed-on: https://chromium-review.googlesource.com/793159Reviewed-by:
Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#49670}
-
- 21 Nov, 2017 1 commit
-
-
Clemens Hammacher authored
The wasm context will always be stored on the stack, and will be loaded from there whenever needed (for accessing globals or the memory). We can still improve this later by caching the context address or specific information loaded from it. R=titzer@chromium.org Bug: v8:6600 Change-Id: Idd7fb1ccff28a73beaf545997e3dfdb74757b686 Reviewed-on: https://chromium-review.googlesource.com/779145 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#49540}
-
- 23 Oct, 2017 1 commit
-
-
Clemens Hammacher authored
This CL adds a first implementation of Liftoff, the new wasm baseline compiler, for x64 and ia32. It currently supports the most important i32 instructions and control instructions. Whenever it encounters an instruction it does not support yet, it aborts. In a subsequent CL, Liftoff will be called from the WasmCompilationUnit, falling back to Turbofan compilation if the baseline compiler bails out. R=titzer@chromium.org Bug: v8:6600 Change-Id: Ifa78fb9d546dce72c241ff01a251dfa13cb31c1d Reviewed-on: https://chromium-review.googlesource.com/716480 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48832}
-