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

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
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 18649 matching lines...) Expand 10 before | Expand all | Expand 10 after
18660 } 18660 }
18661 18661
18662 18662
18663 void UserTag::MakeActive() const { 18663 void UserTag::MakeActive() const {
18664 Isolate* isolate = Isolate::Current(); 18664 Isolate* isolate = Isolate::Current();
18665 ASSERT(isolate != NULL); 18665 ASSERT(isolate != NULL);
18666 isolate->set_current_tag(*this); 18666 isolate->set_current_tag(*this);
18667 } 18667 }
18668 18668
18669 18669
18670 void UserTag::ClearActive() {
18671 Isolate* isolate = Isolate::Current();
18672 ASSERT(isolate != NULL);
18673 isolate->clear_current_tag();
18674 }
18675
18676
18677 RawUserTag* UserTag::New(const String& label, Heap::Space space) { 18670 RawUserTag* UserTag::New(const String& label, Heap::Space space) {
18678 Isolate* isolate = Isolate::Current(); 18671 Isolate* isolate = Isolate::Current();
18679 ASSERT(isolate->tag_table() != GrowableObjectArray::null()); 18672 ASSERT(isolate->tag_table() != GrowableObjectArray::null());
18680 // Canonicalize by name. 18673 // Canonicalize by name.
18681 UserTag& result = UserTag::Handle(FindTagInIsolate(isolate, label)); 18674 UserTag& result = UserTag::Handle(FindTagInIsolate(isolate, label));
18682 if (!result.IsNull()) { 18675 if (!result.IsNull()) {
18683 // Tag already exists, return existing instance. 18676 // Tag already exists, return existing instance.
18684 return result.raw(); 18677 return result.raw();
18685 } 18678 }
18686 if (TagTableIsFull(isolate)) { 18679 if (TagTableIsFull(isolate)) {
(...skipping 11 matching lines...) Expand all
18698 space); 18691 space);
18699 NoGCScope no_gc; 18692 NoGCScope no_gc;
18700 result ^= raw; 18693 result ^= raw;
18701 } 18694 }
18702 result.set_label(label); 18695 result.set_label(label);
18703 AddTagToIsolate(isolate, result); 18696 AddTagToIsolate(isolate, result);
18704 return result.raw(); 18697 return result.raw();
18705 } 18698 }
18706 18699
18707 18700
18701 RawUserTag* UserTag::MakeDefault() {
18702 Isolate* isolate = Isolate::Current();
18703 ASSERT(isolate != NULL);
18704 ASSERT(isolate->object_store() != NULL);
18705 if (isolate->object_store()->default_tag() != UserTag::null()) {
18706 // Already created.
18707 return isolate->object_store()->default_tag();
18708 }
18709 // Create default tag.
18710 const UserTag& result = UserTag::Handle(isolate,
18711 UserTag::New(Symbols::Default()));
18712 ASSERT(result.tag() == UserTags::kDefaultUserTag);
18713 isolate->object_store()->set_default_tag(result);
18714 return result.raw();
18715 }
18716
18717
18708 RawUserTag* UserTag::FindTagInIsolate(Isolate* isolate, const String& label) { 18718 RawUserTag* UserTag::FindTagInIsolate(Isolate* isolate, const String& label) {
18709 ASSERT(isolate->tag_table() != GrowableObjectArray::null()); 18719 ASSERT(isolate->tag_table() != GrowableObjectArray::null());
18710 const GrowableObjectArray& tag_table = GrowableObjectArray::Handle( 18720 const GrowableObjectArray& tag_table = GrowableObjectArray::Handle(
18711 isolate, isolate->tag_table()); 18721 isolate, isolate->tag_table());
18712 UserTag& other = UserTag::Handle(isolate); 18722 UserTag& other = UserTag::Handle(isolate);
18713 String& tag_label = String::Handle(isolate); 18723 String& tag_label = String::Handle(isolate);
18714 for (intptr_t i = 0; i < tag_table.Length(); i++) { 18724 for (intptr_t i = 0; i < tag_table.Length(); i++) {
18715 other ^= tag_table.At(i); 18725 other ^= tag_table.At(i);
18716 ASSERT(!other.IsNull()); 18726 ASSERT(!other.IsNull());
18717 tag_label ^= other.label(); 18727 tag_label ^= other.label();
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
18778 return tag_label.ToCString(); 18788 return tag_label.ToCString();
18779 } 18789 }
18780 18790
18781 18791
18782 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { 18792 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const {
18783 Instance::PrintJSONImpl(stream, ref); 18793 Instance::PrintJSONImpl(stream, ref);
18784 } 18794 }
18785 18795
18786 18796
18787 } // namespace dart 18797 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698