Mercurial > hg > graal-compiler
comparison src/share/vm/opto/matcher.cpp @ 17791:ad3b94907eed
8030863: PPC64: (part 220): ConstantTableBase for calls between args and jvms
Summary: Add ConstantTableBase node edge after parameters and before jvms. Adapt jvms offsets.
Reviewed-by: kvn
author | goetz |
---|---|
date | Fri, 20 Dec 2013 13:51:14 +0100 |
parents | 41b780b43b74 |
children | cd5d10655495 62c54fcc0a35 |
comparison
equal
deleted
inserted
replaced
17790:5da8bb64b370 | 17791:ad3b94907eed |
---|---|
1336 for (JVMState* jvms = msfpt->jvms(); jvms; jvms = jvms->caller()) { | 1336 for (JVMState* jvms = msfpt->jvms(); jvms; jvms = jvms->caller()) { |
1337 jvms->set_map(sfpt); | 1337 jvms->set_map(sfpt); |
1338 } | 1338 } |
1339 | 1339 |
1340 // Debug inputs begin just after the last incoming parameter | 1340 // Debug inputs begin just after the last incoming parameter |
1341 assert( (mcall == NULL) || (mcall->jvms() == NULL) || | 1341 assert((mcall == NULL) || (mcall->jvms() == NULL) || |
1342 (mcall->jvms()->debug_start() + mcall->_jvmadj == mcall->tf()->domain()->cnt()), "" ); | 1342 (mcall->jvms()->debug_start() + mcall->_jvmadj == mcall->tf()->domain()->cnt()), ""); |
1343 | 1343 |
1344 // Move the OopMap | 1344 // Move the OopMap |
1345 msfpt->_oop_map = sfpt->_oop_map; | 1345 msfpt->_oop_map = sfpt->_oop_map; |
1346 | |
1347 // Add additional edges. | |
1348 if (msfpt->mach_constant_base_node_input() != (uint)-1 && !msfpt->is_MachCallLeaf()) { | |
1349 // For these calls we can not add MachConstantBase in expand(), as the | |
1350 // ins are not complete then. | |
1351 msfpt->ins_req(msfpt->mach_constant_base_node_input(), C->mach_constant_base_node()); | |
1352 if (msfpt->jvms() && | |
1353 msfpt->mach_constant_base_node_input() <= msfpt->jvms()->debug_start() + msfpt->_jvmadj) { | |
1354 // We added an edge before jvms, so we must adapt the position of the ins. | |
1355 msfpt->jvms()->adapt_position(+1); | |
1356 } | |
1357 } | |
1346 | 1358 |
1347 // Registers killed by the call are set in the local scheduling pass | 1359 // Registers killed by the call are set in the local scheduling pass |
1348 // of Global Code Motion. | 1360 // of Global Code Motion. |
1349 return msfpt; | 1361 return msfpt; |
1350 } | 1362 } |