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

Issue 1136223004: Unify reading of deoptimization information. (Closed)

Created:
5 years, 7 months ago by Jarin
Modified:
5 years, 5 months ago
Reviewers:
Benedikt Meurer
CC:
v8-dev, Michael Starzinger, danno
Base URL:
https://chromium.googlesource.com/v8/v8.git@master
Target Ref:
refs/pending/heads/master
Project:
v8
Visibility:
Public.

Description

Unify decoding of deoptimization translations. This unifies methods Deoptimizer::DoTranslateCommand, Deotpimizer::DoTranslateObject and the arguments object materializer. To unify these, we have to separate reading of the input frame from writing to the output frame because the argument materializer does not write to output frames. Instead, we now deoptimize in following stages: 1. Read out the input frame/registers, decode them using the translations from the deoptimizer and store them in the deoptimizer (Deoptimizer::translated_state_). This is done in TranslatedState::Init. 2. Write out into the output frame buffer all the values that do not require allocation. We also remember references to the values that require materialization. As before, this is done in Deoptimizer::DoCompute*Frame method, but instead calling to DoTranslateCommand, we use the translated frame to obtain the values and write them to the output frames. 3. The platform specific code then sets up the output frames and calls into the deoptimization notification. This has not been changed at all. 4. Once the stack is setup, we handlify all the references in the saved translated values (TranslatedState::Prepare). 5. Finally, we materialize all the values we remembered in step (1) and write them to their frames on the stack (using the TranslatedValue::GetValue method). BUG= Committed: https://crrev.com/9127d4eef4248c6a5266c6ed9e9a32a4ce2423eb Cr-Commit-Position: refs/heads/master@{#28826}

Patch Set 1 #

Patch Set 2 : Replace SlotRefValueBuilder #

Patch Set 3 : Fix to make Win happier #

Patch Set 4 : Tweaks #

Patch Set 5 : Rebase #

Patch Set 6 : Eager Smi materialization for doubles, size_t fix #

Patch Set 7 : Using new deoptimizer everywhere now #

Patch Set 8 : Remove the old translation logic #

Patch Set 9 : Rebase #

Total comments: 14

Patch Set 10 : Address review comments #

Patch Set 11 : Fix too restrictive check #

Unified diffs Side-by-side diffs Delta from patch set Stats (+1691 lines, -1887 lines) Patch
M src/accessors.cc View 1 2 3 4 5 6 7 8 9 1 chunk +26 lines, -10 lines 0 comments Download
M src/arm/lithium-codegen-arm.cc View 1 2 3 4 5 6 7 8 1 chunk +1 line, -1 line 0 comments Download
M src/arm64/lithium-codegen-arm64.cc View 1 2 3 4 5 6 7 8 1 chunk +1 line, -1 line 0 comments Download
M src/deoptimizer.h View 1 2 3 4 5 6 7 8 9 13 chunks +323 lines, -209 lines 0 comments Download
M src/deoptimizer.cc View 1 2 3 4 5 6 7 8 9 10 25 chunks +1312 lines, -1649 lines 0 comments Download
M src/ia32/lithium-codegen-ia32.cc View 1 2 3 4 5 6 7 8 1 chunk +1 line, -1 line 0 comments Download
M src/mips/lithium-codegen-mips.cc View 1 2 3 4 5 6 7 8 1 chunk +1 line, -1 line 0 comments Download
M src/mips64/lithium-codegen-mips64.cc View 1 2 3 4 5 6 7 8 1 chunk +1 line, -1 line 0 comments Download
M src/ppc/lithium-codegen-ppc.cc View 1 2 3 4 5 6 7 8 1 chunk +1 line, -1 line 0 comments Download
M src/runtime/runtime-function.cc View 1 2 3 4 5 6 7 8 9 1 chunk +22 lines, -11 lines 0 comments Download
M src/x64/lithium-codegen-x64.cc View 1 2 3 4 5 6 7 8 1 chunk +1 line, -1 line 0 comments Download
M src/x87/lithium-codegen-x87.cc View 1 2 3 4 5 6 7 8 1 chunk +1 line, -1 line 0 comments Download

Messages

Total messages: 11 (2 generated)
Jarin
Benedikt, could you take a look, please? There are still some rough edges, but I ...
5 years, 6 months ago (2015-06-02 20:11:06 UTC) #2
Benedikt Meurer
Wow, this is quite heavy refactoring. But I really like the direction this is going, ...
5 years, 6 months ago (2015-06-03 04:02:17 UTC) #3
Jarin
https://codereview.chromium.org/1136223004/diff/160001/src/deoptimizer.cc File src/deoptimizer.cc (right): https://codereview.chromium.org/1136223004/diff/160001/src/deoptimizer.cc#newcode780 src/deoptimizer.cc:780: int frame_index = static_cast<int>(i); On 2015/06/03 04:02:17, Benedikt Meurer ...
5 years, 6 months ago (2015-06-03 09:28:07 UTC) #4
Benedikt Meurer
LGTM. Let's see what happens... :-)
5 years, 6 months ago (2015-06-08 08:21:53 UTC) #5
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1136223004/200001
5 years, 6 months ago (2015-06-08 09:10:30 UTC) #7
commit-bot: I haz the power
Committed patchset #11 (id:200001)
5 years, 6 months ago (2015-06-08 10:04:57 UTC) #8
commit-bot: I haz the power
Patchset 11 (id:??) landed as https://crrev.com/9127d4eef4248c6a5266c6ed9e9a32a4ce2423eb Cr-Commit-Position: refs/heads/master@{#28826}
5 years, 6 months ago (2015-06-08 10:05:05 UTC) #9
mark a. foltz
A revert of this CL (patchset #11 id:200001) has been created in https://codereview.chromium.org/1210413005/ by mfoltz@chromium.org. ...
5 years, 6 months ago (2015-06-26 19:55:05 UTC) #10
Michael Achenbach
5 years, 5 months ago (2015-06-29 13:15:50 UTC) #11
Message was sent while issue was closed.
FYI: I assume the revert never landed. This CL breaks android_arm.debug compile.
Repro:

git checkout 9127d4eef4248c6a5266c6ed9e9a32a4ce2423eb

# Optionally:
rm -rf out

# Requires target_os = ['android'] in .gclient
gclient sync --nohooks

ANDROID_NDK_ROOT=path/to/v8/third_party/android_tools/ndk
GYPFLAGS="-DOS=android" make -j32 android_arm.debug

Powered by Google App Engine
This is Rietveld 408576698