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