comparison src/share/vm/code/nmethod.cpp @ 2177:3582bf76420e

6990754: Use native memory and reference counting to implement SymbolTable Summary: move symbols from permgen into C heap and reference count them Reviewed-by: never, acorn, jmasa, stefank
author coleenp
date Thu, 27 Jan 2011 16:11:27 -0800
parents 8012aa3ccede
children d25d4ca69222 bf8517f4e4d0
comparison
equal deleted inserted replaced
2176:27e4ea99855d 2177:3582bf76420e
55 55
56 #define DTRACE_METHOD_UNLOAD_PROBE(method) \ 56 #define DTRACE_METHOD_UNLOAD_PROBE(method) \
57 { \ 57 { \
58 methodOop m = (method); \ 58 methodOop m = (method); \
59 if (m != NULL) { \ 59 if (m != NULL) { \
60 symbolOop klass_name = m->klass_name(); \ 60 Symbol* klass_name = m->klass_name(); \
61 symbolOop name = m->name(); \ 61 Symbol* name = m->name(); \
62 symbolOop signature = m->signature(); \ 62 Symbol* signature = m->signature(); \
63 HS_DTRACE_PROBE6(hotspot, compiled__method__unload, \ 63 HS_DTRACE_PROBE6(hotspot, compiled__method__unload, \
64 klass_name->bytes(), klass_name->utf8_length(), \ 64 klass_name->bytes(), klass_name->utf8_length(), \
65 name->bytes(), name->utf8_length(), \ 65 name->bytes(), name->utf8_length(), \
66 signature->bytes(), signature->utf8_length()); \ 66 signature->bytes(), signature->utf8_length()); \
67 } \ 67 } \
1863 #ifndef SHARK 1863 #ifndef SHARK
1864 if (!method()->is_native()) { 1864 if (!method()->is_native()) {
1865 SimpleScopeDesc ssd(this, fr.pc()); 1865 SimpleScopeDesc ssd(this, fr.pc());
1866 Bytecode_invoke call(ssd.method(), ssd.bci()); 1866 Bytecode_invoke call(ssd.method(), ssd.bci());
1867 bool has_receiver = call.has_receiver(); 1867 bool has_receiver = call.has_receiver();
1868 symbolOop signature = call.signature(); 1868 Symbol* signature = call.signature();
1869 fr.oops_compiled_arguments_do(signature, has_receiver, reg_map, f); 1869 fr.oops_compiled_arguments_do(signature, has_receiver, reg_map, f);
1870 } 1870 }
1871 #endif // !SHARK 1871 #endif // !SHARK
1872 } 1872 }
1873 1873
2634 if (at_this) { 2634 if (at_this) {
2635 m->method_holder()->print_value_on(stream); 2635 m->method_holder()->print_value_on(stream);
2636 } else { 2636 } else {
2637 bool did_name = false; 2637 bool did_name = false;
2638 if (!at_this && ss.is_object()) { 2638 if (!at_this && ss.is_object()) {
2639 symbolOop name = ss.as_symbol_or_null(); 2639 Symbol* name = ss.as_symbol_or_null();
2640 if (name != NULL) { 2640 if (name != NULL) {
2641 name->print_value_on(stream); 2641 name->print_value_on(stream);
2642 did_name = true; 2642 did_name = true;
2643 } 2643 }
2644 } 2644 }