1.1 --- a/src/share/vm/opto/runtime.cpp Wed Jun 04 13:51:09 2008 -0700 1.2 +++ b/src/share/vm/opto/runtime.cpp Thu Jun 05 15:57:56 2008 -0700 1.3 @@ -44,6 +44,8 @@ 1.4 address OptoRuntime::_multianewarray3_Java = NULL; 1.5 address OptoRuntime::_multianewarray4_Java = NULL; 1.6 address OptoRuntime::_multianewarray5_Java = NULL; 1.7 +address OptoRuntime::_g1_wb_pre_Java = NULL; 1.8 +address OptoRuntime::_g1_wb_post_Java = NULL; 1.9 address OptoRuntime::_vtable_must_compile_Java = NULL; 1.10 address OptoRuntime::_complete_monitor_locking_Java = NULL; 1.11 address OptoRuntime::_rethrow_Java = NULL; 1.12 @@ -89,6 +91,8 @@ 1.13 gen(env, _multianewarray3_Java , multianewarray3_Type , multianewarray3_C , 0 , true , false, false); 1.14 gen(env, _multianewarray4_Java , multianewarray4_Type , multianewarray4_C , 0 , true , false, false); 1.15 gen(env, _multianewarray5_Java , multianewarray5_Type , multianewarray5_C , 0 , true , false, false); 1.16 + gen(env, _g1_wb_pre_Java , g1_wb_pre_Type , SharedRuntime::g1_wb_pre , 0 , false, false, false); 1.17 + gen(env, _g1_wb_post_Java , g1_wb_post_Type , SharedRuntime::g1_wb_post , 0 , false, false, false); 1.18 gen(env, _complete_monitor_locking_Java , complete_monitor_enter_Type , SharedRuntime::complete_monitor_locking_C , 0 , false, false, false); 1.19 gen(env, _rethrow_Java , rethrow_Type , rethrow_C , 2 , true , false, true ); 1.20 1.21 @@ -385,6 +389,33 @@ 1.22 return multianewarray_Type(5); 1.23 } 1.24 1.25 +const TypeFunc *OptoRuntime::g1_wb_pre_Type() { 1.26 + const Type **fields = TypeTuple::fields(2); 1.27 + fields[TypeFunc::Parms+0] = TypeInstPtr::NOTNULL; // original field value 1.28 + fields[TypeFunc::Parms+1] = TypeRawPtr::NOTNULL; // thread 1.29 + const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+2, fields); 1.30 + 1.31 + // create result type (range) 1.32 + fields = TypeTuple::fields(0); 1.33 + const TypeTuple *range = TypeTuple::make(TypeFunc::Parms+0, fields); 1.34 + 1.35 + return TypeFunc::make(domain, range); 1.36 +} 1.37 + 1.38 +const TypeFunc *OptoRuntime::g1_wb_post_Type() { 1.39 + 1.40 + const Type **fields = TypeTuple::fields(2); 1.41 + fields[TypeFunc::Parms+0] = TypeRawPtr::NOTNULL; // Card addr 1.42 + fields[TypeFunc::Parms+1] = TypeRawPtr::NOTNULL; // thread 1.43 + const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+2, fields); 1.44 + 1.45 + // create result type (range) 1.46 + fields = TypeTuple::fields(0); 1.47 + const TypeTuple *range = TypeTuple::make(TypeFunc::Parms, fields); 1.48 + 1.49 + return TypeFunc::make(domain, range); 1.50 +} 1.51 + 1.52 const TypeFunc *OptoRuntime::uncommon_trap_Type() { 1.53 // create input type (domain) 1.54 const Type **fields = TypeTuple::fields(1);