summaryrefslogtreecommitdiffstats
path: root/compiler/dex/quick/mips/codegen_mips.h
diff options
context:
space:
mode:
authorVladimir Marko <vmarko@google.com>2015-03-20 12:47:30 +0000
committerVladimir Marko <vmarko@google.com>2015-03-20 21:58:07 +0000
commit767c752fddc64e280dba507457e4f06002b5f678 (patch)
tree3c7ee2333290b6d634e3cb5e0ab49d6cbee9c096 /compiler/dex/quick/mips/codegen_mips.h
parent0b40ecf156e309aa17c72a28cd1b0237dbfb8746 (diff)
downloadandroid_art-767c752fddc64e280dba507457e4f06002b5f678.tar.gz
android_art-767c752fddc64e280dba507457e4f06002b5f678.tar.bz2
android_art-767c752fddc64e280dba507457e4f06002b5f678.zip
Quick: Create GC map based on compiler data.
The Quick compiler and verifier sometimes disagree on dalvik register types (fp/core/ref) for 0/null constants and merged registers involving 0/null constants. Since the verifier is more lenient it can mark a register as a reference for GC where Quick considers it a floating point register or a dead register (which would have a ref/fp conflict if not dead). If the compiler used an fp register to hold the zero value, the core register or stack location used by GC based on the verifier data can hold an invalid value. Previously, as a workaround we stored the fp zero value also in the stack location or core register where GC would look for it. This wasn't precise and may have missed some cases. To fix this properly, we now generate GC maps based on the compiler's notion of references if register promotion is enabled. Bug: https://code.google.com/p/android/issues/detail?id=147187 Change-Id: Id3a2f863b16bdb8969df7004c868773084aec421
Diffstat (limited to 'compiler/dex/quick/mips/codegen_mips.h')
0 files changed, 0 insertions, 0 deletions