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 }