| Index: runtime/vm/intrinsifier_ia32.cc
|
| diff --git a/runtime/vm/intrinsifier_ia32.cc b/runtime/vm/intrinsifier_ia32.cc
|
| index 11e2c40c712a4953aa7ef23b25c7a35de07971d2..1a3c1516c0d5725fcaae4317f4053d2803a4d34a 100644
|
| --- a/runtime/vm/intrinsifier_ia32.cc
|
| +++ b/runtime/vm/intrinsifier_ia32.cc
|
| @@ -204,9 +204,7 @@ bool Intrinsifier::Array_setIndexed(Assembler* assembler) {
|
| __ j(EQUAL, &checked_ok, Assembler::kNearJump);
|
| // Check if it's Dynamic.
|
| // For now handle only TypeArguments and bail out if InstantiatedTypeArgs.
|
| - __ CompareClassOfObject(EBX,
|
| - Class::Handle(Object::type_arguments_class()),
|
| - EAX);
|
| + __ CompareClassId(EBX, kTypeArguments, EAX);
|
| __ j(NOT_EQUAL, &fall_through, Assembler::kNearJump);
|
| // Get type at index 0.
|
| __ movl(EAX, FieldAddress(EBX, TypeArguments::type_at_offset(0)));
|
| @@ -740,7 +738,6 @@ bool Intrinsifier::Integer_equalToInteger(Assembler* assembler) {
|
|
|
| // At least one of the arguments was not Smi, inline code for Smi/Mint
|
| // equality comparison.
|
| - ObjectStore* object_store = Isolate::Current()->object_store();
|
| Label receiver_not_smi;
|
| __ Bind(&check_for_mint);
|
| __ movl(EAX, Address(ESP, + 2 * kWordSize)); // Receiver.
|
| @@ -751,14 +748,14 @@ bool Intrinsifier::Integer_equalToInteger(Assembler* assembler) {
|
| // represented by Smi.
|
| // Left is Smi, return false if right is Mint, otherwise fall through.
|
| __ movl(EAX, Address(ESP, + 1 * kWordSize)); // Right argument.
|
| - __ CompareClassOfObject(EAX, Class::Handle(object_store->mint_class()), EAX);
|
| + __ CompareClassId(EAX, kMint, EAX);
|
| __ j(NOT_EQUAL, &fall_through);
|
| __ LoadObject(EAX, bool_false); // Smi == Mint -> false.
|
| __ ret();
|
|
|
| __ Bind(&receiver_not_smi);
|
| // EAX:: receiver.
|
| - __ CompareClassOfObject(EAX, Class::Handle(object_store->mint_class()), EAX);
|
| + __ CompareClassId(EAX, kMint, EAX);
|
| __ j(NOT_EQUAL, &fall_through);
|
| // Receiver is Mint, return false if right is Smi.
|
| __ movl(EAX, Address(ESP, + 1 * kWordSize)); // Right argument.
|
| @@ -827,8 +824,7 @@ static void TestLastArgumentIsDouble(Assembler* assembler,
|
| __ movl(EAX, Address(ESP, + 1 * kWordSize));
|
| __ testl(EAX, Immediate(kSmiTagMask));
|
| __ j(ZERO, is_smi, Assembler::kNearJump); // Jump if Smi.
|
| - __ CompareClassOfObject(EAX, Class::Handle(
|
| - Isolate::Current()->object_store()->double_class()), EBX);
|
| + __ CompareClassId(EAX, kDouble, EBX);
|
| __ j(NOT_EQUAL, not_double_smi, Assembler::kNearJump);
|
| // Fall through if double.
|
| }
|
| @@ -1241,7 +1237,6 @@ bool Intrinsifier::String_getLength(Assembler* assembler) {
|
|
|
| // TODO(srdjan): Implement for two and four byte strings as well.
|
| bool Intrinsifier::String_charCodeAt(Assembler* assembler) {
|
| - ObjectStore* object_store = Isolate::Current()->object_store();
|
| Label fall_through;
|
| __ movl(EBX, Address(ESP, + 1 * kWordSize)); // Index.
|
| __ movl(EAX, Address(ESP, + 2 * kWordSize)); // String.
|
| @@ -1251,9 +1246,7 @@ bool Intrinsifier::String_charCodeAt(Assembler* assembler) {
|
| __ cmpl(EBX, FieldAddress(EAX, String::length_offset()));
|
| // Runtime throws exception.
|
| __ j(ABOVE_EQUAL, &fall_through, Assembler::kNearJump);
|
| - __ CompareClassOfObject(EAX,
|
| - Class::Handle(object_store->one_byte_string_class()),
|
| - EDI);
|
| + __ CompareClassId(EAX, kOneByteString, EDI);
|
| __ j(NOT_EQUAL, &fall_through);
|
| __ SmiUntag(EBX);
|
| __ movzxb(EAX, FieldAddress(EAX, EBX, TIMES_1, OneByteString::data_offset()));
|
|
|