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

Side by Side Diff: runtime/vm/object.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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « runtime/vm/object.h ('k') | runtime/vm/object_store.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/object.h" 5 #include "vm/object.h"
6 6
7 #include "include/dart_api.h" 7 #include "include/dart_api.h"
8 #include "platform/assert.h" 8 #include "platform/assert.h"
9 #include "vm/assembler.h" 9 #include "vm/assembler.h"
10 #include "vm/cpu.h" 10 #include "vm/cpu.h"
(...skipping 18648 matching lines...) Expand 10 before | Expand all | Expand 10 after
18659 } 18659 }
18660 18660
18661 18661
18662 void UserTag::MakeActive() const { 18662 void UserTag::MakeActive() const {
18663 Isolate* isolate = Isolate::Current(); 18663 Isolate* isolate = Isolate::Current();
18664 ASSERT(isolate != NULL); 18664 ASSERT(isolate != NULL);
18665 isolate->set_current_tag(*this); 18665 isolate->set_current_tag(*this);
18666 } 18666 }
18667 18667
18668 18668
18669 void UserTag::ClearActive() {
18670 Isolate* isolate = Isolate::Current();
18671 ASSERT(isolate != NULL);
18672 isolate->clear_current_tag();
18673 }
18674
18675
18676 RawUserTag* UserTag::New(const String& label, Heap::Space space) { 18669 RawUserTag* UserTag::New(const String& label, Heap::Space space) {
18677 Isolate* isolate = Isolate::Current(); 18670 Isolate* isolate = Isolate::Current();
18678 ASSERT(isolate->tag_table() != GrowableObjectArray::null()); 18671 ASSERT(isolate->tag_table() != GrowableObjectArray::null());
18679 // Canonicalize by name. 18672 // Canonicalize by name.
18680 UserTag& result = UserTag::Handle(FindTagInIsolate(isolate, label)); 18673 UserTag& result = UserTag::Handle(FindTagInIsolate(isolate, label));
18681 if (!result.IsNull()) { 18674 if (!result.IsNull()) {
18682 // Tag already exists, return existing instance. 18675 // Tag already exists, return existing instance.
18683 return result.raw(); 18676 return result.raw();
18684 } 18677 }
18685 if (TagTableIsFull(isolate)) { 18678 if (TagTableIsFull(isolate)) {
(...skipping 11 matching lines...) Expand all
18697 space); 18690 space);
18698 NoGCScope no_gc; 18691 NoGCScope no_gc;
18699 result ^= raw; 18692 result ^= raw;
18700 } 18693 }
18701 result.set_label(label); 18694 result.set_label(label);
18702 AddTagToIsolate(isolate, result); 18695 AddTagToIsolate(isolate, result);
18703 return result.raw(); 18696 return result.raw();
18704 } 18697 }
18705 18698
18706 18699
18700 RawUserTag* UserTag::DefaultTag() {
18701 Isolate* isolate = Isolate::Current();
18702 ASSERT(isolate != NULL);
18703 ASSERT(isolate->object_store() != NULL);
18704 if (isolate->object_store()->default_tag() != UserTag::null()) {
18705 // Already created.
18706 return isolate->object_store()->default_tag();
18707 }
18708 // Create default tag.
18709 const UserTag& result = UserTag::Handle(isolate,
18710 UserTag::New(Symbols::Default()));
18711 ASSERT(result.tag() == UserTags::kDefaultUserTag);
18712 isolate->object_store()->set_default_tag(result);
18713 return result.raw();
18714 }
18715
18716
18707 RawUserTag* UserTag::FindTagInIsolate(Isolate* isolate, const String& label) { 18717 RawUserTag* UserTag::FindTagInIsolate(Isolate* isolate, const String& label) {
18708 ASSERT(isolate->tag_table() != GrowableObjectArray::null()); 18718 ASSERT(isolate->tag_table() != GrowableObjectArray::null());
18709 const GrowableObjectArray& tag_table = GrowableObjectArray::Handle( 18719 const GrowableObjectArray& tag_table = GrowableObjectArray::Handle(
18710 isolate, isolate->tag_table()); 18720 isolate, isolate->tag_table());
18711 UserTag& other = UserTag::Handle(isolate); 18721 UserTag& other = UserTag::Handle(isolate);
18712 String& tag_label = String::Handle(isolate); 18722 String& tag_label = String::Handle(isolate);
18713 for (intptr_t i = 0; i < tag_table.Length(); i++) { 18723 for (intptr_t i = 0; i < tag_table.Length(); i++) {
18714 other ^= tag_table.At(i); 18724 other ^= tag_table.At(i);
18715 ASSERT(!other.IsNull()); 18725 ASSERT(!other.IsNull());
18716 tag_label ^= other.label(); 18726 tag_label ^= other.label();
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
18777 return tag_label.ToCString(); 18787 return tag_label.ToCString();
18778 } 18788 }
18779 18789
18780 18790
18781 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { 18791 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const {
18782 Instance::PrintJSONImpl(stream, ref); 18792 Instance::PrintJSONImpl(stream, ref);
18783 } 18793 }
18784 18794
18785 18795
18786 } // namespace dart 18796 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/object.h ('k') | runtime/vm/object_store.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698