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

Issue 246303004: Fixes bug where we would occasionally materialize a corrupted object. (Closed)

Created:
6 years, 8 months ago by turnidge
Modified:
6 years, 8 months ago
Reviewers:
Florian Schneider
CC:
reviews_dartlang.org, vm-dev_dartlang.org, Vyacheslav Egorov (Google)
Visibility:
Public.

Description

Fixes bug where we would occasionally materialize a corrupted object. On the slow path for a stack overflow check we manually spill the live registers before our call to the runtime function. We were updating all uses of these spilled registers in the Environment object but this was not enough - we also need to update any uses of these spilled registers in MaterializeObjectInstrs which are hanging off of the Environment. This would fail when a deoptimization was triggered during a stack overflow check and a materialized object happened to refer to registers. I've been chasing this for a while and I was able to get it to reliably reproduce by using the --stacktrace_every=N and the --stacktrace_filter flags, which were added for this purpose. ALSO: Set the top context to null on exceptions/errors. This is needed for the --verify-incoming-context flag. Minor printing improvements. R=fschneider@google.com Committed: https://code.google.com/p/dart/source/detail?r=35443

Patch Set 1 #

Patch Set 2 : #

Total comments: 4

Patch Set 3 : #

Patch Set 4 : #

Unified diffs Side-by-side diffs Delta from patch set Stats (+87 lines, -10 lines) Patch
M runtime/vm/deferred_objects.cc View 1 chunk +10 lines, -6 lines 0 comments Download
M runtime/vm/exceptions.cc View 1 2 2 chunks +2 lines, -0 lines 0 comments Download
M runtime/vm/flow_graph_compiler.cc View 1 2 2 chunks +18 lines, -4 lines 0 comments Download
M runtime/vm/il_printer.cc View 1 chunk +7 lines, -0 lines 0 comments Download
M runtime/vm/intermediate_language.h View 1 2 2 chunks +4 lines, -0 lines 0 comments Download
M runtime/vm/intermediate_language.cc View 1 2 1 chunk +37 lines, -0 lines 0 comments Download
M runtime/vm/locations.h View 1 chunk +1 line, -0 lines 0 comments Download
M runtime/vm/locations.cc View 1 chunk +8 lines, -0 lines 0 comments Download

Messages

Total messages: 4 (0 generated)
turnidge
Florian please take a look at this change. It fixes a problem in deoptimization that ...
6 years, 8 months ago (2014-04-22 17:10:38 UTC) #1
Florian Schneider
Lgtm. https://codereview.chromium.org/246303004/diff/10001/runtime/vm/intermediate_language.cc File runtime/vm/intermediate_language.cc (right): https://codereview.chromium.org/246303004/diff/10001/runtime/vm/intermediate_language.cc#newcode2052 runtime/vm/intermediate_language.cc:2052: // OS::PrintErr("REMAPPING register xx(%d)\n", loc.reg()); Remove commented-out code. ...
6 years, 8 months ago (2014-04-25 05:55:32 UTC) #2
turnidge
https://codereview.chromium.org/246303004/diff/10001/runtime/vm/intermediate_language.cc File runtime/vm/intermediate_language.cc (right): https://codereview.chromium.org/246303004/diff/10001/runtime/vm/intermediate_language.cc#newcode2052 runtime/vm/intermediate_language.cc:2052: // OS::PrintErr("REMAPPING register xx(%d)\n", loc.reg()); On 2014/04/25 05:55:33, Florian ...
6 years, 8 months ago (2014-04-25 20:16:33 UTC) #3
turnidge
6 years, 8 months ago (2014-04-25 20:24:50 UTC) #4
Message was sent while issue was closed.
Committed patchset #4 manually as r35443 (presubmit successful).

Powered by Google App Engine
This is Rietveld 408576698