oop* compiled_vframe::register_contents_addr(Location r) { if (!isInFrame(r) && (RecompilationInProgress || ConversionInProgress || currentProcess->isUncommon())) { return special_register_contents_addr(r); } return (oop*) fr->location_addr(r, rl); }
int32 spOffset(Location reg, fint totalFrameSize) { // return offset (in bytes) off of sp if (isRegister(reg)) { assert(isInFrame(reg), "can't access this register"); return (first_register_offset - StackFromRegister[reg]) * oopSize; } else if (isStackRegister(reg)) { return (totalFrameSize + local_slots_offset + StackLocations - reg) * oopSize; } else if (isExtraArgRegister(reg)) { return (extra_arg_offset + ExtraArgLocations - reg) * oopSize; } else { assert(isExtraIArgRegister(reg), "not a stack register"); // reg is <= ExtraIArgLocations, arg_bottom_offset is from sp return (totalFrameSize + arg_bottom_offset + ExtraIArgLocations - reg) * oopSize; } }