src/share/vm/opto/parse1.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/opto

src/share/vm/opto/parse1.cpp

Print this page
rev 5462 : 8024069: replace_in_map() should operate on parent maps
Summary: type information gets lost because replace_in_map() doesn't update parent maps
Reviewed-by:
rev 5464 : 8024070: C2 needs some form of type speculation
Summary: record unused type profile information with type system, propagate and use it.
Reviewed-by:
rev 5465 : imported patch speculative-cleanup


1085     // off the start node, but the locking spot has to be constructed by
1086     // creating a ConLNode of 0, and boxing it with a BoxLockNode.  The BoxLockNode
1087     // becomes the second argument to the FastLockNode call.  The
1088     // FastLockNode becomes the new control parent to pin it to the start.
1089 
1090     // Setup Object Pointer
1091     Node *lock_obj = NULL;
1092     if(method()->is_static()) {
1093       ciInstance* mirror = _method->holder()->java_mirror();
1094       const TypeInstPtr *t_lock = TypeInstPtr::make(mirror);
1095       lock_obj = makecon(t_lock);
1096     } else {                  // Else pass the "this" pointer,
1097       lock_obj = local(0);    // which is Parm0 from StartNode
1098     }
1099     // Clear out dead values from the debug info.
1100     kill_dead_locals();
1101     // Build the FastLockNode
1102     _synch_lock = shared_lock(lock_obj);
1103   }
1104 




1105   if (depth() == 1) {
1106     increment_and_test_invocation_counter(Tier2CompileThreshold);
1107   }
1108 }
1109 
1110 //------------------------------init_blocks------------------------------------
1111 // Initialize our parser map to contain the types/monitors at method entry.
1112 void Parse::init_blocks() {
1113   // Create the blocks.
1114   _block_count = flow()->block_count();
1115   _blocks = NEW_RESOURCE_ARRAY(Block, _block_count);
1116   Copy::zero_to_bytes(_blocks, sizeof(Block)*_block_count);
1117 
1118   int rpo;
1119 
1120   // Initialize the structs.
1121   for (rpo = 0; rpo < block_count(); rpo++) {
1122     Block* block = rpo_at(rpo);
1123     block->init_node(this, rpo);
1124   }




1085     // off the start node, but the locking spot has to be constructed by
1086     // creating a ConLNode of 0, and boxing it with a BoxLockNode.  The BoxLockNode
1087     // becomes the second argument to the FastLockNode call.  The
1088     // FastLockNode becomes the new control parent to pin it to the start.
1089 
1090     // Setup Object Pointer
1091     Node *lock_obj = NULL;
1092     if(method()->is_static()) {
1093       ciInstance* mirror = _method->holder()->java_mirror();
1094       const TypeInstPtr *t_lock = TypeInstPtr::make(mirror);
1095       lock_obj = makecon(t_lock);
1096     } else {                  // Else pass the "this" pointer,
1097       lock_obj = local(0);    // which is Parm0 from StartNode
1098     }
1099     // Clear out dead values from the debug info.
1100     kill_dead_locals();
1101     // Build the FastLockNode
1102     _synch_lock = shared_lock(lock_obj);
1103   }
1104 
1105   // Feed profiling data for parameters to the type system so it can
1106   // propagate it as speculative types
1107   record_profiled_parameters_for_speculation();
1108 
1109   if (depth() == 1) {
1110     increment_and_test_invocation_counter(Tier2CompileThreshold);
1111   }
1112 }
1113 
1114 //------------------------------init_blocks------------------------------------
1115 // Initialize our parser map to contain the types/monitors at method entry.
1116 void Parse::init_blocks() {
1117   // Create the blocks.
1118   _block_count = flow()->block_count();
1119   _blocks = NEW_RESOURCE_ARRAY(Block, _block_count);
1120   Copy::zero_to_bytes(_blocks, sizeof(Block)*_block_count);
1121 
1122   int rpo;
1123 
1124   // Initialize the structs.
1125   for (rpo = 0; rpo < block_count(); rpo++) {
1126     Block* block = rpo_at(rpo);
1127     block->init_node(this, rpo);
1128   }


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