< prev index next >

src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/NMethod.java

Print this page
rev 13301 : 8185102: TestSAServer.java fails due to "sun.jvm.hotspot.types.WrongTypeException: field "_stack_traversal_mark"


  54   private static CIntegerField nmethodEndOffsetField;
  55 
  56   /** Offsets for entry points */
  57   /** Entry point with class check */
  58   private static AddressField  entryPointField;
  59   /** Entry point without class check */
  60   private static AddressField  verifiedEntryPointField;
  61   /** Entry point for on stack replacement */
  62   private static AddressField  osrEntryPointField;
  63 
  64   // FIXME: add access to flags (how?)
  65 
  66   /** NMethod Flushing lock (if non-zero, then the nmethod is not removed) */
  67   private static JIntField     lockCountField;
  68 
  69   /** not_entrant method removal. Each mark_sweep pass will update
  70       this mark to current sweep invocation count if it is seen on the
  71       stack.  An not_entrant method can be removed when there is no
  72       more activations, i.e., when the _stack_traversal_mark is less than
  73       current sweep traversal index. */
  74   private static CIntegerField stackTraversalMarkField;
  75 
  76   private static CIntegerField compLevelField;
  77 
  78   static {
  79     VM.registerVMInitializedObserver(new Observer() {
  80         public void update(Observable o, Object data) {
  81           initialize(VM.getVM().getTypeDataBase());
  82         }
  83       });
  84   }
  85 
  86   private static void initialize(TypeDataBase db) {
  87     Type type = db.lookupType("nmethod");
  88 
  89     entryBCIField               = type.getCIntegerField("_entry_bci");
  90     osrLinkField                = type.getAddressField("_osr_link");
  91     scavengeRootLinkField       = type.getAddressField("_scavenge_root_link");
  92     scavengeRootStateField      = type.getJByteField("_scavenge_root_state");
  93 
  94     exceptionOffsetField        = type.getCIntegerField("_exception_offset");
  95     origPCOffsetField           = type.getCIntegerField("_orig_pc_offset");
  96     stubOffsetField             = type.getCIntegerField("_stub_offset");
  97     oopsOffsetField             = type.getCIntegerField("_oops_offset");
  98     metadataOffsetField         = type.getCIntegerField("_metadata_offset");
  99     scopesPCsOffsetField        = type.getCIntegerField("_scopes_pcs_offset");
 100     dependenciesOffsetField     = type.getCIntegerField("_dependencies_offset");
 101     handlerTableOffsetField     = type.getCIntegerField("_handler_table_offset");
 102     nulChkTableOffsetField      = type.getCIntegerField("_nul_chk_table_offset");
 103     nmethodEndOffsetField       = type.getCIntegerField("_nmethod_end_offset");
 104     entryPointField             = type.getAddressField("_entry_point");
 105     verifiedEntryPointField     = type.getAddressField("_verified_entry_point");
 106     osrEntryPointField          = type.getAddressField("_osr_entry_point");
 107     lockCountField              = type.getJIntField("_lock_count");
 108     stackTraversalMarkField     = type.getCIntegerField("_stack_traversal_mark");
 109     compLevelField              = type.getCIntegerField("_comp_level");
 110     pcDescSize = db.lookupType("PcDesc").getSize();
 111   }
 112 
 113   public NMethod(Address addr) {
 114     super(addr);
 115   }
 116 
 117   // Accessors
 118   public Address getAddress() {
 119     return addr;
 120   }
 121 
 122   // Type info
 123   public boolean isNMethod()      { return true;                    }
 124   public boolean isJavaMethod()   { return !getMethod().isNative(); }
 125   public boolean isNativeMethod() { return getMethod().isNative();  }
 126   public boolean isOSRMethod()    { return getEntryBCI() != VM.getVM().getInvocationEntryBCI(); }
 127 
 128   /** Boundaries for different parts */




  54   private static CIntegerField nmethodEndOffsetField;
  55 
  56   /** Offsets for entry points */
  57   /** Entry point with class check */
  58   private static AddressField  entryPointField;
  59   /** Entry point without class check */
  60   private static AddressField  verifiedEntryPointField;
  61   /** Entry point for on stack replacement */
  62   private static AddressField  osrEntryPointField;
  63 
  64   // FIXME: add access to flags (how?)
  65 
  66   /** NMethod Flushing lock (if non-zero, then the nmethod is not removed) */
  67   private static JIntField     lockCountField;
  68 
  69   /** not_entrant method removal. Each mark_sweep pass will update
  70       this mark to current sweep invocation count if it is seen on the
  71       stack.  An not_entrant method can be removed when there is no
  72       more activations, i.e., when the _stack_traversal_mark is less than
  73       current sweep traversal index. */
  74   private static JLongField stackTraversalMarkField;
  75 
  76   private static CIntegerField compLevelField;
  77 
  78   static {
  79     VM.registerVMInitializedObserver(new Observer() {
  80         public void update(Observable o, Object data) {
  81           initialize(VM.getVM().getTypeDataBase());
  82         }
  83       });
  84   }
  85 
  86   private static void initialize(TypeDataBase db) {
  87     Type type = db.lookupType("nmethod");
  88 
  89     entryBCIField               = type.getCIntegerField("_entry_bci");
  90     osrLinkField                = type.getAddressField("_osr_link");
  91     scavengeRootLinkField       = type.getAddressField("_scavenge_root_link");
  92     scavengeRootStateField      = type.getJByteField("_scavenge_root_state");
  93 
  94     exceptionOffsetField        = type.getCIntegerField("_exception_offset");
  95     origPCOffsetField           = type.getCIntegerField("_orig_pc_offset");
  96     stubOffsetField             = type.getCIntegerField("_stub_offset");
  97     oopsOffsetField             = type.getCIntegerField("_oops_offset");
  98     metadataOffsetField         = type.getCIntegerField("_metadata_offset");
  99     scopesPCsOffsetField        = type.getCIntegerField("_scopes_pcs_offset");
 100     dependenciesOffsetField     = type.getCIntegerField("_dependencies_offset");
 101     handlerTableOffsetField     = type.getCIntegerField("_handler_table_offset");
 102     nulChkTableOffsetField      = type.getCIntegerField("_nul_chk_table_offset");
 103     nmethodEndOffsetField       = type.getCIntegerField("_nmethod_end_offset");
 104     entryPointField             = type.getAddressField("_entry_point");
 105     verifiedEntryPointField     = type.getAddressField("_verified_entry_point");
 106     osrEntryPointField          = type.getAddressField("_osr_entry_point");
 107     lockCountField              = type.getJIntField("_lock_count");
 108     stackTraversalMarkField     = type.getJLongField("_stack_traversal_mark");
 109     compLevelField              = type.getCIntegerField("_comp_level");
 110     pcDescSize = db.lookupType("PcDesc").getSize();
 111   }
 112 
 113   public NMethod(Address addr) {
 114     super(addr);
 115   }
 116 
 117   // Accessors
 118   public Address getAddress() {
 119     return addr;
 120   }
 121 
 122   // Type info
 123   public boolean isNMethod()      { return true;                    }
 124   public boolean isJavaMethod()   { return !getMethod().isNative(); }
 125   public boolean isNativeMethod() { return getMethod().isNative();  }
 126   public boolean isOSRMethod()    { return getEntryBCI() != VM.getVM().getInvocationEntryBCI(); }
 127 
 128   /** Boundaries for different parts */


< prev index next >