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

src/share/vm/opto/matcher.cpp

Print this page




 325   // pointers.
 326   Node* new_ideal_null = ConNode::make(C, TypePtr::NULL_PTR);
 327 
 328   // Swap out to old-space; emptying new-space
 329   Arena *old = C->node_arena()->move_contents(C->old_arena());
 330 
 331   // Save debug and profile information for nodes in old space:
 332   _old_node_note_array = C->node_note_array();
 333   if (_old_node_note_array != NULL) {
 334     C->set_node_note_array(new(C->comp_arena()) GrowableArray<Node_Notes*>
 335                            (C->comp_arena(), _old_node_note_array->length(),
 336                             0, NULL));
 337   }
 338 
 339   // Pre-size the new_node table to avoid the need for range checks.
 340   grow_new_node_array(C->unique());
 341 
 342   // Reset node counter so MachNodes start with _idx at 0
 343   int nodes = C->unique(); // save value
 344   C->set_unique(0);

 345 
 346   // Recursively match trees from old space into new space.
 347   // Correct leaves of new-space Nodes; they point to old-space.
 348   _visited.Clear();             // Clear visit bits for xform call
 349   C->set_cached_top_node(xform( C->top(), nodes ));
 350   if (!C->failing()) {
 351     Node* xroot =        xform( C->root(), 1 );
 352     if (xroot == NULL) {
 353       Matcher::soft_match_failure();  // recursive matching process failed
 354       C->record_method_not_compilable("instruction match failed");
 355     } else {
 356       // During matching shared constants were attached to C->root()
 357       // because xroot wasn't available yet, so transfer the uses to
 358       // the xroot.
 359       for( DUIterator_Fast jmax, j = C->root()->fast_outs(jmax); j < jmax; j++ ) {
 360         Node* n = C->root()->fast_out(j);
 361         if (C->node_arena()->contains(n)) {
 362           assert(n->in(0) == C->root(), "should be control user");
 363           n->set_req(0, xroot);
 364           --j;




 325   // pointers.
 326   Node* new_ideal_null = ConNode::make(C, TypePtr::NULL_PTR);
 327 
 328   // Swap out to old-space; emptying new-space
 329   Arena *old = C->node_arena()->move_contents(C->old_arena());
 330 
 331   // Save debug and profile information for nodes in old space:
 332   _old_node_note_array = C->node_note_array();
 333   if (_old_node_note_array != NULL) {
 334     C->set_node_note_array(new(C->comp_arena()) GrowableArray<Node_Notes*>
 335                            (C->comp_arena(), _old_node_note_array->length(),
 336                             0, NULL));
 337   }
 338 
 339   // Pre-size the new_node table to avoid the need for range checks.
 340   grow_new_node_array(C->unique());
 341 
 342   // Reset node counter so MachNodes start with _idx at 0
 343   int nodes = C->unique(); // save value
 344   C->set_unique(0);
 345   C->reset_dead_node_list();
 346 
 347   // Recursively match trees from old space into new space.
 348   // Correct leaves of new-space Nodes; they point to old-space.
 349   _visited.Clear();             // Clear visit bits for xform call
 350   C->set_cached_top_node(xform( C->top(), nodes ));
 351   if (!C->failing()) {
 352     Node* xroot =        xform( C->root(), 1 );
 353     if (xroot == NULL) {
 354       Matcher::soft_match_failure();  // recursive matching process failed
 355       C->record_method_not_compilable("instruction match failed");
 356     } else {
 357       // During matching shared constants were attached to C->root()
 358       // because xroot wasn't available yet, so transfer the uses to
 359       // the xroot.
 360       for( DUIterator_Fast jmax, j = C->root()->fast_outs(jmax); j < jmax; j++ ) {
 361         Node* n = C->root()->fast_out(j);
 362         if (C->node_arena()->contains(n)) {
 363           assert(n->in(0) == C->root(), "should be control user");
 364           n->set_req(0, xroot);
 365           --j;


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