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

src/share/vm/opto/parse1.cpp

Print this page




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


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