< prev index next >

src/hotspot/share/interpreter/abstractInterpreter.cpp

Print this page
@@ -169,21 +169,24 @@
      if (m->is_continuation_native_intrinsic()) {
        // This entry will never be called.  The real entry gets generated later, like for MH intrinsics.
        return abstract;
      }
      assert(!m->is_method_handle_intrinsic(), "overlapping bits here, watch out");
-     return m->is_synchronized() ? native_synchronized : native;
+     if (m->is_synchronized()) {
+       return m->has_upcall_on_method_entry() ? native_synchronized_upcalls : native_synchronized;
+     }
+     return m->has_upcall_on_method_entry() ? native_upcalls : native;
    }
  
    // Synchronized?
    if (m->is_synchronized()) {
-     return zerolocals_synchronized;
+     return m->has_upcall_on_method_entry() ? zerolocals_synchronized_upcalls : zerolocals_synchronized;
    }
  
    // Empty method?
    if (m->is_empty_method()) {
-     return empty;
+     return m->has_upcall_on_method_entry() ? empty_upcalls : empty;
    }
  
    // Getter method?
    if (m->is_getter()) {
      return getter;

@@ -193,11 +196,11 @@
    if (m->is_setter()) {
      return setter;
    }
  
    // Note: for now: zero locals for all non-empty methods
-   return zerolocals;
+   return m->has_upcall_on_method_entry() ? zerolocals_upcalls : zerolocals;
  }
  
  vmIntrinsics::ID AbstractInterpreter::method_intrinsic(MethodKind kind) {
    switch (kind) {
    case java_lang_math_sin         : return vmIntrinsics::_dsin;
< prev index next >