| Index: runtime/vm/flow_graph_compiler_ia32.cc
|
| ===================================================================
|
| --- runtime/vm/flow_graph_compiler_ia32.cc (revision 15478)
|
| +++ runtime/vm/flow_graph_compiler_ia32.cc (working copy)
|
| @@ -392,6 +392,20 @@
|
| // type error. A null value is handled prior to executing this inline code.
|
| return SubtypeTestCache::null();
|
| }
|
| + if (TypeCheckAsClassEquality(type)) {
|
| + const intptr_t type_cid = Class::Handle(type.type_class()).id();
|
| + const Register kInstanceReg = EAX;
|
| + __ testl(kInstanceReg, Immediate(kSmiTagMask));
|
| + if (type_cid == kSmiCid) {
|
| + __ j(ZERO, is_instance_lbl);
|
| + } else {
|
| + __ j(ZERO, is_not_instance_lbl);
|
| + __ CompareClassId(kInstanceReg, type_cid, EDI);
|
| + __ j(EQUAL, is_instance_lbl);
|
| + }
|
| + __ jmp(is_not_instance_lbl);
|
| + return SubtypeTestCache::null();
|
| + }
|
| if (type.IsInstantiated()) {
|
| const Class& type_class = Class::ZoneHandle(type.type_class());
|
| // A Smi object cannot be the instance of a parameterized class.
|
|
|