OSDN Git Service

Revert "Revert "Move rewritten StringFactory call results into dex registers for...
authorMingyao Yang <mingyao@google.com>
Thu, 19 May 2016 17:48:40 +0000 (10:48 -0700)
committerMingyao Yang <mingyao@google.com>
Fri, 20 May 2016 18:36:18 +0000 (11:36 -0700)
commitffedec510c07cf0f77d0cce51940838f2e630514
tree7b21bd86b08f2750bab8d4fd9f23a721ec4eba84
parent247250f28028a5b2260ba2eb0a7f555a183b996a
Revert "Revert "Move rewritten StringFactory call results into dex registers for deopt""

Potential gc points can make the result value stale. We now set the result value
to null proactively once it's moved to shadow frame registers. IsStringInit()
is written in a way that does string comparison instead of requiring method
resolution so that it doesn't have a gc point. Also we don't cache the callee
method during frame unwinding since the method may be rewritten already.

Bug: 28555675

Change-Id: Ic51511a4a0fc84a852d8d907f91e7835f49ac478
runtime/interpreter/interpreter.cc
runtime/interpreter/interpreter_common.cc
runtime/interpreter/interpreter_common.h
test/597-deopt-new-string/src/Main.java