Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1132)

Unified Diff: runtime/vm/intrinsifier_x64.cc

Issue 266913010: Refactor 'dart:profiler' UserTag API (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: runtime/vm/intrinsifier_x64.cc
diff --git a/runtime/vm/intrinsifier_x64.cc b/runtime/vm/intrinsifier_x64.cc
index c0bbba57346a61b6826072bdd514451ac3072259..a446cfbaddef6e0134284ecd611057de4afa135b 100644
--- a/runtime/vm/intrinsifier_x64.cc
+++ b/runtime/vm/intrinsifier_x64.cc
@@ -1655,6 +1655,8 @@ void Intrinsifier::UserTag_makeCurrent(Assembler* assembler) {
const Immediate& isolate_address =
Immediate(reinterpret_cast<int64_t>(isolate));
__ movq(RBX, isolate_address);
+ // R10: Current user tag.
+ __ movq(R10, Address(RBX, Isolate::current_tag_offset()));
zra 2014/05/06 15:27:24 Here, too?
Cutch 2014/05/06 17:00:25 Done.
// RAX: UserTag.
__ movq(RAX, Address(RSP, + 1 * kWordSize));
// Set Isolate::current_tag_.
@@ -1664,24 +1666,25 @@ void Intrinsifier::UserTag_makeCurrent(Assembler* assembler) {
// Set Isolate::user_tag_.
__ movq(Address(RBX, Isolate::user_tag_offset()), RAX);
// Set return value.
- __ LoadObject(RAX, Object::null_object(), PP);
+ __ movq(RAX, R10);
__ ret();
}
-void Intrinsifier::Profiler_getCurrentTag(Assembler* assembler) {
- // RBX: Isolate.
+void Intrinsifier::UserTag_defaultTag(Assembler* assembler) {
+ // RBX: Address of default tag.
Isolate* isolate = Isolate::Current();
- const Immediate& isolate_address =
- Immediate(reinterpret_cast<int64_t>(isolate));
- __ movq(RBX, isolate_address);
- // Set return value to Isolate::current_tag_.
- __ movq(RAX, Address(RBX, Isolate::current_tag_offset()));
+ const Immediate& default_tag_addr =
+ Immediate(reinterpret_cast<int64_t>(isolate->object_store()) +
+ ObjectStore::default_tag_offset());
+ __ movq(RBX, default_tag_addr);
+ // Set return value.
+ __ movq(RAX, Address(RBX, 0));
__ ret();
}
-void Intrinsifier::Profiler_clearCurrentTag(Assembler* assembler) {
+void Intrinsifier::Profiler_getCurrentTag(Assembler* assembler) {
// RBX: Isolate.
Isolate* isolate = Isolate::Current();
const Immediate& isolate_address =
@@ -1689,11 +1692,6 @@ void Intrinsifier::Profiler_clearCurrentTag(Assembler* assembler) {
__ movq(RBX, isolate_address);
// Set return value to Isolate::current_tag_.
__ movq(RAX, Address(RBX, Isolate::current_tag_offset()));
- // Clear Isolate::current_tag_.
- __ LoadObject(RCX, Object::null_object(), PP);
- __ movq(Address(RBX, Isolate::current_tag_offset()), RCX);
- // Clear Isolate::user_tag_.
- __ movq(Address(RBX, Isolate::user_tag_offset()), Immediate(0));
__ ret();
}

Powered by Google App Engine
This is Rietveld 408576698