53 intptr_t first_block_id = 1,
54 bool inlining_unchecked_entry =
false);
95 Fragment TestClosureFunctionNamedParameterRequired(
156 intptr_t first_argument_parameter_offset);
173 Fragment EnterScope(intptr_t kernel_offset,
175 Fragment ExitScope(intptr_t kernel_offset);
177 Fragment AdjustContextTo(
int depth);
182 Fragment LoadInstantiatorTypeArguments();
183 Fragment LoadFunctionTypeArguments();
184 Fragment TranslateInstantiatedTypeArguments(
188 intptr_t handler_index,
189 bool needs_stacktrace,
190 bool is_synthesized);
191 Fragment TryCatch(
int try_handler_index);
199 intptr_t type_args_len,
201 const Array& argument_names,
202 intptr_t checked_argument_count,
203 const Function& interface_target = Function::null_function(),
204 const Function& tearoff_interface_target = Function::null_function(),
206 bool use_unchecked_entry =
false,
208 bool receiver_is_not_smi =
false,
209 bool is_call_on_this =
false);
238 const Array& argument_names,
241 intptr_t type_args_len = 0,
242 bool use_unchecked_entry =
false);
247 const Array& argument_names,
248 intptr_t type_args_len = 0);
257 bool incompatible_arguments,
258 bool receiver_pushed =
false);
263 bool receiver_pushed =
false);
265 const char* throw_method_name,
272 const String& name_symbol);
280 Fragment AssertAssignableLoadTypeArguments(
298 intptr_t index_scale,
303 intptr_t index_scale,
323 Fragment LoadServiceExtensionStream();
341 Fragment FfiConvertPrimitiveToNative(
359 intptr_t offset_in_bytes,
361 Fragment FfiCallConvertCompoundArgumentToNative(
366 Fragment FfiCallConvertCompoundReturnToDart(
373 Fragment FfiCallbackConvertCompoundArgumentToDart(
378 Fragment FfiCallbackConvertCompoundReturnToNative(
387 Fragment LoadTypedDataBaseFromCompound();
388 Fragment LoadOffsetInBytesFromCompound();
398 Fragment PopFromStackToTypedDataBase(
440 void BuildArgumentTypeChecks(
Fragment* explicit_checks,
459 FlowGraph* BuildGraphOfNoSuchMethodForwarder(
461 bool is_implicit_closure_function,
462 bool throw_no_such_method_error);
474 Fragment prologue_from_normal_entry,
526 void SetConstantRangeOfCurrentDefinition(
const Fragment& fragment,
533 template <
typename T>
534 Fragment BuildExtractUnboxedSlotBitFieldIntoSmi(
const Slot& slot) {
548 static_assert(T::mask_in_place() <= compiler::target::kSmiMax,
549 "Cannot fit results of masking in place into a Smi");
556 SetConstantRangeOfCurrentDefinition(instructions, 0, T::mask_in_place());
559 if (T::shift() != 0) {
568 Fragment BuildIntegerHashCode(
bool smi);
575 const bool optimizing_;
578 intptr_t next_function_id_;
579 intptr_t AllocateFunctionId() {
return next_function_id_++; }
581 intptr_t loop_depth_;
583 intptr_t catch_depth_;
584 intptr_t block_expression_depth_;
606 TryCatchBlock* CurrentTryCatchBlock()
const {
return try_catch_block_; }
608 void SetCurrentTryCatchBlock(
TryCatchBlock* try_catch_block);
637 const Function& PrependTypeArgumentsFunction();