Print this page
rev 2161 : [mq]: initial-intrinsification-changes

Split Close
Expand all
Collapse all
          --- old/src/cpu/x86/vm/cppInterpreter_x86.cpp
          +++ new/src/cpu/x86/vm/cppInterpreter_x86.cpp
↓ open down ↓ 928 lines elided ↑ open up ↑
 929  929  
 930  930      __ jmp(fast_accessor_slow_entry_path);
 931  931      return entry_point;
 932  932  
 933  933    } else {
 934  934      return NULL;
 935  935    }
 936  936  
 937  937  }
 938  938  
      939 +address InterpreterGenerator::generate_Reference_get_entry(void) {
      940 +#ifndef SERIALGC
      941 +  if (UseG1GC) {
      942 +    // We need to generate have a routine that generates code to:
      943 +    //   * load the value in the referent field
      944 +    //   * passes that value to the pre-barrier.
      945 +    //
      946 +    // In the case of G1 this will record the value of the
      947 +    // referent in an SATB buffer if marking is active.
      948 +    // This will cause concurrent marking to mark the referent
      949 +    // field as live.
      950 +    Unimplemented();
      951 +  }
      952 +#endif // SERIALGC
      953 +
      954 +  // If G1 is not enabled then attempt to go through the accessor entry point
      955 +  // Reference.get is an accessor
      956 +  return generate_accessor_entry();
      957 +}
      958 +
 939  959  //
 940  960  // C++ Interpreter stub for calling a native method.
 941  961  // This sets up a somewhat different looking stack for calling the native method
 942  962  // than the typical interpreter frame setup but still has the pointer to
 943  963  // an interpreter state.
 944  964  //
 945  965  
 946  966  address InterpreterGenerator::generate_native_entry(bool synchronized) {
 947  967    // determine code generation flags
 948  968    bool inc_counter  = UseCompiler || CountCompiledCalls;
↓ open down ↓ 1254 lines elided ↑ open up ↑
2203 2223      case Interpreter::abstract               : entry_point = ((InterpreterGenerator*)this)->generate_abstract_entry();     break;
2204 2224      case Interpreter::method_handle          : entry_point = ((InterpreterGenerator*)this)->generate_method_handle_entry(); break;
2205 2225  
2206 2226      case Interpreter::java_lang_math_sin     : // fall thru
2207 2227      case Interpreter::java_lang_math_cos     : // fall thru
2208 2228      case Interpreter::java_lang_math_tan     : // fall thru
2209 2229      case Interpreter::java_lang_math_abs     : // fall thru
2210 2230      case Interpreter::java_lang_math_log     : // fall thru
2211 2231      case Interpreter::java_lang_math_log10   : // fall thru
2212 2232      case Interpreter::java_lang_math_sqrt    : entry_point = ((InterpreterGenerator*)this)->generate_math_entry(kind);     break;
     2233 +    case Interpreter::java_lang_ref_reference_get
     2234 +                                             : entry_point = ((InterpreterGenerator*)this)->generate_Reference_get_entry(); break;
2213 2235      default                                  : ShouldNotReachHere();                                                       break;
2214 2236    }
2215 2237  
2216 2238    if (entry_point) return entry_point;
2217 2239  
2218 2240    return ((InterpreterGenerator*)this)->generate_normal_entry(synchronized);
2219 2241  
2220 2242  }
2221 2243  
2222 2244  InterpreterGenerator::InterpreterGenerator(StubQueue* code)
↓ open down ↓ 211 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX