comparison src/share/vm/runtime/frame.hpp @ 6725:da91efe96a93

6964458: Reimplement class meta-data storage to use native memory Summary: Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland Contributed-by: jmasa <jon.masamitsu@oracle.com>, stefank <stefan.karlsson@oracle.com>, mgerdin <mikael.gerdin@oracle.com>, never <tom.rodriguez@oracle.com>
author coleenp
date Sat, 01 Sep 2012 13:25:18 -0400
parents 1d7922586cf6
children e522a00b91aa d0aa87f04bd5 cd3d6a6b95d9
comparison
equal deleted inserted replaced
6724:36d1d483d5d6 6725:da91efe96a93
24 24
25 #ifndef SHARE_VM_RUNTIME_FRAME_HPP 25 #ifndef SHARE_VM_RUNTIME_FRAME_HPP
26 #define SHARE_VM_RUNTIME_FRAME_HPP 26 #define SHARE_VM_RUNTIME_FRAME_HPP
27 27
28 #include "asm/assembler.hpp" 28 #include "asm/assembler.hpp"
29 #include "oops/methodOop.hpp" 29 #include "oops/method.hpp"
30 #include "runtime/basicLock.hpp" 30 #include "runtime/basicLock.hpp"
31 #include "runtime/monitorChunk.hpp" 31 #include "runtime/monitorChunk.hpp"
32 #include "runtime/registerMap.hpp" 32 #include "runtime/registerMap.hpp"
33 #include "utilities/top.hpp" 33 #include "utilities/top.hpp"
34 #ifdef COMPILER2 34 #ifdef COMPILER2
195 jint int_at(int offset) const { return *int_at_addr(offset); } 195 jint int_at(int offset) const { return *int_at_addr(offset); }
196 void int_at_put(int offset, jint value) { *int_at_addr(offset) = value; } 196 void int_at_put(int offset, jint value) { *int_at_addr(offset) = value; }
197 197
198 oop* obj_at_addr(int offset) const { return (oop*) addr_at(offset); } 198 oop* obj_at_addr(int offset) const { return (oop*) addr_at(offset); }
199 199
200 oop* adjusted_obj_at_addr(methodOop method, int index) { return obj_at_addr(adjust_offset(method, index)); } 200 oop* adjusted_obj_at_addr(Method* method, int index) { return obj_at_addr(adjust_offset(method, index)); }
201 201
202 private: 202 private:
203 jint* int_at_addr(int offset) const { return (jint*) addr_at(offset); } 203 jint* int_at_addr(int offset) const { return (jint*) addr_at(offset); }
204 204
205 public: 205 public:
341 // exiting due to an exception. 341 // exiting due to an exception.
342 BasicType interpreter_frame_result(oop* oop_result, jvalue* value_result); 342 BasicType interpreter_frame_result(oop* oop_result, jvalue* value_result);
343 343
344 public: 344 public:
345 // Method & constant pool cache 345 // Method & constant pool cache
346 methodOop interpreter_frame_method() const; 346 Method* interpreter_frame_method() const;
347 void interpreter_frame_set_method(methodOop method); 347 void interpreter_frame_set_method(Method* method);
348 methodOop* interpreter_frame_method_addr() const; 348 Method** interpreter_frame_method_addr() const;
349 constantPoolCacheOop* interpreter_frame_cache_addr() const; 349 ConstantPoolCache** interpreter_frame_cache_addr() const;
350 #ifdef PPC 350 #ifdef PPC
351 oop* interpreter_frame_mirror_addr() const; 351 oop* interpreter_frame_mirror_addr() const;
352 #endif 352 #endif
353 353
354 public: 354 public:
420 420
421 // Iteration of oops 421 // Iteration of oops
422 void oops_do_internal(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map, bool use_interpreter_oop_map_cache); 422 void oops_do_internal(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map, bool use_interpreter_oop_map_cache);
423 void oops_entry_do(OopClosure* f, const RegisterMap* map); 423 void oops_entry_do(OopClosure* f, const RegisterMap* map);
424 void oops_code_blob_do(OopClosure* f, CodeBlobClosure* cf, const RegisterMap* map); 424 void oops_code_blob_do(OopClosure* f, CodeBlobClosure* cf, const RegisterMap* map);
425 int adjust_offset(methodOop method, int index); // helper for above fn 425 int adjust_offset(Method* method, int index); // helper for above fn
426 public: 426 public:
427 // Memory management 427 // Memory management
428 void oops_do(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map) { oops_do_internal(f, cf, map, true); } 428 void oops_do(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map) { oops_do_internal(f, cf, map, true); }
429 void nmethods_do(CodeBlobClosure* cf); 429 void nmethods_do(CodeBlobClosure* cf);
430
431 // RedefineClasses support for finding live interpreted methods on the stack
432 void metadata_do(void f(Metadata*));
430 433
431 void gc_prologue(); 434 void gc_prologue();
432 void gc_epilogue(); 435 void gc_epilogue();
433 void pd_gc_epilog(); 436 void pd_gc_epilog();
434 437