1097 } 1098 1099 //-----------------------------create_entry_map------------------------------- 1100 // Initialize our parser map to contain the types at method entry. 1101 // For OSR, the map contains a single RawPtr parameter. 1102 // Initial monitor locking for sync. methods is performed by do_method_entry. 1103 SafePointNode* Parse::create_entry_map() { 1104 // Check for really stupid bail-out cases. 1105 uint len = TypeFunc::Parms + method()->max_locals() + method()->max_stack(); 1106 if (len >= 32760) { 1107 C->record_method_not_compilable_all_tiers("too many local variables"); 1108 return NULL; 1109 } 1110 1111 // clear current replaced nodes that are of no use from here on (map was cloned in build_exits). 1112 _caller->map()->delete_replaced_nodes(); 1113 1114 // If this is an inlined method, we may have to do a receiver null check. 1115 if (_caller->has_method() && is_normal_parse() && !method()->is_static()) { 1116 GraphKit kit(_caller); 1117 kit.null_check_receiver_before_call(method()); 1118 _caller = kit.transfer_exceptions_into_jvms(); 1119 if (kit.stopped()) { 1120 _exits.add_exception_states_from(_caller); 1121 _exits.set_jvms(_caller); 1122 return NULL; 1123 } 1124 } 1125 1126 assert(method() != NULL, "parser must have a method"); 1127 1128 // Create an initial safepoint to hold JVM state during parsing 1129 JVMState* jvms = new (C) JVMState(method(), _caller->has_method() ? _caller : NULL); 1130 set_map(new SafePointNode(len, jvms)); 1131 jvms->set_map(map()); 1132 record_for_igvn(map()); 1133 assert(jvms->endoff() == len, "correct jvms sizing"); 1134 1135 SafePointNode* inmap = _caller->map(); 1136 assert(inmap != NULL, "must have inmap"); 1137 // In case of null check on receiver above | 1097 } 1098 1099 //-----------------------------create_entry_map------------------------------- 1100 // Initialize our parser map to contain the types at method entry. 1101 // For OSR, the map contains a single RawPtr parameter. 1102 // Initial monitor locking for sync. methods is performed by do_method_entry. 1103 SafePointNode* Parse::create_entry_map() { 1104 // Check for really stupid bail-out cases. 1105 uint len = TypeFunc::Parms + method()->max_locals() + method()->max_stack(); 1106 if (len >= 32760) { 1107 C->record_method_not_compilable_all_tiers("too many local variables"); 1108 return NULL; 1109 } 1110 1111 // clear current replaced nodes that are of no use from here on (map was cloned in build_exits). 1112 _caller->map()->delete_replaced_nodes(); 1113 1114 // If this is an inlined method, we may have to do a receiver null check. 1115 if (_caller->has_method() && is_normal_parse() && !method()->is_static()) { 1116 GraphKit kit(_caller); 1117 if (kit.argument(0)->is_ValueType()) { 1118 ValueTypeNode* vt = kit.argument(0)->as_ValueType(); 1119 vt->store_to_memory(&kit); 1120 } else { 1121 kit.null_check_receiver_before_call(method()); 1122 } 1123 _caller = kit.transfer_exceptions_into_jvms(); 1124 if (kit.stopped()) { 1125 _exits.add_exception_states_from(_caller); 1126 _exits.set_jvms(_caller); 1127 return NULL; 1128 } 1129 } 1130 1131 assert(method() != NULL, "parser must have a method"); 1132 1133 // Create an initial safepoint to hold JVM state during parsing 1134 JVMState* jvms = new (C) JVMState(method(), _caller->has_method() ? _caller : NULL); 1135 set_map(new SafePointNode(len, jvms)); 1136 jvms->set_map(map()); 1137 record_for_igvn(map()); 1138 assert(jvms->endoff() == len, "correct jvms sizing"); 1139 1140 SafePointNode* inmap = _caller->map(); 1141 assert(inmap != NULL, "must have inmap"); 1142 // In case of null check on receiver above |