< prev index next >

src/hotspot/share/code/codeBlob.hpp

Print this page

        

@@ -106,19 +106,20 @@
                                                  // address    _content_end - not required, for all CodeBlobs _code_end == _content_end for now
   address    _data_end;
   address    _relocation_begin;
   address    _relocation_end;
 
+  bool       _is_compiled;
+
   ImmutableOopMapSet* _oop_maps;                 // OopMap for this CodeBlob
   bool                _caller_must_gc_arguments;
   CodeStrings         _strings;
   const char*         _name;
   S390_ONLY(int       _ctable_offset;)
 
-  CodeBlob(const char* name, CompilerType type, const CodeBlobLayout& layout, int frame_complete_offset, int frame_size, ImmutableOopMapSet* oop_maps, bool caller_must_gc_arguments);
-  CodeBlob(const char* name, CompilerType type, const CodeBlobLayout& layout, CodeBuffer* cb, int frame_complete_offset, int frame_size, OopMapSet* oop_maps, bool caller_must_gc_arguments);
-
+  CodeBlob(const char* name, CompilerType type, const CodeBlobLayout& layout, int frame_complete_offset, int frame_size, ImmutableOopMapSet* oop_maps, bool caller_must_gc_arguments, bool compiled = false);
+  CodeBlob(const char* name, CompilerType type, const CodeBlobLayout& layout, CodeBuffer* cb, int frame_complete_offset, int frame_size, OopMapSet* oop_maps, bool caller_must_gc_arguments, bool compiled = false);
 public:
   // Only used by unit test.
   CodeBlob()
     : _type(compiler_none) {}
 

@@ -139,11 +140,12 @@
   virtual bool is_safepoint_stub() const              { return false; }
   virtual bool is_adapter_blob() const                { return false; }
   virtual bool is_vtable_blob() const                 { return false; }
   virtual bool is_method_handles_adapter_blob() const { return false; }
   virtual bool is_aot() const                         { return false; }
-  virtual bool is_compiled() const                    { return false; }
+  bool is_compiled() const                            { return _is_compiled; }
+  const bool* is_compiled_addr() const                      { return &_is_compiled; }
 
   inline bool is_compiled_by_c1() const    { return _type == compiler_c1; };
   inline bool is_compiled_by_c2() const    { return _type == compiler_c2; };
   inline bool is_compiled_by_jvmci() const { return _type == compiler_jvmci; };
   const char* compiler_name() const;

@@ -206,11 +208,18 @@
   virtual bool is_alive() const                  = 0;
 
   // OopMap for frame
   ImmutableOopMapSet* oop_maps() const           { return _oop_maps; }
   void set_oop_maps(OopMapSet* p);
-  const ImmutableOopMap* oop_map_for_return_address(address return_address);
+
+  const ImmutableOopMap* oop_map_for_slot(int slot, address return_address) const {
+    assert(_oop_maps != NULL, "nope");
+    return _oop_maps->find_map_at_slot(slot, (intptr_t) return_address - (intptr_t) code_begin());
+  }
+
+  //const ImmutableOopMap* oop_map_for_slot(int slot, address return_address) const;
+  const ImmutableOopMap* oop_map_for_return_address(address return_address) const;
   virtual void preserve_callee_argument_oops(frame fr, const RegisterMap* reg_map, OopClosure* f) = 0;
 
   // Frame support. Sizes are in word units.
   int  frame_size() const                        { return _frame_size; }
   void set_frame_size(int size)                  { _frame_size = size; }

@@ -253,10 +262,15 @@
   static ByteSize oop_maps_field_offset() {
     return byte_offset_of(CodeBlob, _oop_maps);
   }
 };
 
+class CodeBlobLookup {
+public:
+  virtual CodeBlob* find_blob(address addr) const { return NULL; }
+};
+
 class CodeBlobLayout : public StackObj {
 private:
   int _size;
   int _header_size;
   int _relocation_size;
< prev index next >