Mercurial > hg > truffle
comparison src/share/vm/ci/bcEscapeAnalyzer.cpp @ 3280:548597e74aa4
7030715: JSR 292 JRuby test/test_super_call_site_caching.rb asserts with +DoEscapeAnalysis
Reviewed-by: twisti
author | never |
---|---|
date | Mon, 25 Apr 2011 16:25:58 -0700 |
parents | a7367756024b |
children | cc81b9c09bbb |
comparison
equal
deleted
inserted
replaced
3279:08ccee2c4dbf | 3280:548597e74aa4 |
---|---|
230 target->can_be_statically_bound() && code == Bytecodes::_invokevirtual) { | 230 target->can_be_statically_bound() && code == Bytecodes::_invokevirtual) { |
231 code = Bytecodes::_invokespecial; | 231 code = Bytecodes::_invokespecial; |
232 } | 232 } |
233 | 233 |
234 // compute size of arguments | 234 // compute size of arguments |
235 int arg_size = target->arg_size(); | 235 int arg_size = target->invoke_arg_size(code); |
236 if (code == Bytecodes::_invokedynamic) { | |
237 assert(!target->is_static(), "receiver explicit in method"); | |
238 arg_size--; // implicit, not really on stack | |
239 } | |
240 if (!target->is_loaded() && code == Bytecodes::_invokestatic) { | |
241 arg_size--; | |
242 } | |
243 int arg_base = MAX2(state._stack_height - arg_size, 0); | 236 int arg_base = MAX2(state._stack_height - arg_size, 0); |
244 | 237 |
245 // direct recursive calls are skipped if they can be bound statically without introducing | 238 // direct recursive calls are skipped if they can be bound statically without introducing |
246 // dependencies and if parameters are passed at the same position as in the current method | 239 // dependencies and if parameters are passed at the same position as in the current method |
247 // other calls are skipped if there are no unescaped arguments passed to them | 240 // other calls are skipped if there are no unescaped arguments passed to them |