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       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


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