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

Issue 513213002: Generate some intrinsics using our IR. (Closed)

Created:
6 years, 3 months ago by Florian Schneider
Modified:
6 years, 3 months ago
CC:
reviews_dartlang.org, vm-dev_dartlang.org
Visibility:
Public.

Description

Generate some intrinsics using our IR.

Patch Set 1 #

Patch Set 2 : added ARM64 scratch register spill/restore #

Patch Set 3 : #

Total comments: 2

Patch Set 4 : #

Total comments: 10

Patch Set 5 : factored out changes to FlowGraphCompiler #

Patch Set 6 : #

Patch Set 7 : #

Total comments: 54

Patch Set 8 : addressed comments #

Total comments: 17

Patch Set 9 : addressed latest comments #

Total comments: 6

Patch Set 10 : addressed Slava's feedback #

Unified diffs Side-by-side diffs Delta from patch set Stats (+878 lines, -1043 lines) Patch
M runtime/vm/assembler_arm.h View 1 2 3 4 3 chunks +12 lines, -1 line 0 comments Download
M runtime/vm/assembler_arm.cc View 1 2 3 4 3 chunks +3 lines, -2 lines 0 comments Download
M runtime/vm/assembler_arm64.h View 1 2 3 4 2 chunks +9 lines, -0 lines 0 comments Download
M runtime/vm/assembler_arm64.cc View 1 2 3 4 5 6 7 4 chunks +22 lines, -6 lines 0 comments Download
M runtime/vm/assembler_mips.h View 3 chunks +11 lines, -1 line 0 comments Download
M runtime/vm/assembler_mips.cc View 2 chunks +2 lines, -1 line 0 comments Download
M runtime/vm/assembler_x64.h View 2 chunks +8 lines, -0 lines 0 comments Download
M runtime/vm/assembler_x64.cc View 6 chunks +21 lines, -5 lines 0 comments Download
M runtime/vm/compiler.cc View 1 chunk +1 line, -2 lines 0 comments Download
M runtime/vm/constants_arm.h View 1 chunk +1 line, -0 lines 0 comments Download
M runtime/vm/constants_arm64.h View 1 chunk +1 line, -0 lines 0 comments Download
M runtime/vm/constants_ia32.h View 1 chunk +1 line, -0 lines 0 comments Download
M runtime/vm/constants_mips.h View 1 chunk +1 line, -0 lines 0 comments Download
M runtime/vm/constants_x64.h View 1 chunk +1 line, -0 lines 0 comments Download
M runtime/vm/flow_graph.h View 2 chunks +2 lines, -2 lines 0 comments Download
M runtime/vm/flow_graph_allocator.h View 2 chunks +4 lines, -1 line 0 comments Download
M runtime/vm/flow_graph_allocator.cc View 5 chunks +27 lines, -7 lines 0 comments Download
M runtime/vm/flow_graph_builder.h View 4 chunks +2 lines, -8 lines 0 comments Download
M runtime/vm/flow_graph_builder.cc View 2 chunks +1 line, -3 lines 0 comments Download
M runtime/vm/flow_graph_compiler.h View 4 chunks +13 lines, -2 lines 0 comments Download
M runtime/vm/flow_graph_compiler.cc View 5 chunks +23 lines, -3 lines 0 comments Download
M runtime/vm/flow_graph_compiler_arm.cc View 1 chunk +14 lines, -0 lines 0 comments Download
M runtime/vm/flow_graph_compiler_arm64.cc View 1 chunk +14 lines, -0 lines 0 comments Download
M runtime/vm/flow_graph_compiler_ia32.cc View 1 chunk +12 lines, -0 lines 0 comments Download
M runtime/vm/flow_graph_compiler_mips.cc View 1 chunk +14 lines, -0 lines 0 comments Download
M runtime/vm/flow_graph_compiler_x64.cc View 1 chunk +14 lines, -0 lines 0 comments Download
M runtime/vm/flow_graph_inliner.cc View 1 chunk +1 line, -2 lines 0 comments Download
M runtime/vm/intermediate_language.h View 3 chunks +6 lines, -3 lines 0 comments Download
M runtime/vm/intermediate_language_arm.cc View 5 chunks +24 lines, -12 lines 0 comments Download
M runtime/vm/intermediate_language_arm64.cc View 5 chunks +27 lines, -13 lines 0 comments Download
M runtime/vm/intermediate_language_ia32.cc View 4 chunks +26 lines, -12 lines 0 comments Download
M runtime/vm/intermediate_language_mips.cc View 4 chunks +25 lines, -11 lines 0 comments Download
M runtime/vm/intermediate_language_x64.cc View 3 chunks +25 lines, -11 lines 0 comments Download
M runtime/vm/intrinsifier.h View 1 chunk +20 lines, -6 lines 0 comments Download
M runtime/vm/intrinsifier.cc View 5 chunks +460 lines, -13 lines 0 comments Download
M runtime/vm/intrinsifier_arm.cc View 4 chunks +1 line, -187 lines 0 comments Download
M runtime/vm/intrinsifier_arm64.cc View 4 chunks +1 line, -184 lines 0 comments Download
M runtime/vm/intrinsifier_ia32.cc View 4 chunks +1 line, -174 lines 0 comments Download
M runtime/vm/intrinsifier_mips.cc View 4 chunks +1 line, -186 lines 0 comments Download
M runtime/vm/intrinsifier_x64.cc View 4 chunks +1 line, -171 lines 0 comments Download
M runtime/vm/method_recognizer.h View 4 chunks +25 lines, -14 lines 0 comments Download

