Index: runtime/vm/stub_code_mips.cc |
diff --git a/runtime/vm/stub_code_mips.cc b/runtime/vm/stub_code_mips.cc |
index 58af41870b02afefe49bd1debde0f3f5e68ae828..bd6567d7802161e5748228174f3bdf8314ce5d98 100644 |
--- a/runtime/vm/stub_code_mips.cc |
+++ b/runtime/vm/stub_code_mips.cc |
@@ -1943,8 +1943,12 @@ static void GenerateSubtypeNTestCacheStub(Assembler* assembler, int n) { |
// T2: Entry start. |
// T7: null. |
__ SmiTag(T0); |
+ __ BranchNotEqual(T0, Immediate(Smi::RawValue(kClosureCid)), &loop); |
+ __ lw(T0, FieldAddress(A0, Closure::function_offset())); |
+ // T0: instance class id as Smi or function. |
__ Bind(&loop); |
- __ lw(T3, Address(T2, kWordSize * SubtypeTestCache::kInstanceClassId)); |
+ __ lw(T3, |
+ Address(T2, kWordSize * SubtypeTestCache::kInstanceClassIdOrFunction)); |
__ beq(T3, T7, ¬_found); |
if (n == 1) { |