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

Issue 1423063005: VM: Speculative inlining in precompiled code. (Closed)

Created:
5 years, 1 month ago by Florian Schneider
Modified:
5 years, 1 month ago
Reviewers:
rmacnak, srdjan
CC:
reviews_dartlang.org, vm-dev_dartlang.org
Base URL:
git@github.com:dart-lang/sdk.git@master
Target Ref:
refs/heads/master
Visibility:
Public.

Description

VM: Speculative inlining in precompiled code. Enable inlining of certain smi- and array-operations based on propagated types and range analysis: If bounds checks and class checks can not be eliminated, bail out of the current optimization and retry without speculative inlining using the same mechanism as we use for far jumps on MIPS. Allow more speculative inlining attempts with up to n deopt ids black-listed. For now set n=1 since precompilation time will be proportional to n. BUG= R=srdjan@google.com Committed: https://github.com/dart-lang/sdk/commit/dce89b9b5b71a417b9f8779af0ea1b0d88dc0d07

Patch Set 1 #

Patch Set 2 : add retry #

Total comments: 30

Patch Set 3 : addressed Srdjan's commments #

Total comments: 4

Patch Set 4 : addressed comments #

Unified diffs Side-by-side diffs Delta from patch set Stats (+123 lines, -8 lines) Patch
M runtime/vm/compiler.cc View 1 2 3 4 chunks +36 lines, -2 lines 0 comments Download
M runtime/vm/flow_graph_compiler.cc View 1 2 2 chunks +12 lines, -1 line 0 comments Download
M runtime/vm/flow_graph_optimizer.h View 1 2 3 2 chunks +15 lines, -2 lines 0 comments Download
M runtime/vm/flow_graph_optimizer.cc View 1 2 3 chunks +40 lines, -2 lines 0 comments Download
M runtime/vm/flow_graph_range_analysis.cc View 1 2 2 chunks +6 lines, -1 line 0 comments Download
M runtime/vm/object.h View 1 2 chunks +6 lines, -0 lines 0 comments Download
M runtime/vm/object.cc View 1 4 chunks +8 lines, -0 lines 0 comments Download

Messages

Total messages: 8 (2 generated)
Florian Schneider
https://codereview.chromium.org/1423063005/diff/20001/runtime/vm/compiler.cc File runtime/vm/compiler.cc (right): https://codereview.chromium.org/1423063005/diff/20001/runtime/vm/compiler.cc#newcode513 runtime/vm/compiler.cc:513: optimizer.ApplyClassIds(); Adding an early pass of specializing based on ...
5 years, 1 month ago (2015-11-17 12:39:25 UTC) #3
srdjan
https://codereview.chromium.org/1423063005/diff/20001/runtime/vm/compiler.cc File runtime/vm/compiler.cc (right): https://codereview.chromium.org/1423063005/diff/20001/runtime/vm/compiler.cc#newcode422 runtime/vm/compiler.cc:422: intptr_t val = setjmp(*jump.Set()); Add Comment that val may ...
5 years, 1 month ago (2015-11-17 17:35:24 UTC) #4
Florian Schneider
https://codereview.chromium.org/1423063005/diff/20001/runtime/vm/compiler.cc File runtime/vm/compiler.cc (right): https://codereview.chromium.org/1423063005/diff/20001/runtime/vm/compiler.cc#newcode422 runtime/vm/compiler.cc:422: intptr_t val = setjmp(*jump.Set()); On 2015/11/17 17:35:23, srdjan wrote: ...
5 years, 1 month ago (2015-11-17 19:38:57 UTC) #5
srdjan
lgtm https://codereview.chromium.org/1423063005/diff/40001/runtime/vm/compiler.cc File runtime/vm/compiler.cc (right): https://codereview.chromium.org/1423063005/diff/40001/runtime/vm/compiler.cc#newcode891 runtime/vm/compiler.cc:891: #ifdef DEBUG #if defined(DEBUG) ... probably both equivalent, ...
5 years, 1 month ago (2015-11-17 20:39:19 UTC) #6
Florian Schneider
Committed patchset #4 (id:60001) manually as dce89b9b5b71a417b9f8779af0ea1b0d88dc0d07 (presubmit successful).
5 years, 1 month ago (2015-11-18 13:56:11 UTC) #7
Florian Schneider
5 years, 1 month ago (2015-11-18 14:01:05 UTC) #8
Message was sent while issue was closed.
https://codereview.chromium.org/1423063005/diff/40001/runtime/vm/compiler.cc
File runtime/vm/compiler.cc (right):

https://codereview.chromium.org/1423063005/diff/40001/runtime/vm/compiler.cc#...
runtime/vm/compiler.cc:891: #ifdef DEBUG
On 2015/11/17 20:39:19, srdjan wrote:
> #if defined(DEBUG)  ... probably both equivalent, but we try to use #if
> defined(..) consistently.

Yes, they are equivalent.

https://codereview.chromium.org/1423063005/diff/40001/runtime/vm/flow_graph_o...
File runtime/vm/flow_graph_optimizer.h (right):

https://codereview.chromium.org/1423063005/diff/40001/runtime/vm/flow_graph_o...
runtime/vm/flow_graph_optimizer.h:21: GrowableArray<intptr_t>* black_list =
NULL)
On 2015/11/17 20:39:19, srdjan wrote:
> s/black_list/inlining_black_list/

Done.

Powered by Google App Engine
This is Rietveld 408576698