Index: runtime/vm/stub_code_arm.cc |
diff --git a/runtime/vm/stub_code_arm.cc b/runtime/vm/stub_code_arm.cc |
index 711c901cab2cabdec6a811757784ee17d6604316..4cf291b5a3b12fd02ce238f6b361e9519f4b34c8 100644 |
--- a/runtime/vm/stub_code_arm.cc |
+++ b/runtime/vm/stub_code_arm.cc |
@@ -1804,8 +1804,12 @@ static void GenerateSubtypeNTestCacheStub(Assembler* assembler, int n) { |
// R3: instance class id. |
// R4: instance type arguments. |
__ SmiTag(R3); |
+ __ CompareImmediate(R3, Smi::RawValue(kClosureCid)); |
+ __ ldr(R3, FieldAddress(R0, Closure::function_offset()), EQ); |
+ // R3: instance class id as Smi or function. |
__ Bind(&loop); |
- __ ldr(R9, Address(R2, kWordSize * SubtypeTestCache::kInstanceClassId)); |
+ __ ldr(R9, |
+ Address(R2, kWordSize * SubtypeTestCache::kInstanceClassIdOrFunction)); |
__ CompareObject(R9, Object::null_object()); |
__ b(¬_found, EQ); |
__ cmp(R9, Operand(R3)); |