< prev index next >

src/share/vm/opto/runtime.cpp

Print this page




 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);


< prev index next >