Skip to content

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

runtime/vm/compiler/backend/il.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4628,7 +4628,8 @@ bool StaticCallInstr::InitResultType(Zone* zone) {
46284628
set_is_known_list_constructor(true);
46294629
return true;
46304630
} else if (function().has_pragma()) {
4631-
intptr_t recognized_cid = MethodRecognizer::ResultCidFromPragma(function());
4631+
const intptr_t recognized_cid =
4632+
MethodRecognizer::ResultCidFromPragma(function());
46324633
if (recognized_cid != kDynamicCid) {
46334634
SetResultType(zone, CompileType::FromCid(recognized_cid));
46344635
return true;

runtime/vm/compiler/frontend/kernel_to_il.cc

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -821,12 +821,14 @@ FlowGraph* FlowGraphBuilder::BuildGraphOfRecognizedMethod(
821821
break;
822822
#endif // !defined(TARGET_ARCH_DBC)
823823
case MethodRecognizer::kObjectEquals:
824+
ASSERT(function.NumParameters() == 2);
824825
body += LoadLocal(parsed_function_->RawParameterVariable(0));
825826
body += LoadLocal(parsed_function_->RawParameterVariable(1));
826827
body += StrictCompare(Token::kEQ_STRICT);
827828
break;
828829
case MethodRecognizer::kStringBaseLength:
829830
case MethodRecognizer::kStringBaseIsEmpty:
831+
ASSERT(function.NumParameters() == 1);
830832
body += LoadLocal(parsed_function_->RawParameterVariable(0));
831833
body += LoadNativeField(Slot::String_length());
832834
if (kind == MethodRecognizer::kStringBaseIsEmpty) {
@@ -835,40 +837,49 @@ FlowGraph* FlowGraphBuilder::BuildGraphOfRecognizedMethod(
835837
}
836838
break;
837839
case MethodRecognizer::kGrowableArrayLength:
840+
ASSERT(function.NumParameters() == 1);
838841
body += LoadLocal(parsed_function_->RawParameterVariable(0));
839842
body += LoadNativeField(Slot::GrowableObjectArray_length());
840843
break;
841844
case MethodRecognizer::kObjectArrayLength:
842845
case MethodRecognizer::kImmutableArrayLength:
846+
ASSERT(function.NumParameters() == 1);
843847
body += LoadLocal(parsed_function_->RawParameterVariable(0));
844848
body += LoadNativeField(Slot::Array_length());
845849
break;
846850
case MethodRecognizer::kTypedListLength:
847851
case MethodRecognizer::kTypedListViewLength:
848852
case MethodRecognizer::kByteDataViewLength:
853+
ASSERT(function.NumParameters() == 1);
849854
body += LoadLocal(parsed_function_->RawParameterVariable(0));
850855
body += LoadNativeField(Slot::TypedDataBase_length());
851856
break;
852857
case MethodRecognizer::kByteDataViewOffsetInBytes:
853858
case MethodRecognizer::kTypedDataViewOffsetInBytes:
859+
ASSERT(function.NumParameters() == 1);
854860
body += LoadLocal(parsed_function_->RawParameterVariable(0));
855861
body += LoadNativeField(Slot::TypedDataView_offset_in_bytes());
856862
break;
857863
case MethodRecognizer::kByteDataViewTypedData:
858864
case MethodRecognizer::kTypedDataViewTypedData:
865+
ASSERT(function.NumParameters() == 1);
859866
body += LoadLocal(parsed_function_->RawParameterVariable(0));
860867
body += LoadNativeField(Slot::TypedDataView_data());
861868
break;
862869
case MethodRecognizer::kClassIDgetID:
870+
ASSERT(function.NumParameters() == 1);
863871
body += LoadLocal(parsed_function_->RawParameterVariable(0));
864872
body += LoadClassId();
865873
break;
866874
case MethodRecognizer::kGrowableArrayCapacity:
875+
ASSERT(function.NumParameters() == 1);
867876
body += LoadLocal(parsed_function_->RawParameterVariable(0));
868877
body += LoadNativeField(Slot::GrowableObjectArray_data());
869878
body += LoadNativeField(Slot::Array_length());
870879
break;
871880
case MethodRecognizer::kListFactory: {
881+
ASSERT(function.IsFactory() && (function.NumParameters() == 2) &&
882+
function.HasOptionalParameters());
872883
// factory List<E>([int length]) {
873884
// return (:arg_desc.positional_count == 2) ? new _List<E>(length)
874885
// : new _GrowableList<E>(0);
@@ -933,37 +944,44 @@ FlowGraph* FlowGraphBuilder::BuildGraphOfRecognizedMethod(
933944
break;
934945
}
935946
case MethodRecognizer::kObjectArrayAllocate:
947+
ASSERT(function.IsFactory() && (function.NumParameters() == 2));
936948
body += LoadLocal(parsed_function_->RawParameterVariable(0));
937949
body += LoadLocal(parsed_function_->RawParameterVariable(1));
938950
body += CreateArray();
939951
break;
940952
case MethodRecognizer::kLinkedHashMap_getIndex:
953+
ASSERT(function.NumParameters() == 1);
941954
body += LoadLocal(parsed_function_->RawParameterVariable(0));
942955
body += LoadNativeField(Slot::LinkedHashMap_index());
943956
break;
944957
case MethodRecognizer::kLinkedHashMap_setIndex:
958+
ASSERT(function.NumParameters() == 2);
945959
body += LoadLocal(parsed_function_->RawParameterVariable(0));
946960
body += LoadLocal(parsed_function_->RawParameterVariable(1));
947961
body += StoreInstanceField(TokenPosition::kNoSource,
948962
Slot::LinkedHashMap_index());
949963
body += NullConstant();
950964
break;
951965
case MethodRecognizer::kLinkedHashMap_getData:
966+
ASSERT(function.NumParameters() == 1);
952967
body += LoadLocal(parsed_function_->RawParameterVariable(0));
953968
body += LoadNativeField(Slot::LinkedHashMap_data());
954969
break;
955970
case MethodRecognizer::kLinkedHashMap_setData:
971+
ASSERT(function.NumParameters() == 2);
956972
body += LoadLocal(parsed_function_->RawParameterVariable(0));
957973
body += LoadLocal(parsed_function_->RawParameterVariable(1));
958974
body += StoreInstanceField(TokenPosition::kNoSource,
959975
Slot::LinkedHashMap_data());
960976
body += NullConstant();
961977
break;
962978
case MethodRecognizer::kLinkedHashMap_getHashMask:
979+
ASSERT(function.NumParameters() == 1);
963980
body += LoadLocal(parsed_function_->RawParameterVariable(0));
964981
body += LoadNativeField(Slot::LinkedHashMap_hash_mask());
965982
break;
966983
case MethodRecognizer::kLinkedHashMap_setHashMask:
984+
ASSERT(function.NumParameters() == 2);
967985
body += LoadLocal(parsed_function_->RawParameterVariable(0));
968986
body += LoadLocal(parsed_function_->RawParameterVariable(1));
969987
body +=
@@ -972,10 +990,12 @@ FlowGraph* FlowGraphBuilder::BuildGraphOfRecognizedMethod(
972990
body += NullConstant();
973991
break;
974992
case MethodRecognizer::kLinkedHashMap_getUsedData:
993+
ASSERT(function.NumParameters() == 1);
975994
body += LoadLocal(parsed_function_->RawParameterVariable(0));
976995
body += LoadNativeField(Slot::LinkedHashMap_used_data());
977996
break;
978997
case MethodRecognizer::kLinkedHashMap_setUsedData:
998+
ASSERT(function.NumParameters() == 2);
979999
body += LoadLocal(parsed_function_->RawParameterVariable(0));
9801000
body += LoadLocal(parsed_function_->RawParameterVariable(1));
9811001
body +=
@@ -984,10 +1004,12 @@ FlowGraph* FlowGraphBuilder::BuildGraphOfRecognizedMethod(
9841004
body += NullConstant();
9851005
break;
9861006
case MethodRecognizer::kLinkedHashMap_getDeletedKeys:
1007+
ASSERT(function.NumParameters() == 1);
9871008
body += LoadLocal(parsed_function_->RawParameterVariable(0));
9881009
body += LoadNativeField(Slot::LinkedHashMap_deleted_keys());
9891010
break;
9901011
case MethodRecognizer::kLinkedHashMap_setDeletedKeys:
1012+
ASSERT(function.NumParameters() == 2);
9911013
body += LoadLocal(parsed_function_->RawParameterVariable(0));
9921014
body += LoadLocal(parsed_function_->RawParameterVariable(1));
9931015
body += StoreInstanceField(TokenPosition::kNoSource,
@@ -996,6 +1018,7 @@ FlowGraph* FlowGraphBuilder::BuildGraphOfRecognizedMethod(
9961018
body += NullConstant();
9971019
break;
9981020
case MethodRecognizer::kFfiAbi:
1021+
ASSERT(function.NumParameters() == 0);
9991022
body += IntConstant(static_cast<int64_t>(compiler::ffi::TargetAbi()));
10001023
break;
10011024
default: {
@@ -1019,6 +1042,7 @@ Fragment FlowGraphBuilder::BuildTypedDataViewFactoryConstructor(
10191042
ASSERT(class_table->HasValidClassAt(cid));
10201043
const auto& view_class = Class::ZoneHandle(H.zone(), class_table->At(cid));
10211044

1045+
ASSERT(function.IsFactory() && (function.NumParameters() == 4));
10221046
LocalVariable* typed_data = parsed_function_->RawParameterVariable(1);
10231047
LocalVariable* offset_in_bytes = parsed_function_->RawParameterVariable(2);
10241048
LocalVariable* length = parsed_function_->RawParameterVariable(3);

0 commit comments

Comments
 (0)