< prev index next > src/hotspot/share/c1/c1_FrameMap.hpp
Print this page
static LIR_Opr as_address_opr(Register r) {
return LIR_OprFact::single_cpu_address(cpu_reg2rnr(r));
}
FrameMap(ciMethod* method, int monitors, int reserved_argument_area_size);
- bool finalize_frame(int nof_slots);
+ bool finalize_frame(int nof_slots, bool needs_stack_repair);
int reserved_argument_area_size () const { return _reserved_argument_area_size; }
int framesize () const { assert(_framesize != -1, "hasn't been calculated"); return _framesize; }
ByteSize framesize_in_bytes () const { return in_ByteSize(framesize() * 4); }
int num_monitors () const { return _num_monitors; }
return make_new_address(sp_offset_for_monitor_lock(monitor_index));
}
Address address_for_monitor_object(int monitor_index) const {
return make_new_address(sp_offset_for_monitor_object(monitor_index));
}
+ Address address_for_orig_pc_addr() const {
+ return make_new_address(sp_offset_for_monitor_base(_num_monitors));
+ }
// Creates Location describing desired slot and returns it via pointer
// to Location object. Returns true if the stack frame offset was legal
// (as defined by Location::legal_offset_in_bytes()), false otherwise.
// Do not use the returned location if this returns false.
< prev index next >