src/cpu/x86/vm/frame_x86.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
8074457 Cdiff src/cpu/x86/vm/frame_x86.cpp
src/cpu/x86/vm/frame_x86.cpp
Print this page
*** 311,340 ****
// Entry frame's arguments are always in relation to unextended_sp()
return &unextended_sp()[index];
}
// sender_sp
- #ifdef CC_INTERP
- intptr_t* frame::interpreter_frame_sender_sp() const {
- assert(is_interpreted_frame(), "interpreted frame expected");
- // QQQ why does this specialize method exist if frame::sender_sp() does same thing?
- // seems odd and if we always know interpreted vs. non then sender_sp() is really
- // doing too much work.
- return get_interpreterState()->sender_sp();
- }
-
- // monitor elements
-
- BasicObjectLock* frame::interpreter_frame_monitor_begin() const {
- return get_interpreterState()->monitor_base();
- }
-
- BasicObjectLock* frame::interpreter_frame_monitor_end() const {
- return (BasicObjectLock*) get_interpreterState()->stack_base();
- }
-
- #else // CC_INTERP
intptr_t* frame::interpreter_frame_sender_sp() const {
assert(is_interpreted_frame(), "interpreted frame expected");
return (intptr_t*) at(interpreter_frame_sender_sp_offset);
}
--- 311,320 ----
*** 365,375 ****
// 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 // CC_INTERP
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
--- 345,354 ----
*** 521,533 ****
// methods that exists in the core system.
return frame(sender_sp(), link(), sender_pc());
}
bool frame::is_interpreted_frame_valid(JavaThread* thread) const {
- // QQQ
- #ifdef CC_INTERP
- #else
assert(is_interpreted_frame(), "Not an interpreted frame");
// These are reasonable sanity checks
if (fp() == 0 || (intptr_t(fp()) & (wordSize-1)) != 0) {
return false;
}
--- 500,509 ----
*** 542,552 ****
if (fp() <= sp()) { // this attempts to deal with unsigned comparison above
return false;
}
// do some validation of frame elements
-
// first the method
Method* m = *interpreter_frame_method_addr();
// validate the method we'd find in this potential sender
--- 518,527 ----
*** 577,597 ****
address locals = (address) *interpreter_frame_locals_addr();
if (locals > thread->stack_base() || locals < (address) fp()) return false;
// We'd have to be pretty unlucky to be mislead at this point
-
- #endif // CC_INTERP
return true;
}
BasicType frame::interpreter_frame_result(oop* oop_result, jvalue* value_result) {
- #ifdef CC_INTERP
- // Needed for JVMTI. The result should always be in the
- // interpreterState object
- interpreterState istate = get_interpreterState();
- #endif // CC_INTERP
assert(is_interpreted_frame(), "interpreted frame expected");
Method* method = interpreter_frame_method();
BasicType type = method->result_type();
intptr_t* tos_addr;
--- 552,565 ----
*** 617,631 ****
switch (type) {
case T_OBJECT :
case T_ARRAY : {
oop obj;
if (method->is_native()) {
- #ifdef CC_INTERP
- obj = istate->_oop_temp;
- #else
obj = cast_to_oop(at(interpreter_frame_oop_temp_offset));
- #endif // CC_INTERP
} else {
oop* obj_p = (oop*)tos_addr;
obj = (obj_p == NULL) ? (oop)NULL : *obj_p;
}
assert(obj == NULL || Universe::heap()->is_in(obj), "sanity check");
--- 585,595 ----
*** 670,680 ****
#define DESCRIBE_FP_OFFSET(name) \
values.describe(frame_no, fp() + frame::name##_offset, #name)
void frame::describe_pd(FrameValues& values, int frame_no) {
if (is_interpreted_frame()) {
- #ifndef CC_INTERP
DESCRIBE_FP_OFFSET(interpreter_frame_sender_sp);
DESCRIBE_FP_OFFSET(interpreter_frame_last_sp);
DESCRIBE_FP_OFFSET(interpreter_frame_method);
DESCRIBE_FP_OFFSET(interpreter_frame_mdp);
DESCRIBE_FP_OFFSET(interpreter_frame_cache);
--- 634,643 ----
*** 689,699 ****
for (int i = 0; i < entry_frame_after_call_words; i++) {
values.describe(frame_no, fp() - i, err_msg("call_stub word fp - %d", i));
}
#endif // AMD64
}
- #endif
}
#endif // !PRODUCT
intptr_t *frame::initial_deoptimization_info() {
// used to reset the saved FP
--- 652,661 ----
src/cpu/x86/vm/frame_x86.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File