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 kit.null_check_receiver_before_call(method());
1119 }
1120 _caller = kit.transfer_exceptions_into_jvms();
1121 if (kit.stopped()) {
1122 _exits.add_exception_states_from(_caller);
1123 _exits.set_jvms(_caller);
1124 return NULL;
1125 }
1126 }
1127
1128 assert(method() != NULL, "parser must have a method");
1129
1130 // Create an initial safepoint to hold JVM state during parsing
1131 JVMState* jvms = new (C) JVMState(method(), _caller->has_method() ? _caller : NULL);
1132 set_map(new SafePointNode(len, jvms));
1133 jvms->set_map(map());
1134 record_for_igvn(map());
1135 assert(jvms->endoff() == len, "correct jvms sizing");
1136
1137 SafePointNode* inmap = _caller->map();
1138 assert(inmap != NULL, "must have inmap");
1139 // In case of null check on receiver above
|