DescriptionFixes 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 : #
Messages
Total messages: 4 (0 generated)
|