Messages

Total messages: 24 (0 generated)
Florian Schneider
fschneider@google.com changed reviewers: + srdjan@google.com, vegorov@google.com
6 years, 3 months ago (2014-08-28 16:00:59 UTC) #1
Florian Schneider
6 years, 3 months ago (2014-08-28 16:00:59 UTC) #2
zra
zra@google.com changed reviewers: + zra@google.com
6 years, 3 months ago (2014-08-28 17:40:07 UTC) #3
zra
https://codereview.chromium.org/513213002/diff/40001/runtime/vm/constants_arm64.h File runtime/vm/constants_arm64.h (right): https://codereview.chromium.org/513213002/diff/40001/runtime/vm/constants_arm64.h#newcode30 runtime/vm/constants_arm64.h:30: kLastFreeCpuRegister = 15, When writing the port, I checked ...
6 years, 3 months ago (2014-08-28 17:40:07 UTC) #4
Florian Schneider
https://codereview.chromium.org/513213002/diff/40001/runtime/vm/constants_arm64.h File runtime/vm/constants_arm64.h (right): https://codereview.chromium.org/513213002/diff/40001/runtime/vm/constants_arm64.h#newcode30 runtime/vm/constants_arm64.h:30: kLastFreeCpuRegister = 15, On 2014/08/28 17:40:07, zra wrote: > ...
6 years, 3 months ago (2014-08-29 10:30:51 UTC) #5
Florian Schneider
Updated with more intrinsics ported to the intrinsic graph builder and support for allocation (slow-path) ...
6 years, 3 months ago (2014-09-02 14:34:38 UTC) #6
srdjan
https://codereview.chromium.org/513213002/diff/60001/runtime/vm/flow_graph_allocator.cc File runtime/vm/flow_graph_allocator.cc (right): https://codereview.chromium.org/513213002/diff/60001/runtime/vm/flow_graph_allocator.cc#newcode1790 runtime/vm/flow_graph_allocator.cc:1790: split_block->loop() != NULL) { Add parentheses https://codereview.chromium.org/513213002/diff/60001/runtime/vm/flow_graph_compiler.cc File runtime/vm/flow_graph_compiler.cc ...
6 years, 3 months ago (2014-09-02 18:48:21 UTC) #7
zra
Could we split this up into 3 CLs? (Not necessarily in this order) 1. Fix ...
6 years, 3 months ago (2014-09-02 18:55:07 UTC) #8
Florian Schneider
Sorry for the size - mostly because it affects all 5 platforms, and there are ...
6 years, 3 months ago (2014-09-02 21:03:20 UTC) #9
Florian Schneider
On 2014/09/02 18:55:07, zra wrote: > Could we split this up into 3 CLs? (Not ...
6 years, 3 months ago (2014-09-02 21:05:46 UTC) #10
zra
On 2014/09/02 21:05:46, Florian Schneider wrote: > On 2014/09/02 18:55:07, zra wrote: > > Could ...
6 years, 3 months ago (2014-09-02 21:09:51 UTC) #11
srdjan
On 2014/09/02 21:09:51, zra wrote: > On 2014/09/02 21:05:46, Florian Schneider wrote: > > On ...
6 years, 3 months ago (2014-09-02 21:32:17 UTC) #12
Florian Schneider
On 2014/09/02 21:32:17, srdjan wrote: > On 2014/09/02 21:09:51, zra wrote: > > On 2014/09/02 ...
6 years, 3 months ago (2014-09-03 14:54:55 UTC) #13
Florian Schneider
New version with the changes to FlowGraphCompiler factored out. Added support for allocation (with slow-path). ...
6 years, 3 months ago (2014-09-05 12:17:34 UTC) #14
zra
Regarding loading null true and false from the pool: I think it would also be ...
6 years, 3 months ago (2014-09-05 20:26:52 UTC) #15
Florian Schneider
https://codereview.chromium.org/513213002/diff/120001/runtime/vm/assembler_arm64.cc File runtime/vm/assembler_arm64.cc (right): https://codereview.chromium.org/513213002/diff/120001/runtime/vm/assembler_arm64.cc#newcode492 runtime/vm/assembler_arm64.cc:492: if (!allow_constant_pool()) return false; On 2014/09/05 20:26:49, zra wrote: ...
6 years, 3 months ago (2014-09-08 11:12:40 UTC) #16
Florian Schneider
https://codereview.chromium.org/513213002/diff/120001/runtime/vm/assembler_x64.cc File runtime/vm/assembler_x64.cc (right): https://codereview.chromium.org/513213002/diff/120001/runtime/vm/assembler_x64.cc#newcode2593 runtime/vm/assembler_x64.cc:2593: if (!allow_constant_pool()) return false; On 2014/09/08 11:12:39, Florian Schneider ...
6 years, 3 months ago (2014-09-08 11:13:56 UTC) #17
zra
lgtm, but I'd guess srdjan and slava would also like a chance to make comments. ...
6 years, 3 months ago (2014-09-08 15:52:01 UTC) #18
srdjan
https://codereview.chromium.org/513213002/diff/60001/runtime/vm/flow_graph_compiler.cc File runtime/vm/flow_graph_compiler.cc (right): https://codereview.chromium.org/513213002/diff/60001/runtime/vm/flow_graph_compiler.cc#newcode732 runtime/vm/flow_graph_compiler.cc:732: if (intrinsic_mode()) return &intrinsic_deopt_label_; On 2014/09/02 21:03:20, Florian Schneider ...
6 years, 3 months ago (2014-09-08 17:34:07 UTC) #19
Florian Schneider
https://codereview.chromium.org/513213002/diff/140001/runtime/vm/flow_graph_allocator.cc File runtime/vm/flow_graph_allocator.cc (right): https://codereview.chromium.org/513213002/diff/140001/runtime/vm/flow_graph_allocator.cc#newcode630 runtime/vm/flow_graph_allocator.cc:630: ASSERT(param->base_reg() == FPREG || param->base_reg() == SPREG); On 2014/09/08 ...
6 years, 3 months ago (2014-09-09 09:57:08 UTC) #20
srdjan
lgtm
6 years, 3 months ago (2014-09-09 21:01:43 UTC) #21
Vyacheslav Egorov (Google)
lgtm https://codereview.chromium.org/513213002/diff/160001/runtime/vm/flow_graph_allocator.cc File runtime/vm/flow_graph_allocator.cc (right): https://codereview.chromium.org/513213002/diff/160001/runtime/vm/flow_graph_allocator.cc#newcode193 runtime/vm/flow_graph_allocator.cc:193: ASSERT(input->definition()->HasSSATemp()); This assertion is redundant. There is one ...
6 years, 3 months ago (2014-09-09 21:30:50 UTC) #22
Florian Schneider
Committed patchset #10 (id:180001) manually as r40088 (presubmit successful).
6 years, 3 months ago (2014-09-10 13:35:29 UTC) #23
Florian Schneider
6 years, 3 months ago (2014-09-10 14:20:41 UTC) #24
Message was sent while issue was closed.
https://codereview.chromium.org/513213002/diff/160001/runtime/vm/flow_graph_a...
File runtime/vm/flow_graph_allocator.cc (right):

https://codereview.chromium.org/513213002/diff/160001/runtime/vm/flow_graph_a...
runtime/vm/flow_graph_allocator.cc:193:
ASSERT(input->definition()->HasSSATemp());
On 2014/09/09 21:30:50, Vyacheslav Egorov (Google) wrote:
> This assertion is redundant. There is one in BitVector::Add(...) that checks
for
> -1

Done.

https://codereview.chromium.org/513213002/diff/160001/runtime/vm/flow_graph_a...
runtime/vm/flow_graph_allocator.cc:1790: (split_block->loop() != NULL)) {
On 2014/09/09 21:30:50, Vyacheslav Egorov (Google) wrote:
> We should have landed this change separately to isolate performance impact.

I actually planned to factor it out.

https://codereview.chromium.org/513213002/diff/160001/runtime/vm/intermediate...
File runtime/vm/intermediate_language_arm64.cc (right):

https://codereview.chromium.org/513213002/diff/160001/runtime/vm/intermediate...
runtime/vm/intermediate_language_arm64.cc:1621:
compiler->RestoreLiveRegisters(locs);
On 2014/09/09 21:30:50, Vyacheslav Egorov (Google) wrote:
> Did you verify that we use a correct safe-point when GC happens here?

As discussed, I avoid generating the slow-path for intrinsics now and go to the
common slow-path on allocation failure.

Powered by Google App Engine
This is Rietveld 408576698