< prev index next >

src/hotspot/share/interpreter/abstractInterpreter.cpp

Print this page
@@ -144,10 +144,11 @@
        case vmIntrinsics::_dpow:              return java_lang_math_pow;
        case vmIntrinsics::_dexp:              return java_lang_math_exp;
        case vmIntrinsics::_fmaD:              return java_lang_math_fmaD;
        case vmIntrinsics::_fmaF:              return java_lang_math_fmaF;
        case vmIntrinsics::_Reference_get:     return java_lang_ref_reference_get;
+       case vmIntrinsics::_Continuation_doYield: return java_lang_continuation_doYield;
        case vmIntrinsics::_dsqrt:
          // _dsqrt will be selected for both Math::sqrt and StrictMath::sqrt, but the latter
          // is native. Keep treating it like a native method in the interpreter
          assert(m->name() == vmSymbols::sqrt_name() &&
                 (m->klass_name() == vmSymbols::java_lang_Math() ||

@@ -164,10 +165,13 @@
      }
    }
  
    // Native method?
    if (m->is_native()) {
+     if (m->is_continuation_enter_intrinsic()) {
+       return zerolocals;
+     }
      assert(!m->is_method_handle_intrinsic(), "overlapping bits here, watch out");
      return m->is_synchronized() ? native_synchronized : native;
    }
  
    // Synchronized?

@@ -188,10 +192,18 @@
    // Setter method?
    if (m->is_setter()) {
      return setter;
    }
  
+   // Symbol* kname = m->klass_name();
+   // Symbol* name = m->name();
+   // if (kname == vmSymbols::jdk_internal_vm_Continuation()) {
+   //   if (name == vmSymbols::enter_name()) {
+   //     return java_lang_continuation_enter;
+   //   }
+   // }
+ 
    // Note: for now: zero locals for all non-empty methods
    return zerolocals;
  }
  
  void AbstractInterpreter::set_entry_for_kind(AbstractInterpreter::MethodKind kind, address entry) {
< prev index next >