102 address OptoRuntime::_multianewarray3_Java = NULL; 103 address OptoRuntime::_multianewarray4_Java = NULL; 104 address OptoRuntime::_multianewarray5_Java = NULL; 105 address OptoRuntime::_multianewarrayN_Java = NULL; 106 address OptoRuntime::_g1_wb_pre_Java = NULL; 107 address OptoRuntime::_g1_wb_post_Java = NULL; 108 address OptoRuntime::_vtable_must_compile_Java = NULL; 109 address OptoRuntime::_complete_monitor_locking_Java = NULL; 110 address OptoRuntime::_rethrow_Java = NULL; 111 112 address OptoRuntime::_slow_arraycopy_Java = NULL; 113 address OptoRuntime::_register_finalizer_Java = NULL; 114 115 # ifdef ENABLE_ZAP_DEAD_LOCALS 116 address OptoRuntime::_zap_dead_Java_locals_Java = NULL; 117 address OptoRuntime::_zap_dead_native_locals_Java = NULL; 118 # endif 119 120 ExceptionBlob* OptoRuntime::_exception_blob; 121 122 // This should be called in an assertion at the start of OptoRuntime routines 123 // which are entered from compiled code (all of them) 124 #ifdef ASSERT 125 static bool check_compiled_frame(JavaThread* thread) { 126 assert(thread->last_frame().is_runtime_frame(), "cannot call runtime directly from compiled code"); 127 RegisterMap map(thread, false); 128 frame caller = thread->last_frame().sender(&map); 129 assert(caller.is_compiled_frame(), "not being called from compiled like code"); 130 return true; 131 } 132 #endif // ASSERT 133 134 135 #define gen(env, var, type_func_gen, c_func, fancy_jump, pass_tls, save_arg_regs, return_pc) \ 136 var = generate_stub(env, type_func_gen, CAST_FROM_FN_PTR(address, c_func), #var, fancy_jump, pass_tls, save_arg_regs, return_pc); \ 137 if (var == NULL) { return false; } 138 139 bool OptoRuntime::generate(ciEnv* env) { 140 141 generate_exception_blob(); 142 143 // Note: tls: Means fetching the return oop out of the thread-local storage 144 // 145 // variable/name type-function-gen , runtime method ,fncy_jp, tls,save_args,retpc 146 // ------------------------------------------------------------------------------------------------------------------------------- 147 gen(env, _new_instance_Java , new_instance_Type , new_instance_C , 0 , true , false, false); 148 gen(env, _new_array_Java , new_array_Type , new_array_C , 0 , true , false, false); 149 gen(env, _new_array_nozero_Java , new_array_Type , new_array_nozero_C , 0 , true , false, false); 150 gen(env, _multianewarray2_Java , multianewarray2_Type , multianewarray2_C , 0 , true , false, false); 151 gen(env, _multianewarray3_Java , multianewarray3_Type , multianewarray3_C , 0 , true , false, false); 152 gen(env, _multianewarray4_Java , multianewarray4_Type , multianewarray4_C , 0 , true , false, false); 153 gen(env, _multianewarray5_Java , multianewarray5_Type , multianewarray5_C , 0 , true , false, false); 154 gen(env, _multianewarrayN_Java , multianewarrayN_Type , multianewarrayN_C , 0 , true , false, false); 155 gen(env, _g1_wb_pre_Java , g1_wb_pre_Type , SharedRuntime::g1_wb_pre , 0 , false, false, false); 156 gen(env, _g1_wb_post_Java , g1_wb_post_Type , SharedRuntime::g1_wb_post , 0 , false, false, false); 157 gen(env, _complete_monitor_locking_Java , complete_monitor_enter_Type , SharedRuntime::complete_monitor_locking_C, 0, false, false, false); 158 gen(env, _rethrow_Java , rethrow_Type , rethrow_C , 2 , true , false, true ); 159 160 gen(env, _slow_arraycopy_Java , slow_arraycopy_Type , SharedRuntime::slow_arraycopy_C , 0 , false, false, false); 161 gen(env, _register_finalizer_Java , register_finalizer_Type , register_finalizer , 0 , false, false, false); | 102 address OptoRuntime::_multianewarray3_Java = NULL; 103 address OptoRuntime::_multianewarray4_Java = NULL; 104 address OptoRuntime::_multianewarray5_Java = NULL; 105 address OptoRuntime::_multianewarrayN_Java = NULL; 106 address OptoRuntime::_g1_wb_pre_Java = NULL; 107 address OptoRuntime::_g1_wb_post_Java = NULL; 108 address OptoRuntime::_vtable_must_compile_Java = NULL; 109 address OptoRuntime::_complete_monitor_locking_Java = NULL; 110 address OptoRuntime::_rethrow_Java = NULL; 111 112 address OptoRuntime::_slow_arraycopy_Java = NULL; 113 address OptoRuntime::_register_finalizer_Java = NULL; 114 115 # ifdef ENABLE_ZAP_DEAD_LOCALS 116 address OptoRuntime::_zap_dead_Java_locals_Java = NULL; 117 address OptoRuntime::_zap_dead_native_locals_Java = NULL; 118 # endif 119 120 ExceptionBlob* OptoRuntime::_exception_blob; 121 122 RuntimeStub* OptoRuntime::_complete_monitor_unlocking_wrapper; 123 124 // This should be called in an assertion at the start of OptoRuntime routines 125 // which are entered from compiled code (all of them) 126 #ifdef ASSERT 127 static bool check_compiled_frame(JavaThread* thread) { 128 assert(thread->last_frame().is_runtime_frame(), "cannot call runtime directly from compiled code"); 129 RegisterMap map(thread, false); 130 frame caller = thread->last_frame().sender(&map); 131 assert(caller.is_compiled_frame(), "not being called from compiled like code"); 132 return true; 133 } 134 #endif // ASSERT 135 136 137 #define gen(env, var, type_func_gen, c_func, fancy_jump, pass_tls, save_arg_regs, return_pc) \ 138 var = generate_stub(env, type_func_gen, CAST_FROM_FN_PTR(address, c_func), #var, fancy_jump, pass_tls, save_arg_regs, return_pc); \ 139 if (var == NULL) { return false; } 140 141 bool OptoRuntime::generate(ciEnv* env) { 142 143 generate_exception_blob(); 144 145 generate_complete_monitor_unlocking_wrapper(); 146 147 // Note: tls: Means fetching the return oop out of the thread-local storage 148 // 149 // variable/name type-function-gen , runtime method ,fncy_jp, tls,save_args,retpc 150 // ------------------------------------------------------------------------------------------------------------------------------- 151 gen(env, _new_instance_Java , new_instance_Type , new_instance_C , 0 , true , false, false); 152 gen(env, _new_array_Java , new_array_Type , new_array_C , 0 , true , false, false); 153 gen(env, _new_array_nozero_Java , new_array_Type , new_array_nozero_C , 0 , true , false, false); 154 gen(env, _multianewarray2_Java , multianewarray2_Type , multianewarray2_C , 0 , true , false, false); 155 gen(env, _multianewarray3_Java , multianewarray3_Type , multianewarray3_C , 0 , true , false, false); 156 gen(env, _multianewarray4_Java , multianewarray4_Type , multianewarray4_C , 0 , true , false, false); 157 gen(env, _multianewarray5_Java , multianewarray5_Type , multianewarray5_C , 0 , true , false, false); 158 gen(env, _multianewarrayN_Java , multianewarrayN_Type , multianewarrayN_C , 0 , true , false, false); 159 gen(env, _g1_wb_pre_Java , g1_wb_pre_Type , SharedRuntime::g1_wb_pre , 0 , false, false, false); 160 gen(env, _g1_wb_post_Java , g1_wb_post_Type , SharedRuntime::g1_wb_post , 0 , false, false, false); 161 gen(env, _complete_monitor_locking_Java , complete_monitor_enter_Type , SharedRuntime::complete_monitor_locking_C, 0, false, false, false); 162 gen(env, _rethrow_Java , rethrow_Type , rethrow_C , 2 , true , false, true ); 163 164 gen(env, _slow_arraycopy_Java , slow_arraycopy_Type , SharedRuntime::slow_arraycopy_C , 0 , false, false, false); 165 gen(env, _register_finalizer_Java , register_finalizer_Type , register_finalizer , 0 , false, false, false); |