src/cpu/zero/vm/cppInterpreter_zero.cpp

changeset 2781
e1162778c1c8
parent 2658
c7f3d0b4570f
child 2793
732454aaf5cb
     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    }

mercurial