35 extern "C" { 36 address _flush_reg_windows(); // in .s file. 37 // Flush registers to stack. In case of error we will need to stack walk. 38 address bootstrap_flush_windows(void) { 39 Thread* thread = ThreadLocalStorage::get_thread_slow(); 40 // Very early in process there is no thread. 41 if (thread != NULL) { 42 guarantee(thread->is_Java_thread(), "Not a Java thread."); 43 JavaThread* jt = (JavaThread*)thread; 44 guarantee(!jt->has_last_Java_frame(), "Must be able to flush registers!"); 45 } 46 return (address)_flush_reg_windows(); 47 }; 48 }; 49 50 address StubRoutines::Sparc::_test_stop_entry = NULL; 51 address StubRoutines::Sparc::_stop_subroutine_entry = NULL; 52 address StubRoutines::Sparc::_flush_callers_register_windows_entry = CAST_FROM_FN_PTR(address, bootstrap_flush_windows); 53 54 address StubRoutines::Sparc::_partial_subtype_check = NULL; 55 56 int StubRoutines::Sparc::_atomic_memory_operation_lock = StubRoutines::Sparc::unlocked; 57 58 int StubRoutines::Sparc::_v8_oop_lock_cache[StubRoutines::Sparc::nof_v8_oop_lock_cache_entries]; | 35 extern "C" { 36 address _flush_reg_windows(); // in .s file. 37 // Flush registers to stack. In case of error we will need to stack walk. 38 address bootstrap_flush_windows(void) { 39 Thread* thread = ThreadLocalStorage::get_thread_slow(); 40 // Very early in process there is no thread. 41 if (thread != NULL) { 42 guarantee(thread->is_Java_thread(), "Not a Java thread."); 43 JavaThread* jt = (JavaThread*)thread; 44 guarantee(!jt->has_last_Java_frame(), "Must be able to flush registers!"); 45 } 46 return (address)_flush_reg_windows(); 47 }; 48 }; 49 50 address StubRoutines::Sparc::_test_stop_entry = NULL; 51 address StubRoutines::Sparc::_stop_subroutine_entry = NULL; 52 address StubRoutines::Sparc::_flush_callers_register_windows_entry = CAST_FROM_FN_PTR(address, bootstrap_flush_windows); 53 54 address StubRoutines::Sparc::_partial_subtype_check = NULL; |