Mercurial > hg > truffle
comparison src/share/vm/opto/matcher.cpp @ 10393:603ca7e51354
8010460: Interpreter on some platforms loads ConstMethod::_max_stack and misses extra stack slots for JSR 292
Summary: ConstMethod::max_stack() doesn't account for JSR 292 appendix.
Reviewed-by: kvn
author | roland |
---|---|
date | Wed, 24 Apr 2013 11:49:38 +0200 |
parents | b30b3c2a0cf2 |
children | f2110083203d 693e4d04fd09 |
comparison
equal
deleted
inserted
replaced
10392:c07dd9be16e8 | 10393:603ca7e51354 |
---|---|
1278 } // End of for all arguments | 1278 } // End of for all arguments |
1279 | 1279 |
1280 // Compute number of stack slots needed to restore stack in case of | 1280 // Compute number of stack slots needed to restore stack in case of |
1281 // Pascal-style argument popping. | 1281 // Pascal-style argument popping. |
1282 mcall->_argsize = out_arg_limit_per_call - begin_out_arg_area; | 1282 mcall->_argsize = out_arg_limit_per_call - begin_out_arg_area; |
1283 } | |
1284 | |
1285 if (is_method_handle_invoke) { | |
1286 // Kill some extra stack space in case method handles want to do | |
1287 // a little in-place argument insertion. | |
1288 // FIXME: Is this still necessary? | |
1289 int regs_per_word = NOT_LP64(1) LP64_ONLY(2); // %%% make a global const! | |
1290 out_arg_limit_per_call += Method::extra_stack_entries() * regs_per_word; | |
1291 // Do not update mcall->_argsize because (a) the extra space is not | |
1292 // pushed as arguments and (b) _argsize is dead (not used anywhere). | |
1293 } | 1283 } |
1294 | 1284 |
1295 // Compute the max stack slot killed by any call. These will not be | 1285 // Compute the max stack slot killed by any call. These will not be |
1296 // available for debug info, and will be used to adjust FIRST_STACK_mask | 1286 // available for debug info, and will be used to adjust FIRST_STACK_mask |
1297 // after all call sites have been visited. | 1287 // after all call sites have been visited. |