124 #define gen(env, var, type_func_gen, c_func, fancy_jump, pass_tls, save_arg_regs, return_pc) \ 125 var = generate_stub(env, type_func_gen, CAST_FROM_FN_PTR(address, c_func), #var, fancy_jump, pass_tls, save_arg_regs, return_pc); \ 126 if (var == NULL) { return false; } 127 128 bool OptoRuntime::generate(ciEnv* env) { 129 130 generate_exception_blob(); 131 132 // Note: tls: Means fetching the return oop out of the thread-local storage 133 // 134 // variable/name type-function-gen , runtime method ,fncy_jp, tls,save_args,retpc 135 // ------------------------------------------------------------------------------------------------------------------------------- 136 gen(env, _new_instance_Java , new_instance_Type , new_instance_C , 0 , true , false, false); 137 gen(env, _new_array_Java , new_array_Type , new_array_C , 0 , true , false, false); 138 gen(env, _new_array_nozero_Java , new_array_Type , new_array_nozero_C , 0 , true , false, false); 139 gen(env, _multianewarray2_Java , multianewarray2_Type , multianewarray2_C , 0 , true , false, false); 140 gen(env, _multianewarray3_Java , multianewarray3_Type , multianewarray3_C , 0 , true , false, false); 141 gen(env, _multianewarray4_Java , multianewarray4_Type , multianewarray4_C , 0 , true , false, false); 142 gen(env, _multianewarray5_Java , multianewarray5_Type , multianewarray5_C , 0 , true , false, false); 143 gen(env, _multianewarrayN_Java , multianewarrayN_Type , multianewarrayN_C , 0 , true , false, false); 144 gen(env, _g1_wb_pre_Java , g1_wb_pre_Type , SharedRuntime::g1_wb_pre , 0 , false, false, false); 145 gen(env, _g1_wb_post_Java , g1_wb_post_Type , SharedRuntime::g1_wb_post , 0 , false, false, false); 146 gen(env, _complete_monitor_locking_Java , complete_monitor_enter_Type , SharedRuntime::complete_monitor_locking_C, 0, false, false, false); 147 gen(env, _monitor_notify_Java , monitor_notify_Type , monitor_notify_C , 0 , false, false, false); 148 gen(env, _monitor_notifyAll_Java , monitor_notify_Type , monitor_notifyAll_C , 0 , false, false, false); 149 gen(env, _rethrow_Java , rethrow_Type , rethrow_C , 2 , true , false, true ); 150 151 gen(env, _slow_arraycopy_Java , slow_arraycopy_Type , SharedRuntime::slow_arraycopy_C , 0 , false, false, false); 152 gen(env, _register_finalizer_Java , register_finalizer_Type , register_finalizer , 0 , false, false, false); 153 154 return true; 155 } 156 157 #undef gen 158 159 160 // Helper method to do generation of RunTimeStub's 161 address OptoRuntime::generate_stub( ciEnv* env, 162 TypeFunc_generator gen, address C_function, 163 const char *name, int is_fancy_jump, 164 bool pass_tls, 165 bool save_argument_registers, | 124 #define gen(env, var, type_func_gen, c_func, fancy_jump, pass_tls, save_arg_regs, return_pc) \ 125 var = generate_stub(env, type_func_gen, CAST_FROM_FN_PTR(address, c_func), #var, fancy_jump, pass_tls, save_arg_regs, return_pc); \ 126 if (var == NULL) { return false; } 127 128 bool OptoRuntime::generate(ciEnv* env) { 129 130 generate_exception_blob(); 131 132 // Note: tls: Means fetching the return oop out of the thread-local storage 133 // 134 // variable/name type-function-gen , runtime method ,fncy_jp, tls,save_args,retpc 135 // ------------------------------------------------------------------------------------------------------------------------------- 136 gen(env, _new_instance_Java , new_instance_Type , new_instance_C , 0 , true , false, false); 137 gen(env, _new_array_Java , new_array_Type , new_array_C , 0 , true , false, false); 138 gen(env, _new_array_nozero_Java , new_array_Type , new_array_nozero_C , 0 , true , false, false); 139 gen(env, _multianewarray2_Java , multianewarray2_Type , multianewarray2_C , 0 , true , false, false); 140 gen(env, _multianewarray3_Java , multianewarray3_Type , multianewarray3_C , 0 , true , false, false); 141 gen(env, _multianewarray4_Java , multianewarray4_Type , multianewarray4_C , 0 , true , false, false); 142 gen(env, _multianewarray5_Java , multianewarray5_Type , multianewarray5_C , 0 , true , false, false); 143 gen(env, _multianewarrayN_Java , multianewarrayN_Type , multianewarrayN_C , 0 , true , false, false); 144 #if INCLUDE_G1GC 145 gen(env, _g1_wb_pre_Java , g1_wb_pre_Type , SharedRuntime::g1_wb_pre , 0 , false, false, false); 146 gen(env, _g1_wb_post_Java , g1_wb_post_Type , SharedRuntime::g1_wb_post , 0 , false, false, false); 147 #endif // INCLUDE_G1GC 148 gen(env, _complete_monitor_locking_Java , complete_monitor_enter_Type , SharedRuntime::complete_monitor_locking_C, 0, false, false, false); 149 gen(env, _monitor_notify_Java , monitor_notify_Type , monitor_notify_C , 0 , false, false, false); 150 gen(env, _monitor_notifyAll_Java , monitor_notify_Type , monitor_notifyAll_C , 0 , false, false, false); 151 gen(env, _rethrow_Java , rethrow_Type , rethrow_C , 2 , true , false, true ); 152 153 gen(env, _slow_arraycopy_Java , slow_arraycopy_Type , SharedRuntime::slow_arraycopy_C , 0 , false, false, false); 154 gen(env, _register_finalizer_Java , register_finalizer_Type , register_finalizer , 0 , false, false, false); 155 156 return true; 157 } 158 159 #undef gen 160 161 162 // Helper method to do generation of RunTimeStub's 163 address OptoRuntime::generate_stub( ciEnv* env, 164 TypeFunc_generator gen, address C_function, 165 const char *name, int is_fancy_jump, 166 bool pass_tls, 167 bool save_argument_registers, |