Mercurial > hg > truffle
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) |