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

Split Close
Expand all
Collapse all
          --- old/src/share/vm/interpreter/interpreter.cpp
          +++ new/src/share/vm/interpreter/interpreter.cpp
↓ open down ↓ 200 lines elided ↑ open up ↑
 201  201      // We need to execute the special return bytecode to check for
 202  202      // finalizer registration so create a normal frame.
 203  203      return zerolocals;
 204  204    }
 205  205  
 206  206    // Empty method?
 207  207    if (m->is_empty_method()) {
 208  208      return empty;
 209  209    }
 210  210  
 211      -  // Accessor method?
 212      -  if (m->is_accessor()) {
 213      -    assert(m->size_of_parameters() == 1, "fast code for accessors assumes parameter size = 1");
 214      -    return accessor;
 215      -  }
 216      -
 217  211    // Special intrinsic method?
 218  212    // Note: This test must come _after_ the test for native methods,
 219  213    //       otherwise we will run into problems with JDK 1.2, see also
 220  214    //       AbstractInterpreterGenerator::generate_method_entry() for
 221  215    //       for details.
 222  216    switch (m->intrinsic_id()) {
 223  217      case vmIntrinsics::_dsin  : return java_lang_math_sin  ;
 224  218      case vmIntrinsics::_dcos  : return java_lang_math_cos  ;
 225  219      case vmIntrinsics::_dtan  : return java_lang_math_tan  ;
 226  220      case vmIntrinsics::_dabs  : return java_lang_math_abs  ;
 227  221      case vmIntrinsics::_dsqrt : return java_lang_math_sqrt ;
 228  222      case vmIntrinsics::_dlog  : return java_lang_math_log  ;
 229  223      case vmIntrinsics::_dlog10: return java_lang_math_log10;
      224 +
      225 +    case vmIntrinsics::_Reference_get:
      226 +                                return java_lang_ref_reference_get;
      227 +  }
      228 +
      229 +  // Accessor method?
      230 +  if (m->is_accessor()) {
      231 +    assert(m->size_of_parameters() == 1, "fast code for accessors assumes parameter size = 1");
      232 +    return accessor;
 230  233    }
 231  234  
 232  235    // Note: for now: zero locals for all non-empty methods
 233  236    return zerolocals;
 234  237  }
 235  238  
 236  239  
 237  240  // Return true if the interpreter can prove that the given bytecode has
 238  241  // not yet been executed (in Java semantics, not in actual operation).
 239  242  bool AbstractInterpreter::is_not_reached(methodHandle method, int bci) {
↓ open down ↓ 196 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX