comparison src/cpu/x86/vm/stubGenerator_x86_32.cpp @ 4137:04b9a2566eec

Merge with hsx23/hotspot.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Sat, 17 Dec 2011 21:40:27 +0100
parents f08d439fab8c
children 33df1aeaebbf
comparison
equal deleted inserted replaced
3737:9dc19b7d89a3 4137:04b9a2566eec
44 #ifdef TARGET_OS_FAMILY_solaris 44 #ifdef TARGET_OS_FAMILY_solaris
45 # include "thread_solaris.inline.hpp" 45 # include "thread_solaris.inline.hpp"
46 #endif 46 #endif
47 #ifdef TARGET_OS_FAMILY_windows 47 #ifdef TARGET_OS_FAMILY_windows
48 # include "thread_windows.inline.hpp" 48 # include "thread_windows.inline.hpp"
49 #endif
50 #ifdef TARGET_OS_FAMILY_bsd
51 # include "thread_bsd.inline.hpp"
49 #endif 52 #endif
50 #ifdef COMPILER2 53 #ifdef COMPILER2
51 #include "opto/runtime.hpp" 54 #include "opto/runtime.hpp"
52 #endif 55 #endif
53 56
2202 // which has the ability to fetch the return PC out of 2205 // which has the ability to fetch the return PC out of
2203 // thread-local storage and also sets up last_Java_sp slightly 2206 // thread-local storage and also sets up last_Java_sp slightly
2204 // differently than the real call_VM 2207 // differently than the real call_VM
2205 Register java_thread = rbx; 2208 Register java_thread = rbx;
2206 __ get_thread(java_thread); 2209 __ get_thread(java_thread);
2207 if (restore_saved_exception_pc) {
2208 __ movptr(rax, Address(java_thread, in_bytes(JavaThread::saved_exception_pc_offset())));
2209 __ push(rax);
2210 }
2211 2210
2212 __ enter(); // required for proper stackwalking of RuntimeStub frame 2211 __ enter(); // required for proper stackwalking of RuntimeStub frame
2213 2212
2214 // pc and rbp, already pushed 2213 // pc and rbp, already pushed
2215 __ subptr(rsp, (framesize-2) * wordSize); // prolog 2214 __ subptr(rsp, (framesize-2) * wordSize); // prolog
2330 void generate_all() { 2329 void generate_all() {
2331 // Generates all stubs and initializes the entry points 2330 // Generates all stubs and initializes the entry points
2332 2331
2333 // These entry points require SharedInfo::stack0 to be set up in non-core builds 2332 // These entry points require SharedInfo::stack0 to be set up in non-core builds
2334 // and need to be relocatable, so they each fabricate a RuntimeStub internally. 2333 // and need to be relocatable, so they each fabricate a RuntimeStub internally.
2335 StubRoutines::_throw_AbstractMethodError_entry = generate_throw_exception("AbstractMethodError throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_AbstractMethodError), false); 2334 StubRoutines::_throw_AbstractMethodError_entry = generate_throw_exception("AbstractMethodError throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_AbstractMethodError));
2336 StubRoutines::_throw_IncompatibleClassChangeError_entry= generate_throw_exception("IncompatibleClassChangeError throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_IncompatibleClassChangeError), false); 2335 StubRoutines::_throw_IncompatibleClassChangeError_entry= generate_throw_exception("IncompatibleClassChangeError throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_IncompatibleClassChangeError));
2337 StubRoutines::_throw_ArithmeticException_entry = generate_throw_exception("ArithmeticException throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_ArithmeticException), true); 2336 StubRoutines::_throw_NullPointerException_at_call_entry= generate_throw_exception("NullPointerException at call throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_NullPointerException_at_call));
2338 StubRoutines::_throw_NullPointerException_entry = generate_throw_exception("NullPointerException throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_NullPointerException), true); 2337 StubRoutines::_throw_StackOverflowError_entry = generate_throw_exception("StackOverflowError throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_StackOverflowError));
2339 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);
2340 StubRoutines::_throw_StackOverflowError_entry = generate_throw_exception("StackOverflowError throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_StackOverflowError), false);
2341 2338
2342 //------------------------------------------------------------------------------------------------------------------------ 2339 //------------------------------------------------------------------------------------------------------------------------
2343 // entry points that are platform specific 2340 // entry points that are platform specific
2344 2341
2345 // support for verify_oop (must happen after universe_init) 2342 // support for verify_oop (must happen after universe_init)