Mercurial > hg > graal-compiler
diff src/share/vm/runtime/deoptimization.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 b92c45f2bc75 |
line wrap: on
line diff
--- a/src/share/vm/runtime/deoptimization.cpp Thu Jan 27 13:42:28 2011 -0800 +++ b/src/share/vm/runtime/deoptimization.cpp Thu Jan 27 16:11:27 2011 -0800 @@ -396,7 +396,7 @@ HandleMark hm; methodHandle method(thread, array->element(0)->method()); Bytecode_invoke invoke = Bytecode_invoke_check(method, array->element(0)->bci()); - return_type = invoke.is_valid() ? invoke.result_type(thread) : T_ILLEGAL; + return_type = invoke.is_valid() ? invoke.result_type() : T_ILLEGAL; } // Compute information for handling adapters and adjusting the frame size of the caller. @@ -601,7 +601,7 @@ cur_code == Bytecodes::_invokestatic || cur_code == Bytecodes::_invokeinterface) { Bytecode_invoke invoke(mh, iframe->interpreter_frame_bci()); - symbolHandle signature(thread, invoke.signature()); + Symbol* signature = invoke.signature(); ArgumentSizeComputer asc(signature); cur_invoke_parameter_size = asc.size(); if (cur_code != Bytecodes::_invokestatic) { @@ -1156,7 +1156,7 @@ if (!constant_pool->tag_at(index).is_symbol()) return; Handle class_loader (THREAD, instanceKlass::cast(constant_pool->pool_holder())->class_loader()); - symbolHandle symbol (THREAD, constant_pool->symbol_at(index)); + Symbol* symbol = constant_pool->symbol_at(index); // class name? if (symbol->byte_at(0) != '(') { @@ -1166,10 +1166,10 @@ } // then it must be a signature! + ResourceMark rm(THREAD); for (SignatureStream ss(symbol); !ss.is_done(); ss.next()) { if (ss.is_object()) { - symbolOop s = ss.as_symbol(CHECK); - symbolHandle class_name (THREAD, s); + Symbol* class_name = ss.as_symbol(CHECK); Handle protection_domain (THREAD, Klass::cast(constant_pool->pool_holder())->protection_domain()); SystemDictionary::resolve_or_null(class_name, class_loader, protection_domain, CHECK); } @@ -1246,19 +1246,17 @@ format_trap_request(buf, sizeof(buf), trap_request)); nm->log_identity(xtty); } - symbolHandle class_name; + Symbol* class_name = NULL; bool unresolved = false; if (unloaded_class_index >= 0) { constantPoolHandle constants (THREAD, trap_method->constants()); if (constants->tag_at(unloaded_class_index).is_unresolved_klass()) { - class_name = symbolHandle(THREAD, - constants->klass_name_at(unloaded_class_index)); + class_name = constants->klass_name_at(unloaded_class_index); unresolved = true; if (xtty != NULL) xtty->print(" unresolved='1'"); } else if (constants->tag_at(unloaded_class_index).is_symbol()) { - class_name = symbolHandle(THREAD, - constants->symbol_at(unloaded_class_index)); + class_name = constants->symbol_at(unloaded_class_index); } if (xtty != NULL) xtty->name(class_name); @@ -1294,7 +1292,7 @@ trap_reason_name(reason), trap_action_name(action), unloaded_class_index); - if (class_name.not_null()) { + if (class_name != NULL) { tty->print(unresolved ? " unresolved class: " : " symbol: "); class_name->print_symbol_on(tty); }