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

Side by Side Diff: runtime/vm/object.cc

Issue 1890013002: Fix mirrors to keep typedef as scope class of function types (fixes #26187). (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: address comment Created 4 years, 8 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
« no previous file with comments | « runtime/vm/flow_graph_compiler_arm.cc ('k') | runtime/vm/parser.cc » ('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 10936 matching lines...) Expand 10 before | Expand all | Expand 10 after
10947 10947
10948 10948
10949 void Namespace::set_metadata_field(const Field& value) const { 10949 void Namespace::set_metadata_field(const Field& value) const {
10950 StorePointer(&raw_ptr()->metadata_field_, value.raw()); 10950 StorePointer(&raw_ptr()->metadata_field_, value.raw());
10951 } 10951 }
10952 10952
10953 10953
10954 void Namespace::AddMetadata(const Object& owner, TokenPosition token_pos) { 10954 void Namespace::AddMetadata(const Object& owner, TokenPosition token_pos) {
10955 ASSERT(Field::Handle(metadata_field()).IsNull()); 10955 ASSERT(Field::Handle(metadata_field()).IsNull());
10956 Field& field = Field::Handle(Field::NewTopLevel(Symbols::TopLevel(), 10956 Field& field = Field::Handle(Field::NewTopLevel(Symbols::TopLevel(),
10957 false, // is_final 10957 false, // is_final
10958 false, // is_const 10958 false, // is_const
10959 owner, 10959 owner,
10960 token_pos)); 10960 token_pos));
10961 field.set_is_reflectable(false); 10961 field.set_is_reflectable(false);
10962 field.SetFieldType(Object::dynamic_type()); 10962 field.SetFieldType(Object::dynamic_type());
10963 field.SetStaticValue(Array::empty_array(), true); 10963 field.SetStaticValue(Array::empty_array(), true);
10964 set_metadata_field(field); 10964 set_metadata_field(field);
10965 } 10965 }
10966 10966
10967 10967
10968 RawObject* Namespace::GetMetadata() const { 10968 RawObject* Namespace::GetMetadata() const {
10969 Field& field = Field::Handle(metadata_field()); 10969 Field& field = Field::Handle(metadata_field());
10970 if (field.IsNull()) { 10970 if (field.IsNull()) {
(...skipping 5556 matching lines...) Expand 10 before | Expand all | Expand 10 after
16527 } 16527 }
16528 Thread* thread = Thread::Current(); 16528 Thread* thread = Thread::Current();
16529 Zone* zone = thread->zone(); 16529 Zone* zone = thread->zone();
16530 Isolate* isolate = thread->isolate(); 16530 Isolate* isolate = thread->isolate();
16531 AbstractType& type = Type::Handle(zone); 16531 AbstractType& type = Type::Handle(zone);
16532 const Class& cls = Class::Handle(zone, type_class()); 16532 const Class& cls = Class::Handle(zone, type_class());
16533 if (cls.raw() == Object::dynamic_class() && (isolate != Dart::vm_isolate())) { 16533 if (cls.raw() == Object::dynamic_class() && (isolate != Dart::vm_isolate())) {
16534 return Object::dynamic_type().raw(); 16534 return Object::dynamic_type().raw();
16535 } 16535 }
16536 // Fast canonical lookup/registry for simple types. 16536 // Fast canonical lookup/registry for simple types.
16537 if (!cls.IsGeneric() && !cls.IsClosureClass()) { 16537 if (!cls.IsGeneric() && !cls.IsClosureClass() && !cls.IsTypedefClass()) {
16538 ASSERT(!IsFunctionType() || cls.IsTypedefClass()); 16538 ASSERT(!IsFunctionType());
16539 type = cls.CanonicalType(); 16539 type = cls.CanonicalType();
16540 if (type.IsNull()) { 16540 if (type.IsNull()) {
16541 ASSERT(!cls.raw()->IsVMHeapObject() || (isolate == Dart::vm_isolate())); 16541 ASSERT(!cls.raw()->IsVMHeapObject() || (isolate == Dart::vm_isolate()));
16542 // Canonicalize the type arguments of the supertype, if any. 16542 // Canonicalize the type arguments of the supertype, if any.
16543 TypeArguments& type_args = TypeArguments::Handle(zone, arguments()); 16543 TypeArguments& type_args = TypeArguments::Handle(zone, arguments());
16544 type_args = type_args.Canonicalize(trail); 16544 type_args = type_args.Canonicalize(trail);
16545 if (IsCanonical()) { 16545 if (IsCanonical()) {
16546 // Canonicalizing type_args canonicalized this type. 16546 // Canonicalizing type_args canonicalized this type.
16547 ASSERT(IsRecursive()); 16547 ASSERT(IsRecursive());
16548 return this->raw(); 16548 return this->raw();
(...skipping 5504 matching lines...) Expand 10 before | Expand all | Expand 10 after
22053 return UserTag::null(); 22053 return UserTag::null();
22054 } 22054 }
22055 22055
22056 22056
22057 const char* UserTag::ToCString() const { 22057 const char* UserTag::ToCString() const {
22058 const String& tag_label = String::Handle(label()); 22058 const String& tag_label = String::Handle(label());
22059 return tag_label.ToCString(); 22059 return tag_label.ToCString();
22060 } 22060 }
22061 22061
22062 } // namespace dart 22062 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/flow_graph_compiler_arm.cc ('k') | runtime/vm/parser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698