--- a/hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp Fri Sep 09 13:47:11 2011 -0700
+++ b/hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp Sat Sep 10 00:11:04 2011 -0700
@@ -935,6 +935,8 @@
__ pusha(); // push registers
Address next_pc(rsp, RegisterImpl::number_of_registers * BytesPerWord);
+ // FIXME: this probably needs alignment logic
+
__ subptr(rsp, frame::arg_reg_save_area_bytes);
BLOCK_COMMENT("call handle_unsafe_access");
__ call(RuntimeAddress(CAST_FROM_FN_PTR(address, handle_unsafe_access)));
@@ -2934,7 +2936,6 @@
// caller saved registers were assumed volatile in the compiler.
address generate_throw_exception(const char* name,
address runtime_entry,
- bool restore_saved_exception_pc,
Register arg1 = noreg,
Register arg2 = noreg) {
// Information about frame layout at time of blocking runtime call.
@@ -2962,12 +2963,6 @@
// which has the ability to fetch the return PC out of
// thread-local storage and also sets up last_Java_sp slightly
// differently than the real call_VM
- if (restore_saved_exception_pc) {
- __ movptr(rax,
- Address(r15_thread,
- in_bytes(JavaThread::saved_exception_pc_offset())));
- __ push(rax);
- }
__ enter(); // required for proper stackwalking of RuntimeStub frame
@@ -3068,7 +3063,7 @@
StubRoutines::_throw_WrongMethodTypeException_entry =
generate_throw_exception("WrongMethodTypeException throw_exception",
CAST_FROM_FN_PTR(address, SharedRuntime::throw_WrongMethodTypeException),
- false, rax, rcx);
+ rax, rcx);
}
void generate_all() {
@@ -3081,43 +3076,25 @@
generate_throw_exception("AbstractMethodError throw_exception",
CAST_FROM_FN_PTR(address,
SharedRuntime::
- throw_AbstractMethodError),
- false);
+ throw_AbstractMethodError));
StubRoutines::_throw_IncompatibleClassChangeError_entry =
generate_throw_exception("IncompatibleClassChangeError throw_exception",
CAST_FROM_FN_PTR(address,
SharedRuntime::
- throw_IncompatibleClassChangeError),
- false);
-
- StubRoutines::_throw_ArithmeticException_entry =
- generate_throw_exception("ArithmeticException throw_exception",
- CAST_FROM_FN_PTR(address,
- SharedRuntime::
- throw_ArithmeticException),
- true);
-
- StubRoutines::_throw_NullPointerException_entry =
- generate_throw_exception("NullPointerException throw_exception",
- CAST_FROM_FN_PTR(address,
- SharedRuntime::
- throw_NullPointerException),
- true);
+ throw_IncompatibleClassChangeError));
StubRoutines::_throw_NullPointerException_at_call_entry =
generate_throw_exception("NullPointerException at call throw_exception",
CAST_FROM_FN_PTR(address,
SharedRuntime::
- throw_NullPointerException_at_call),
- false);
+ throw_NullPointerException_at_call));
StubRoutines::_throw_StackOverflowError_entry =
generate_throw_exception("StackOverflowError throw_exception",
CAST_FROM_FN_PTR(address,
SharedRuntime::
- throw_StackOverflowError),
- false);
+ throw_StackOverflowError));
// entry points that are platform specific
StubRoutines::x86::_f2i_fixup = generate_f2i_fixup();