void generate_all() { // Generates all stubs and initializes the entry points // These entry points require SharedInfo::stack0 to be set up in // non-core builds and need to be relocatable, so they each // fabricate a RuntimeStub internally. StubRoutines::_throw_AbstractMethodError_entry = ShouldNotCallThisStub(); StubRoutines::_throw_NullPointerException_at_call_entry = ShouldNotCallThisStub(); StubRoutines::_throw_StackOverflowError_entry = ShouldNotCallThisStub(); // support for verify_oop (must happen after universe_init) StubRoutines::_verify_oop_subroutine_entry = ShouldNotCallThisStub(); // arraycopy stubs used by compilers generate_arraycopy_stubs(); // Safefetch stubs. pthread_key_create(&g_jmpbuf_key, NULL); StubRoutines::_safefetch32_entry = CAST_FROM_FN_PTR(address, StubGenerator::SafeFetch32); StubRoutines::_safefetch32_fault_pc = NULL; StubRoutines::_safefetch32_continuation_pc = NULL; StubRoutines::_safefetchN_entry = CAST_FROM_FN_PTR(address, StubGenerator::SafeFetchN); StubRoutines::_safefetchN_fault_pc = NULL; StubRoutines::_safefetchN_continuation_pc = NULL; }
void generate_arraycopy_stubs() { // Call the conjoint generation methods immediately after // the disjoint ones so that short branches from the former // to the latter can be generated. StubRoutines::_jbyte_disjoint_arraycopy = (address) fake_arraycopy_stub; StubRoutines::_jbyte_arraycopy = (address) fake_arraycopy_stub; StubRoutines::_jshort_disjoint_arraycopy = (address) fake_arraycopy_stub; StubRoutines::_jshort_arraycopy = (address) fake_arraycopy_stub; StubRoutines::_jint_disjoint_arraycopy = (address) fake_arraycopy_stub; StubRoutines::_jint_arraycopy = (address) fake_arraycopy_stub; StubRoutines::_jlong_disjoint_arraycopy = (address) fake_arraycopy_stub; StubRoutines::_jlong_arraycopy = (address) fake_arraycopy_stub; StubRoutines::_oop_disjoint_arraycopy = ShouldNotCallThisStub(); StubRoutines::_oop_arraycopy = ShouldNotCallThisStub(); StubRoutines::_checkcast_arraycopy = ShouldNotCallThisStub(); StubRoutines::_unsafe_arraycopy = ShouldNotCallThisStub(); StubRoutines::_generic_arraycopy = ShouldNotCallThisStub(); // We don't generate specialized code for HeapWord-aligned source // arrays, so just use the code we've already generated StubRoutines::_arrayof_jbyte_disjoint_arraycopy = StubRoutines::_jbyte_disjoint_arraycopy; StubRoutines::_arrayof_jbyte_arraycopy = StubRoutines::_jbyte_arraycopy; StubRoutines::_arrayof_jshort_disjoint_arraycopy = StubRoutines::_jshort_disjoint_arraycopy; StubRoutines::_arrayof_jshort_arraycopy = StubRoutines::_jshort_arraycopy; StubRoutines::_arrayof_jint_disjoint_arraycopy = StubRoutines::_jint_disjoint_arraycopy; StubRoutines::_arrayof_jint_arraycopy = StubRoutines::_jint_arraycopy; StubRoutines::_arrayof_jlong_disjoint_arraycopy = StubRoutines::_jlong_disjoint_arraycopy; StubRoutines::_arrayof_jlong_arraycopy = StubRoutines::_jlong_arraycopy; StubRoutines::_arrayof_oop_disjoint_arraycopy = StubRoutines::_oop_disjoint_arraycopy; StubRoutines::_arrayof_oop_arraycopy = StubRoutines::_oop_arraycopy; }
void generate_all() { // Generates all stubs and initializes the entry points // These entry points require SharedInfo::stack0 to be set up in // non-core builds and need to be relocatable, so they each // fabricate a RuntimeStub internally. StubRoutines::_throw_AbstractMethodError_entry = ShouldNotCallThisStub(); StubRoutines::_throw_ArithmeticException_entry = ShouldNotCallThisStub(); StubRoutines::_throw_NullPointerException_entry = ShouldNotCallThisStub(); StubRoutines::_throw_NullPointerException_at_call_entry = ShouldNotCallThisStub(); StubRoutines::_throw_StackOverflowError_entry = ShouldNotCallThisStub(); // support for verify_oop (must happen after universe_init) StubRoutines::_verify_oop_subroutine_entry = ShouldNotCallThisStub(); // arraycopy stubs used by compilers generate_arraycopy_stubs(); }
address CppInterpreterGenerator::generate_stack_to_native_abi_converter( BasicType type) { assembler()->advance(1); return ShouldNotCallThisStub(); }
address CppInterpreterGenerator::generate_result_handler_for( BasicType type) { assembler()->advance(1); return ShouldNotCallThisStub(); }
void generate_initial() { // Generates all stubs and initializes the entry points // entry points that exist in all platforms Note: This is code // that could be shared among different platforms - however the // benefit seems to be smaller than the disadvantage of having a // much more complicated generator structure. See also comment in // stubRoutines.hpp. StubRoutines::_forward_exception_entry = ShouldNotCallThisStub(); StubRoutines::_call_stub_entry = (address) call_stub; StubRoutines::_catch_exception_entry = ShouldNotCallThisStub(); // atomic calls StubRoutines::_atomic_xchg_entry = ShouldNotCallThisStub(); StubRoutines::_atomic_xchg_ptr_entry = ShouldNotCallThisStub(); StubRoutines::_atomic_cmpxchg_entry = ShouldNotCallThisStub(); StubRoutines::_atomic_cmpxchg_ptr_entry = ShouldNotCallThisStub(); StubRoutines::_atomic_cmpxchg_long_entry = ShouldNotCallThisStub(); StubRoutines::_atomic_add_entry = ShouldNotCallThisStub(); StubRoutines::_atomic_add_ptr_entry = ShouldNotCallThisStub(); StubRoutines::_fence_entry = ShouldNotCallThisStub(); // amd64 does this here, sparc does it in generate_all() StubRoutines::_handler_for_unsafe_access_entry = ShouldNotCallThisStub(); }
static address zero_null_code_stub() { address start = ShouldNotCallThisStub(); return start; }