1 /* |
1 /* |
2 * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
318 // _shared[_idx] is cleared is guaranteed to not be shared, and thus |
318 // _shared[_idx] is cleared is guaranteed to not be shared, and thus |
319 // can be a valid interior of some tree. |
319 // can be a valid interior of some tree. |
320 find_shared( C->root() ); |
320 find_shared( C->root() ); |
321 find_shared( C->top() ); |
321 find_shared( C->top() ); |
322 |
322 |
323 C->print_method("Before Matching"); |
323 C->print_method(PHASE_BEFORE_MATCHING); |
324 |
324 |
325 // Create new ideal node ConP #NULL even if it does exist in old space |
325 // Create new ideal node ConP #NULL even if it does exist in old space |
326 // to avoid false sharing if the corresponding mach node is not used. |
326 // to avoid false sharing if the corresponding mach node is not used. |
327 // The corresponding mach node is only used in rare cases for derived |
327 // The corresponding mach node is only used in rare cases for derived |
328 // pointers. |
328 // pointers. |
1283 // Compute number of stack slots needed to restore stack in case of |
1283 // Compute number of stack slots needed to restore stack in case of |
1284 // Pascal-style argument popping. |
1284 // Pascal-style argument popping. |
1285 mcall->_argsize = out_arg_limit_per_call - begin_out_arg_area; |
1285 mcall->_argsize = out_arg_limit_per_call - begin_out_arg_area; |
1286 } |
1286 } |
1287 |
1287 |
1288 if (is_method_handle_invoke) { |
|
1289 // Kill some extra stack space in case method handles want to do |
|
1290 // a little in-place argument insertion. |
|
1291 // FIXME: Is this still necessary? |
|
1292 int regs_per_word = NOT_LP64(1) LP64_ONLY(2); // %%% make a global const! |
|
1293 out_arg_limit_per_call += Method::extra_stack_entries() * regs_per_word; |
|
1294 // Do not update mcall->_argsize because (a) the extra space is not |
|
1295 // pushed as arguments and (b) _argsize is dead (not used anywhere). |
|
1296 } |
|
1297 |
|
1298 // Compute the max stack slot killed by any call. These will not be |
1288 // Compute the max stack slot killed by any call. These will not be |
1299 // available for debug info, and will be used to adjust FIRST_STACK_mask |
1289 // available for debug info, and will be used to adjust FIRST_STACK_mask |
1300 // after all call sites have been visited. |
1290 // after all call sites have been visited. |
1301 if( _out_arg_limit < out_arg_limit_per_call) |
1291 if( _out_arg_limit < out_arg_limit_per_call) |
1302 _out_arg_limit = out_arg_limit_per_call; |
1292 _out_arg_limit = out_arg_limit_per_call; |