src/cpu/sparc/vm/cppInterpreter_sparc.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/cpu/sparc/vm/cppInterpreter_sparc.cpp	Tue Jan 20 02:13:44 2009
--- new/src/cpu/sparc/vm/cppInterpreter_sparc.cpp	Tue Jan 20 02:13:44 2009

*** 1015,1024 **** --- 1015,1025 ---- // that returns a result. const int slop_factor = 2*wordSize; const int fixed_size = ((sizeof(BytecodeInterpreter) + slop_factor) >> LogBytesPerWord) + // what is the slop factor? + methodOopDesc::extra_stack() + // extra push slot for MH insertion frame::memory_parameter_word_sp_offset + // register save area + param window (native ? frame::interpreter_frame_extra_outgoing_argument_words : 0); // JNI, class // XXX G5_method valid
*** 1161,1170 **** --- 1162,1173 ---- __ sub(O2, wordSize, O2); // prepush __ st_ptr(O2, XXX_STATE(_stack)); // PREPUSH __ lduh(max_stack, O3); // Full size expression stack + if (MethodHandle) + __ inc(O3, methodOopDesc::extra_stack()); __ sll(O3, LogBytesPerWord, O3); __ sub(O2, O3, O3); // __ sub(O3, wordSize, O3); // so prepush doesn't look out of bounds __ st_ptr(O3, XXX_STATE(_stack_limit));
*** 2015,2025 **** --- 2018,2030 ---- // is "slop_factor" here. const int slop_factor = 2; const int fixed_size = sizeof(BytecodeInterpreter)/wordSize + // interpreter state object frame::memory_parameter_word_sp_offset; // register save area + param window + const int extra_stack = methodOopDesc::extra_stack(); return (round_to(max_stack + + extra_stack + slop_factor + fixed_size + monitor_size + (callee_extra_locals * Interpreter::stackElementWords()), WordsPerLong));
*** 2102,2112 **** --- 2107,2118 ---- to_fill->_oop_temp = NULL; to_fill->_stack_base = stack_base; // Need +1 here because stack_base points to the word just above the first expr stack entry // and stack_limit is supposed to point to the word just below the last expr stack entry. // See generate_compute_interpreter_state. ! to_fill->_stack_limit = stack_base - (method->max_stack() + 1); ! int extra_stack = methodOopDesc::extra_stack(); + to_fill->_stack_limit = stack_base - (method->max_stack() + 1 + extra_stack); to_fill->_monitor_base = (BasicObjectLock*) monitor_base; // sparc specific to_fill->_frame_bottom = frame_bottom; to_fill->_self_link = to_fill;

src/cpu/sparc/vm/cppInterpreter_sparc.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File