comparison src/share/vm/interpreter/interpreterRuntime.cpp @ 1138:dd57230ba8fe

6893268: additional dynamic language related optimizations in C2 Summary: C2 needs some additional optimizations to be able to handle MethodHandle invokes and invokedynamic instructions at the best performance. Reviewed-by: kvn, never
author twisti
date Tue, 05 Jan 2010 15:21:25 +0100
parents 389049f3f393
children 4ce7240d622c
comparison
equal deleted inserted replaced
1137:97125851f396 1138:dd57230ba8fe
1248 assert(fr.is_interpreted_frame(), ""); 1248 assert(fr.is_interpreted_frame(), "");
1249 jint bci = fr.interpreter_frame_bci(); 1249 jint bci = fr.interpreter_frame_bci();
1250 methodHandle mh(thread, fr.interpreter_frame_method()); 1250 methodHandle mh(thread, fr.interpreter_frame_method());
1251 Bytecode_invoke* invoke = Bytecode_invoke_at(mh, bci); 1251 Bytecode_invoke* invoke = Bytecode_invoke_at(mh, bci);
1252 ArgumentSizeComputer asc(invoke->signature()); 1252 ArgumentSizeComputer asc(invoke->signature());
1253 int size_of_arguments = (asc.size() + (invoke->is_invokestatic() ? 0 : 1)); // receiver 1253 int size_of_arguments = (asc.size() + (invoke->has_receiver() ? 1 : 0)); // receiver
1254 Copy::conjoint_bytes(src_address, dest_address, 1254 Copy::conjoint_bytes(src_address, dest_address,
1255 size_of_arguments * Interpreter::stackElementSize()); 1255 size_of_arguments * Interpreter::stackElementSize());
1256 IRT_END 1256 IRT_END
1257 #endif 1257 #endif