< prev index next >

src/hotspot/share/oops/method.hpp

Print this page

@@ -88,11 +88,12 @@
     _dont_inline           = 1 << 2,
     _hidden                = 1 << 3,
     _has_injected_profile  = 1 << 4,
     _running_emcp          = 1 << 5,
     _intrinsic_candidate   = 1 << 6,
-    _reserved_stack_access = 1 << 7
+    _reserved_stack_access = 1 << 7,
+    _is_returning_vt       = 1 << 8
   };
   mutable u2 _flags;
 
   JFR_ONLY(DEFINE_TRACE_FLAG;)
 

@@ -579,11 +580,10 @@
 
   void compute_size_of_parameters(Thread *thread); // word size of parameters (receiver if any + arguments)
   Symbol* klass_name() const;                    // returns the name of the method holder
   BasicType result_type() const;                 // type of the method result
   bool may_return_oop() const                    { BasicType r = result_type(); return (r == T_OBJECT || r == T_ARRAY ||  r == T_VALUETYPE); }
-  bool is_returning_vt() const                   { BasicType r = result_type(); return r == T_VALUETYPE; }
 #ifdef ASSERT
   ValueKlass* returned_value_type(Thread* thread) const;
 #endif
 
   // Checked exceptions thrown by this method (resolved to mirrors)

@@ -693,10 +693,11 @@
   // interpreter support
   static ByteSize const_offset()                 { return byte_offset_of(Method, _constMethod       ); }
   static ByteSize access_flags_offset()          { return byte_offset_of(Method, _access_flags      ); }
   static ByteSize from_compiled_offset()         { return byte_offset_of(Method, _from_compiled_entry); }
   static ByteSize code_offset()                  { return byte_offset_of(Method, _code); }
+  static ByteSize flags_offset()                 { return byte_offset_of(Method, _flags); }
   static ByteSize method_data_offset()           {
     return byte_offset_of(Method, _method_data);
   }
   static ByteSize method_counters_offset()       {
     return byte_offset_of(Method, _method_counters);

@@ -894,10 +895,22 @@
 
   void set_has_reserved_stack_access(bool x) {
     _flags = x ? (_flags | _reserved_stack_access) : (_flags & ~_reserved_stack_access);
   }
 
+  static int is_returning_vt_mask() {
+    return _is_returning_vt;
+  }
+
+  bool is_returning_vt() const {
+    return (_flags & _is_returning_vt) != 0;
+  }
+
+  void set_is_returning_vt() {
+    _flags |= _is_returning_vt;
+  }
+
   JFR_ONLY(DEFINE_TRACE_FLAG_ACCESSOR;)
 
   ConstMethod::MethodType method_type() const {
       return _constMethod->method_type();
   }
< prev index next >