Mercurial > hg > truffle
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 |