< prev index next >

src/hotspot/share/interpreter/interpreter.hpp

Print this page
@@ -43,12 +43,17 @@
  // contain extra information for debugging and printing purposes.
  
  class InterpreterCodelet: public Stub {
    friend class VMStructs;
    friend class CodeCacheDumper; // possible extension [do not remove]
+  public:
+   enum Kind {
+     codelet_other, codelet_bytecode, codelet_method_entry, codelet_safepoint_entry
+   };
   private:
    int         _size;                      // the size in bytes
+   Kind        _kind;
    const char* _description;               // a description of the codelet, for debugging & printing
    Bytecodes::Code _bytecode;              // associated bytecode if any
    NOT_PRODUCT(AsmRemarks _asm_remarks;)   // Comments for annotating assembler output.
    NOT_PRODUCT(DbgStrings _dbg_strings;)   // Debug strings used in generated code.
  

@@ -69,14 +74,15 @@
    void    verify();
    void    print_on(outputStream* st) const;
    void    print() const;
  
    // Interpreter-specific initialization
-   void    initialize(const char* description, Bytecodes::Code bytecode);
+   void    initialize(const char* description, Kind kind, Bytecodes::Code bytecode);
  
    // Interpreter-specific attributes
    int         code_size() const                  { return code_end() - code_begin(); }
+   Kind kind() const                              { return _kind; }
    const char* description() const                { return _description; }
    Bytecodes::Code bytecode() const               { return _bytecode; }
  #ifndef PRODUCT
   ~InterpreterCodelet() {
      // InterpreterCodelets reside in the StubQueue and should not be deleted,

@@ -116,10 +122,11 @@
    }
  
   public:
    CodeletMark(InterpreterMacroAssembler*& masm,
                const char* description,
+               InterpreterCodelet::Kind kind = InterpreterCodelet::codelet_other,
                Bytecodes::Code bytecode = Bytecodes::_illegal);
    ~CodeletMark();
  };
  
  // Wrapper typedef to use the name Interpreter to mean either
< prev index next >