Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(218)

Issue 2628433004: [wasm] TrapIf and TrapUnless TurboFan operators implemented on mips. (Closed)

Created:
3 years, 11 months ago by ahaas
Modified:
3 years, 11 months ago
Reviewers:
titzer, v8-mips-ports
CC:
v8-reviews_googlegroups.com
Target Ref:
refs/pending/heads/master
Project:
v8
Visibility:
Public.

Description

[wasm] TrapIf and TrapUnless TurboFan operators implemented on mips. Original commit message: [wasm] Introduce the TrapIf and TrapUnless operators to generate trap code. Some instructions in WebAssembly trap for some inputs, which means that the execution is terminated and (at least at the moment) a JavaScript exception is thrown. Examples for traps are out-of-bounds memory accesses, or integer divisions by zero. Without the TrapIf and TrapUnless operators trap check in WebAssembly introduces 5 TurboFan nodes (branch, if_true, if_false, trap-reason constant, trap-position constant), in addition to the trap condition itself. Additionally, each WebAssembly function has four TurboFan nodes (merge, effect_phi, 2 phis) whose number of inputs is linear to the number of trap checks in the function. Especially for functions with high numbers of trap checks we observe a significant slowdown in compilation time, down to 0.22 MiB/s in the sqlite benchmark instead of the average of 3 MiB/s in other benchmarks. By introducing a TrapIf common operator only a single node is necessary per trap check, in addition to the trap condition. Also the nodes which are shared between trap checks (merge, effect_phi, 2 phis) would disappear. First measurements suggest a speedup of 30-50% on average. This CL only implements TrapIf and TrapUnless on x64. The implementation is also hidden behind the --wasm-trap-if flag. Please take a special look at how the source position is transfered from the instruction selector to the code generator, and at the context that is used for the runtime call. R=titzer@chromium.org, v8-mips-ports@googlegroups.com Review-Url: https://codereview.chromium.org/2628433004 Cr-Commit-Position: refs/heads/master@{#42230} Committed: https://chromium.googlesource.com/v8/v8/+/b16febbc3f9217a5aa6e16df111e0eace43a71cc

Patch Set 1 #

Total comments: 2

Patch Set 2 : use __ instead of masm-> #

Patch Set 3 : rebase #

Unified diffs Side-by-side diffs Delta from patch set Stats (+105 lines, -26 lines) Patch
M src/compiler/mips/code-generator-mips.cc View 1 2 8 chunks +86 lines, -19 lines 0 comments Download
M src/compiler/mips/instruction-selector-mips.cc View 4 chunks +18 lines, -6 lines 0 comments Download
M src/compiler/wasm-compiler.cc View 1 1 chunk +1 line, -1 line 0 comments Download

Messages

Total messages: 22 (17 generated)
ahaas
3 years, 11 months ago (2017-01-10 18:30:09 UTC) #1
titzer
lgtm modulo assembler macro https://codereview.chromium.org/2628433004/diff/1/src/compiler/mips/code-generator-mips.cc File src/compiler/mips/code-generator-mips.cc (right): https://codereview.chromium.org/2628433004/diff/1/src/compiler/mips/code-generator-mips.cc#newcode1631 src/compiler/mips/code-generator-mips.cc:1631: void AssembleBranchToLabels(CodeGenerator* gen, MacroAssembler* masm, ...
3 years, 11 months ago (2017-01-11 09:53:33 UTC) #7
ahaas
https://codereview.chromium.org/2628433004/diff/1/src/compiler/mips/code-generator-mips.cc File src/compiler/mips/code-generator-mips.cc (right): https://codereview.chromium.org/2628433004/diff/1/src/compiler/mips/code-generator-mips.cc#newcode1631 src/compiler/mips/code-generator-mips.cc:1631: void AssembleBranchToLabels(CodeGenerator* gen, MacroAssembler* masm, On 2017/01/11 at 09:53:32, ...
3 years, 11 months ago (2017-01-11 14:05:36 UTC) #16
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2628433004/40001
3 years, 11 months ago (2017-01-11 14:06:10 UTC) #19
commit-bot: I haz the power
3 years, 11 months ago (2017-01-11 14:07:50 UTC) #22
Message was sent while issue was closed.
Committed patchset #3 (id:40001) as
https://chromium.googlesource.com/v8/v8/+/b16febbc3f9217a5aa6e16df111e0eace43...

Powered by Google App Engine
This is Rietveld 408576698