< prev index next >

src/hotspot/share/interpreter/templateInterpreterGenerator.cpp

Print this page
@@ -188,10 +188,11 @@
    method_entry(zerolocals_synchronized)
    method_entry(empty)
    method_entry(getter)
    method_entry(setter)
    method_entry(abstract)
+   method_entry(object_init)
    method_entry(java_lang_math_sin  )
    method_entry(java_lang_math_cos  )
    method_entry(java_lang_math_tan  )
    method_entry(java_lang_math_sinh )
    method_entry(java_lang_math_tanh )

@@ -415,10 +416,11 @@
    case Interpreter::native                 :                           break;
    case Interpreter::native_synchronized    : synchronized = true;      break;
    case Interpreter::empty                  : break;
    case Interpreter::getter                 : break;
    case Interpreter::setter                 : break;
+   case Interpreter::object_init            : break;
    case Interpreter::abstract               : entry_point = generate_abstract_entry(); break;
    default:
      entry_point = generate_intrinsic_entry(kind); // process the rest
      break;
    }

@@ -427,18 +429,21 @@
      return entry_point;
    }
  
    // We expect the normal and native entry points to be generated first so we can reuse them.
    if (native) {
+     assert(kind != Interpreter::object_init, "Not supported");
      entry_point = Interpreter::entry_for_kind(synchronized ? Interpreter::native_synchronized : Interpreter::native);
      if (entry_point == nullptr) {
        entry_point = generate_native_entry(synchronized);
      }
    } else {
-     entry_point = Interpreter::entry_for_kind(synchronized ? Interpreter::zerolocals_synchronized : Interpreter::zerolocals);
+     entry_point = kind == Interpreter::object_init ?
+                   Interpreter::entry_for_kind(Interpreter::object_init) :
+                   Interpreter::entry_for_kind(synchronized ? Interpreter::zerolocals_synchronized : Interpreter::zerolocals);
      if (entry_point == nullptr) {
-       entry_point = generate_normal_entry(synchronized);
+       entry_point = generate_normal_entry(synchronized, kind == Interpreter::object_init);
      }
    }
  
    return entry_point;
  }
< prev index next >