Support for promoting Method* and compiler temps
This CL completes the support for allowing compiler-generated
data to be treated as a Dalvik register and become subject to
the normal register promotion and live temp tracking machinery.
Also:
o Removes some vestigal and useless Method* loads from
range argument setup.
o Changes the Method* pseudo vReg number from -1 to -2 to
avoid a conflict with the 0xffff marker in the register map.
o Removes some experimental code for CSE at the basic block
level.
Change-Id: I112a8bbe20f95a8d789f63908c84e5fa167c74ac
diff --git a/src/context.h b/src/context.h
index 478d11e..82e8315 100644
--- a/src/context.h
+++ b/src/context.h
@@ -62,6 +62,18 @@
return table_[0];
}
+ /*
+ * WARNING: This code should be changed or renamed. The "reg"
+ * argument is a Dalvik virtual register number, but the way
+ * the vmap and register promotion works a Dalvik vReg can have
+ * neither, one or both of core register and floating point register
+ * identities. The "INVALID_VREG" marker of 0xffff below separates the
+ * core promoted registers from the floating point promoted registers,
+ * and thus terminates the search before reaching the fp section.
+ * This is likely the desired behavior for GC, as references won't
+ * ever be promoted to float registers - but we'll probably want to
+ * rework this shared code to make it useful for the debugger as well.
+ */
// Is register 'reg' in the context or on the stack?
bool IsInContext(size_t reg, uint32_t& vmap_offset) const {
vmap_offset = 0xEBAD0FF5;