Index: runtime/vm/intrinsifier_ia32.cc |
diff --git a/runtime/vm/intrinsifier_ia32.cc b/runtime/vm/intrinsifier_ia32.cc |
index 958e6ce436bb2f0afe0bdd34665003cacea857e2..6e27c852d41034402aa196c19523b02dc431200f 100644 |
--- a/runtime/vm/intrinsifier_ia32.cc |
+++ b/runtime/vm/intrinsifier_ia32.cc |
@@ -1749,49 +1749,39 @@ void Intrinsifier::UserTag_makeCurrent(Assembler* assembler) { |
const Address user_tag_addr = |
Address::Absolute(reinterpret_cast<uword>(isolate) + |
Isolate::user_tag_offset()); |
+ // EAX: Current user tag. |
+ __ movl(EAX, current_tag_addr); |
// EAX: UserTag. |
- __ movl(EAX, Address(ESP, + 1 * kWordSize)); |
+ __ movl(EBX, Address(ESP, + 1 * kWordSize)); |
// Set Isolate::current_tag_. |
- __ movl(current_tag_addr, EAX); |
+ __ movl(current_tag_addr, EBX); |
// EAX: UserTag's tag. |
- __ movl(EAX, FieldAddress(EAX, UserTag::tag_offset())); |
+ __ movl(EBX, FieldAddress(EBX, UserTag::tag_offset())); |
// Set Isolate::user_tag_. |
- __ movl(user_tag_addr, EAX); |
- // Set return value. |
- const Immediate& raw_null = |
- Immediate(reinterpret_cast<int32_t>(Object::null())); |
- __ movl(EAX, raw_null); |
+ __ movl(user_tag_addr, EBX); |
__ ret(); |
} |
-void Intrinsifier::Profiler_getCurrentTag(Assembler* assembler) { |
+void Intrinsifier::UserTag_defaultTag(Assembler* assembler) { |
Isolate* isolate = Isolate::Current(); |
- const Address current_tag_addr = |
- Address::Absolute(reinterpret_cast<uword>(isolate) + |
- Isolate::current_tag_offset()); |
- // Set return value to Isolate::current_tag_. |
- __ movl(EAX, current_tag_addr); |
+ const Address default_tag_addr = |
+ Address::Absolute( |
+ reinterpret_cast<uword>(isolate->object_store()) + |
+ ObjectStore::default_tag_offset()); |
+ // Set return value. |
+ __ movl(EAX, default_tag_addr); |
__ ret(); |
} |
-void Intrinsifier::Profiler_clearCurrentTag(Assembler* assembler) { |
+void Intrinsifier::Profiler_getCurrentTag(Assembler* assembler) { |
Isolate* isolate = Isolate::Current(); |
const Address current_tag_addr = |
Address::Absolute(reinterpret_cast<uword>(isolate) + |
Isolate::current_tag_offset()); |
- const Address user_tag_addr = |
- Address::Absolute(reinterpret_cast<uword>(isolate) + |
- Isolate::user_tag_offset()); |
// Set return value to Isolate::current_tag_. |
__ movl(EAX, current_tag_addr); |
- // Clear Isolate::current_tag_. |
- const Immediate& raw_null = |
- Immediate(reinterpret_cast<int32_t>(UserTag::null())); |
- __ movl(current_tag_addr, raw_null); |
- // Clear Isolate::user_tag_. |
- __ movl(user_tag_addr, Immediate(0)); |
__ ret(); |
} |