1.1 --- a/src/cpu/zero/vm/cppInterpreter_zero.cpp Tue Apr 05 19:14:03 2011 -0700 1.2 +++ b/src/cpu/zero/vm/cppInterpreter_zero.cpp Thu Apr 07 09:53:20 2011 -0700 1.3 @@ -737,6 +737,26 @@ 1.4 return generate_entry((address) CppInterpreter::accessor_entry); 1.5 } 1.6 1.7 +address InterpreterGenerator::generate_Reference_get_entry(void) { 1.8 +#ifndef SERIALGC 1.9 + if (UseG1GC) { 1.10 + // We need to generate have a routine that generates code to: 1.11 + // * load the value in the referent field 1.12 + // * passes that value to the pre-barrier. 1.13 + // 1.14 + // In the case of G1 this will record the value of the 1.15 + // referent in an SATB buffer if marking is active. 1.16 + // This will cause concurrent marking to mark the referent 1.17 + // field as live. 1.18 + Unimplemented(); 1.19 + } 1.20 +#endif // SERIALGC 1.21 + 1.22 + // If G1 is not enabled then attempt to go through the accessor entry point 1.23 + // Reference.get is an accessor 1.24 + return generate_accessor_entry(); 1.25 +} 1.26 + 1.27 address InterpreterGenerator::generate_native_entry(bool synchronized) { 1.28 assert(synchronized == false, "should be"); 1.29 1.30 @@ -792,6 +812,10 @@ 1.31 entry_point = ((InterpreterGenerator*) this)->generate_math_entry(kind); 1.32 break; 1.33 1.34 + case Interpreter::java_lang_ref_reference_get: 1.35 + entry_point = ((InterpreterGenerator*)this)->generate_Reference_get_entry(); 1.36 + break; 1.37 + 1.38 default: 1.39 ShouldNotReachHere(); 1.40 }