src/hotspot/cpu/arm/frame_arm.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
open Cdiff src/hotspot/cpu/arm/frame_arm.cpp
src/hotspot/cpu/arm/frame_arm.cpp
Print this page
*** 302,353 ****
void frame::interpreter_frame_set_monitor_end(BasicObjectLock* value) {
*((BasicObjectLock**)addr_at(interpreter_frame_monitor_block_top_offset)) = value;
}
- #ifdef AARCH64
-
- // Used by template based interpreter deoptimization
- void frame::interpreter_frame_set_stack_top(intptr_t* stack_top) {
- *((intptr_t**)addr_at(interpreter_frame_stack_top_offset)) = stack_top;
- }
-
- // Used by template based interpreter deoptimization
- void frame::interpreter_frame_set_extended_sp(intptr_t* sp) {
- *((intptr_t**)addr_at(interpreter_frame_extended_sp_offset)) = sp;
- }
-
- #else
// Used by template based interpreter deoptimization
void frame::interpreter_frame_set_last_sp(intptr_t* sp) {
*((intptr_t**)addr_at(interpreter_frame_last_sp_offset)) = sp;
}
- #endif // AARCH64
frame frame::sender_for_entry_frame(RegisterMap* map) const {
assert(map != NULL, "map must be set");
// Java frame called from C; skip all C frames and return top C
// frame of that chunk as the sender
JavaFrameAnchor* jfa = entry_frame_call_wrapper()->anchor();
assert(!entry_frame_is_first(), "next Java fp must be non zero");
assert(jfa->last_Java_sp() > sp(), "must be above this frame on stack");
map->clear();
assert(map->include_argument_oops(), "should be set by clear");
- #ifdef AARCH64
- assert (jfa->last_Java_pc() != NULL, "pc should be stored");
- frame fr(jfa->last_Java_sp(), jfa->last_Java_fp(), jfa->last_Java_pc());
- return fr;
- #else
if (jfa->last_Java_pc() != NULL) {
frame fr(jfa->last_Java_sp(), jfa->last_Java_fp(), jfa->last_Java_pc());
return fr;
}
frame fr(jfa->last_Java_sp(), jfa->last_Java_fp());
return fr;
- #endif // AARCH64
}
//------------------------------------------------------------------------------
// frame::verify_deopt_original_pc
//
--- 302,333 ----
*** 401,414 ****
//------------------------------------------------------------------------------
// frame::update_map_with_saved_link
void frame::update_map_with_saved_link(RegisterMap* map, intptr_t** link_addr) {
// see x86 for comments
map->set_location(FP->as_VMReg(), (address) link_addr);
- #ifdef AARCH64
- // also adjust a high part of register
- map->set_location(FP->as_VMReg()->next(), (address) link_addr);
- #endif // AARCH64
}
frame frame::sender_for_interpreter_frame(RegisterMap* map) const {
// SP is the raw SP from the sender after adapter or interpreter
// extension.
--- 381,390 ----
*** 537,563 ****
intptr_t* res_addr;
if (method->is_native()) {
// Prior to calling into the runtime to report the method_exit both of
// the possible return value registers are saved.
- #ifdef AARCH64
- // Return value registers are saved into the frame
- if (type == T_FLOAT || type == T_DOUBLE) {
- res_addr = addr_at(interpreter_frame_fp_saved_result_offset);
- } else {
- res_addr = addr_at(interpreter_frame_gp_saved_result_offset);
- }
- #else
// Return value registers are pushed to the native stack
res_addr = (intptr_t*)sp();
#ifdef __ABI_HARD__
// FP result is pushed onto a stack along with integer result registers
if (type == T_FLOAT || type == T_DOUBLE) {
res_addr += 2;
}
#endif // __ABI_HARD__
- #endif // AARCH64
} else {
res_addr = (intptr_t*)interpreter_frame_tos_address();
}
switch (type) {
--- 513,530 ----
*** 600,615 ****
values.describe(frame_no, fp() + frame::name##_offset, #name)
void frame::describe_pd(FrameValues& values, int frame_no) {
if (is_interpreted_frame()) {
DESCRIBE_FP_OFFSET(interpreter_frame_sender_sp);
- #ifdef AARCH64
- DESCRIBE_FP_OFFSET(interpreter_frame_stack_top);
- DESCRIBE_FP_OFFSET(interpreter_frame_extended_sp);
- #else
DESCRIBE_FP_OFFSET(interpreter_frame_last_sp);
- #endif // AARCH64
DESCRIBE_FP_OFFSET(interpreter_frame_method);
DESCRIBE_FP_OFFSET(interpreter_frame_mdp);
DESCRIBE_FP_OFFSET(interpreter_frame_cache);
DESCRIBE_FP_OFFSET(interpreter_frame_locals);
DESCRIBE_FP_OFFSET(interpreter_frame_bcp);
--- 567,577 ----
*** 629,639 ****
// used to reset the saved FP
return fp();
}
intptr_t* frame::real_fp() const {
- #ifndef AARCH64
if (is_entry_frame()) {
// Work-around: FP (currently) does not conform to the ABI for entry
// frames (see generate_call_stub). Might be worth fixing as another CR.
// Following code assumes (and asserts) this has not yet been fixed.
assert(frame::entry_frame_call_wrapper_offset == 0, "adjust this code");
--- 591,600 ----
*** 642,652 ****
#ifndef __SOFTFP__
new_fp += 8*2; // saved D8..D15
#endif
return new_fp;
}
- #endif // !AARCH64
if (_cb != NULL) {
// use the frame size if valid
int size = _cb->frame_size();
if (size > 0) {
return unextended_sp() + size;
--- 603,612 ----
src/hotspot/cpu/arm/frame_arm.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File