comparison src/share/vm/interpreter/interpreter.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 e1162778c1c8
comparison
equal deleted inserted replaced
2176:27e4ea99855d 2177:3582bf76420e
300 case Bytecodes::_invokestatic : 300 case Bytecodes::_invokestatic :
301 case Bytecodes::_invokeinterface: { 301 case Bytecodes::_invokeinterface: {
302 Thread *thread = Thread::current(); 302 Thread *thread = Thread::current();
303 ResourceMark rm(thread); 303 ResourceMark rm(thread);
304 methodHandle mh(thread, method); 304 methodHandle mh(thread, method);
305 type = Bytecode_invoke(mh, bci).result_type(thread); 305 type = Bytecode_invoke(mh, bci).result_type();
306 // since the cache entry might not be initialized: 306 // since the cache entry might not be initialized:
307 // (NOT needed for the old calling convension) 307 // (NOT needed for the old calling convension)
308 if (!is_top_frame) { 308 if (!is_top_frame) {
309 int index = Bytes::get_native_u2(bcp+1); 309 int index = Bytes::get_native_u2(bcp+1);
310 method->constants()->cache()->entry_at(index)->set_parameter_size(callee_parameters); 310 method->constants()->cache()->entry_at(index)->set_parameter_size(callee_parameters);
314 314
315 case Bytecodes::_invokedynamic: { 315 case Bytecodes::_invokedynamic: {
316 Thread *thread = Thread::current(); 316 Thread *thread = Thread::current();
317 ResourceMark rm(thread); 317 ResourceMark rm(thread);
318 methodHandle mh(thread, method); 318 methodHandle mh(thread, method);
319 type = Bytecode_invoke(mh, bci).result_type(thread); 319 type = Bytecode_invoke(mh, bci).result_type();
320 // since the cache entry might not be initialized: 320 // since the cache entry might not be initialized:
321 // (NOT needed for the old calling convension) 321 // (NOT needed for the old calling convension)
322 if (!is_top_frame) { 322 if (!is_top_frame) {
323 int index = Bytes::get_native_u4(bcp+1); 323 int index = Bytes::get_native_u4(bcp+1);
324 method->constants()->cache()->secondary_entry_at(index)->set_parameter_size(callee_parameters); 324 method->constants()->cache()->secondary_entry_at(index)->set_parameter_size(callee_parameters);