src/share/vm/opto/gcm.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7069452 Sdiff src/share/vm/opto

src/share/vm/opto/gcm.cpp

Print this page




1120   if (trace_opto_pipelining())
1121     tty->print("\n#---- schedule_late ----\n");
1122 #endif
1123 
1124   Node_Backward_Iterator iter((Node *)_root, visited, stack, _bbs);
1125   Node *self;
1126 
1127   // Walk over all the nodes from last to first
1128   while (self = iter.next()) {
1129     Block* early = _bbs[self->_idx];   // Earliest legal placement
1130 
1131     if (self->is_top()) {
1132       // Top node goes in bb #2 with other constants.
1133       // It must be special-cased, because it has no out edges.
1134       early->add_inst(self);
1135       continue;
1136     }
1137 
1138     // No uses, just terminate
1139     if (self->outcnt() == 0) {
1140       assert(self->Opcode() == Op_MachProj, "sanity");
1141       continue;                   // Must be a dead machine projection
1142     }
1143 
1144     // If node is pinned in the block, then no scheduling can be done.
1145     if( self->pinned() )          // Pinned in block?
1146       continue;
1147 
1148     MachNode* mach = self->is_Mach() ? self->as_Mach() : NULL;
1149     if (mach) {
1150       switch (mach->ideal_Opcode()) {
1151       case Op_CreateEx:
1152         // Don't move exception creation
1153         early->add_inst(self);
1154         continue;
1155         break;
1156       case Op_CheckCastPP:
1157         // Don't move CheckCastPP nodes away from their input, if the input
1158         // is a rawptr (5071820).
1159         Node *def = self->in(1);
1160         if (def != NULL && def->bottom_type()->base() == Type::RawPtr) {




1120   if (trace_opto_pipelining())
1121     tty->print("\n#---- schedule_late ----\n");
1122 #endif
1123 
1124   Node_Backward_Iterator iter((Node *)_root, visited, stack, _bbs);
1125   Node *self;
1126 
1127   // Walk over all the nodes from last to first
1128   while (self = iter.next()) {
1129     Block* early = _bbs[self->_idx];   // Earliest legal placement
1130 
1131     if (self->is_top()) {
1132       // Top node goes in bb #2 with other constants.
1133       // It must be special-cased, because it has no out edges.
1134       early->add_inst(self);
1135       continue;
1136     }
1137 
1138     // No uses, just terminate
1139     if (self->outcnt() == 0) {
1140       assert(self->is_MachProj(), "sanity");
1141       continue;                   // Must be a dead machine projection
1142     }
1143 
1144     // If node is pinned in the block, then no scheduling can be done.
1145     if( self->pinned() )          // Pinned in block?
1146       continue;
1147 
1148     MachNode* mach = self->is_Mach() ? self->as_Mach() : NULL;
1149     if (mach) {
1150       switch (mach->ideal_Opcode()) {
1151       case Op_CreateEx:
1152         // Don't move exception creation
1153         early->add_inst(self);
1154         continue;
1155         break;
1156       case Op_CheckCastPP:
1157         // Don't move CheckCastPP nodes away from their input, if the input
1158         // is a rawptr (5071820).
1159         Node *def = self->in(1);
1160         if (def != NULL && def->bottom_type()->base() == Type::RawPtr) {


src/share/vm/opto/gcm.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File