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

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

Issue 19662003: Refactor resolution code in the vm to properly handle ambiguity errors. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 5 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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 "include/dart_api.h" 5 #include "include/dart_api.h"
6 #include "include/dart_mirrors_api.h" 6 #include "include/dart_mirrors_api.h"
7 #include "include/dart_native_api.h" 7 #include "include/dart_native_api.h"
8 8
9 #include "platform/assert.h" 9 #include "platform/assert.h"
10 #include "vm/bigint_operations.h" 10 #include "vm/bigint_operations.h"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 } else { 50 } else {
51 return func; 51 return func;
52 } 52 }
53 } 53 }
54 54
55 55
56 static RawInstance* GetListInstance(Isolate* isolate, const Object& obj) { 56 static RawInstance* GetListInstance(Isolate* isolate, const Object& obj) {
57 if (obj.IsInstance()) { 57 if (obj.IsInstance()) {
58 const Library& core_lib = Library::Handle(Library::CoreLibrary()); 58 const Library& core_lib = Library::Handle(Library::CoreLibrary());
59 const Class& list_class = 59 const Class& list_class =
60 Class::Handle(core_lib.LookupClass(Symbols::List())); 60 Class::Handle(core_lib.LookupClass(Symbols::List(), NULL));
61 ASSERT(!list_class.IsNull()); 61 ASSERT(!list_class.IsNull());
62 const Instance& instance = Instance::Cast(obj); 62 const Instance& instance = Instance::Cast(obj);
63 const Class& obj_class = Class::Handle(isolate, obj.clazz()); 63 const Class& obj_class = Class::Handle(isolate, obj.clazz());
64 Error& malformed_type_error = Error::Handle(isolate); 64 Error& malformed_type_error = Error::Handle(isolate);
65 if (obj_class.IsSubtypeOf(TypeArguments::Handle(isolate), 65 if (obj_class.IsSubtypeOf(TypeArguments::Handle(isolate),
66 list_class, 66 list_class,
67 TypeArguments::Handle(isolate), 67 TypeArguments::Handle(isolate),
68 &malformed_type_error)) { 68 &malformed_type_error)) {
69 ASSERT(malformed_type_error.IsNull()); // Type is a raw List. 69 ASSERT(malformed_type_error.IsNull()); // Type is a raw List.
70 return instance.raw(); 70 return instance.raw();
(...skipping 972 matching lines...) Expand 10 before | Expand all | Expand 10 after
1043 const String& function_name = 1043 const String& function_name =
1044 String::Handle(isolate_lib.PrivateName(Symbols::_get_or_create())); 1044 String::Handle(isolate_lib.PrivateName(Symbols::_get_or_create()));
1045 const int kNumArguments = 1; 1045 const int kNumArguments = 1;
1046 const Function& function = Function::Handle( 1046 const Function& function = Function::Handle(
1047 isolate, 1047 isolate,
1048 Resolver::ResolveStatic(isolate_lib, 1048 Resolver::ResolveStatic(isolate_lib,
1049 class_name, 1049 class_name,
1050 function_name, 1050 function_name,
1051 kNumArguments, 1051 kNumArguments,
1052 Object::empty_array(), 1052 Object::empty_array(),
1053 Resolver::kIsQualified)); 1053 Resolver::kIsQualified,
1054 NULL)); // No ambiguity error expected.
1054 ASSERT(!function.IsNull()); 1055 ASSERT(!function.IsNull());
1055 const Array& args = Array::Handle(isolate, Array::New(kNumArguments)); 1056 const Array& args = Array::Handle(isolate, Array::New(kNumArguments));
1056 args.SetAt(0, Integer::Handle(isolate, Integer::New(port_id))); 1057 args.SetAt(0, Integer::Handle(isolate, Integer::New(port_id)));
1057 return Api::NewHandle(isolate, DartEntry::InvokeFunction(function, args)); 1058 return Api::NewHandle(isolate, DartEntry::InvokeFunction(function, args));
1058 } 1059 }
1059 1060
1060 1061
1061 DART_EXPORT Dart_Port Dart_GetMainPortId() { 1062 DART_EXPORT Dart_Port Dart_GetMainPortId() {
1062 Isolate* isolate = Isolate::Current(); 1063 Isolate* isolate = Isolate::Current();
1063 CHECK_ISOLATE(isolate); 1064 CHECK_ISOLATE(isolate);
(...skipping 976 matching lines...) Expand 10 before | Expand all | Expand 10 after
2040 const String& lib_url = String::Handle(String::New("dart:core")); 2041 const String& lib_url = String::Handle(String::New("dart:core"));
2041 const String& class_name = String::Handle(String::New("ArgumentError")); 2042 const String& class_name = String::Handle(String::New("ArgumentError"));
2042 const Library& lib = 2043 const Library& lib =
2043 Library::Handle(isolate, Library::LookupLibrary(lib_url)); 2044 Library::Handle(isolate, Library::LookupLibrary(lib_url));
2044 if (lib.IsNull()) { 2045 if (lib.IsNull()) {
2045 const String& message = String::Handle( 2046 const String& message = String::Handle(
2046 String::NewFormatted("%s: library '%s' not found.", 2047 String::NewFormatted("%s: library '%s' not found.",
2047 CURRENT_FUNC, lib_url.ToCString())); 2048 CURRENT_FUNC, lib_url.ToCString()));
2048 return ApiError::New(message); 2049 return ApiError::New(message);
2049 } 2050 }
2050 const Class& cls = Class::Handle(isolate, 2051 const Class& cls = Class::Handle(
2051 lib.LookupClassAllowPrivate(class_name)); 2052 isolate, lib.LookupClassAllowPrivate(class_name, NULL));
siva 2013/07/22 22:21:46 As discussed this should probably just ASSERT(!cls
regis 2013/07/22 23:51:27 Done.
2052 if (cls.IsNull()) { 2053 if (cls.IsNull()) {
2053 const String& message = String::Handle( 2054 const String& message = String::Handle(
2054 String::NewFormatted("%s: class '%s' not found in library '%s'.", 2055 String::NewFormatted("%s: class '%s' not found in library '%s'.",
2055 CURRENT_FUNC, class_name.ToCString(), 2056 CURRENT_FUNC, class_name.ToCString(),
2056 lib_url.ToCString())); 2057 lib_url.ToCString()));
2057 return ApiError::New(message); 2058 return ApiError::New(message);
2058 } 2059 }
2059 Object& result = Object::Handle(isolate); 2060 Object& result = Object::Handle(isolate);
2060 String& dot_name = String::Handle(String::New(".")); 2061 String& dot_name = String::Handle(String::New("."));
2061 String& constr_name = String::Handle(String::Concat(class_name, dot_name)); 2062 String& constr_name = String::Handle(String::Concat(class_name, dot_name));
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
2397 return Dart_TypedData_kInvalid; 2398 return Dart_TypedData_kInvalid;
2398 } 2399 }
2399 2400
2400 2401
2401 static RawObject* GetByteDataConstructor(Isolate* isolate, 2402 static RawObject* GetByteDataConstructor(Isolate* isolate,
2402 const String& constructor_name, 2403 const String& constructor_name,
2403 intptr_t num_args) { 2404 intptr_t num_args) {
2404 const Library& lib = 2405 const Library& lib =
2405 Library::Handle(isolate->object_store()->typed_data_library()); 2406 Library::Handle(isolate->object_store()->typed_data_library());
2406 ASSERT(!lib.IsNull()); 2407 ASSERT(!lib.IsNull());
2407 const Class& cls = 2408 const Class& cls = Class::Handle(
2408 Class::Handle(isolate, lib.LookupClassAllowPrivate(Symbols::ByteData())); 2409 isolate, lib.LookupClassAllowPrivate(Symbols::ByteData(), NULL));
2409 ASSERT(!cls.IsNull()); 2410 ASSERT(!cls.IsNull());
2410 return ResolveConstructor(CURRENT_FUNC, 2411 return ResolveConstructor(CURRENT_FUNC,
2411 cls, 2412 cls,
2412 Symbols::ByteData(), 2413 Symbols::ByteData(),
2413 constructor_name, 2414 constructor_name,
2414 num_args); 2415 num_args);
2415 } 2416 }
2416 2417
2417 2418
2418 static Dart_Handle NewByteData(Isolate* isolate, intptr_t length) { 2419 static Dart_Handle NewByteData(Isolate* isolate, intptr_t length) {
(...skipping 568 matching lines...) Expand 10 before | Expand all | Expand 10 after
2987 } else if (obj.IsLibrary()) { 2988 } else if (obj.IsLibrary()) {
2988 // Check whether class finalization is needed. 2989 // Check whether class finalization is needed.
2989 const Library& lib = Library::Cast(obj); 2990 const Library& lib = Library::Cast(obj);
2990 2991
2991 // Finalize all classes if needed. 2992 // Finalize all classes if needed.
2992 Dart_Handle state = Api::CheckIsolateState(isolate); 2993 Dart_Handle state = Api::CheckIsolateState(isolate);
2993 if (::Dart_IsError(state)) { 2994 if (::Dart_IsError(state)) {
2994 return state; 2995 return state;
2995 } 2996 }
2996 2997
2998 String& ambiguity_error_msg = String::Handle(isolate);
2997 Function& function = Function::Handle(isolate); 2999 Function& function = Function::Handle(isolate);
2998 function = lib.LookupFunctionAllowPrivate(function_name); 3000 function = lib.LookupFunctionAllowPrivate(function_name,
3001 &ambiguity_error_msg);
2999 if (function.IsNull()) { 3002 if (function.IsNull()) {
3003 if (!ambiguity_error_msg.IsNull()) {
3004 return Api::NewError("%s.", ambiguity_error_msg.ToCString());
3005 }
3000 return Api::NewError("%s: did not find top-level function '%s'.", 3006 return Api::NewError("%s: did not find top-level function '%s'.",
3001 CURRENT_FUNC, 3007 CURRENT_FUNC,
3002 function_name.ToCString()); 3008 function_name.ToCString());
3003 } 3009 }
3004 // LookupFunctionAllowPrivate does not check argument arity, so we 3010 // LookupFunctionAllowPrivate does not check argument arity, so we
3005 // do it here. 3011 // do it here.
3006 String& error_message = String::Handle(); 3012 String& error_message = String::Handle();
3007 if (!function.AreValidArgumentCounts(number_of_arguments, 3013 if (!function.AreValidArgumentCounts(number_of_arguments,
3008 0, 3014 0,
3009 &error_message)) { 3015 &error_message)) {
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
3148 getter_name, 3154 getter_name,
3149 args, 3155 args,
3150 args_descriptor)); 3156 args_descriptor));
3151 } 3157 }
3152 return Api::NewHandle(isolate, DartEntry::InvokeFunction(getter, args)); 3158 return Api::NewHandle(isolate, DartEntry::InvokeFunction(getter, args));
3153 3159
3154 } else if (obj.IsLibrary()) { 3160 } else if (obj.IsLibrary()) {
3155 // To access a top-level we may need to use the Field or the 3161 // To access a top-level we may need to use the Field or the
3156 // getter Function. The getter function may either be in the 3162 // getter Function. The getter function may either be in the
3157 // library or in the field's owner class, depending. 3163 // library or in the field's owner class, depending.
3164 String& ambiguity_error_msg = String::Handle(isolate);
3158 const Library& lib = Library::Cast(obj); 3165 const Library& lib = Library::Cast(obj);
3159 field = lib.LookupFieldAllowPrivate(field_name); 3166 field = lib.LookupFieldAllowPrivate(field_name, &ambiguity_error_msg);
3160 if (field.IsNull()) { 3167 if (field.IsNull() && ambiguity_error_msg.IsNull()) {
3161 // No field found. Check for a getter in the lib. 3168 // No field found and no ambiguity error. Check for a getter in the lib.
3162 const String& getter_name = 3169 const String& getter_name =
3163 String::Handle(isolate, Field::GetterName(field_name)); 3170 String::Handle(isolate, Field::GetterName(field_name));
3164 getter = lib.LookupFunctionAllowPrivate(getter_name); 3171 getter = lib.LookupFunctionAllowPrivate(getter_name,
3165 } else if (FieldIsUninitialized(isolate, field)) { 3172 &ambiguity_error_msg);
3173 } else if (!field.IsNull() && FieldIsUninitialized(isolate, field)) {
3166 // A field was found. Check for a getter in the field's owner classs. 3174 // A field was found. Check for a getter in the field's owner classs.
3167 const Class& cls = Class::Handle(isolate, field.owner()); 3175 const Class& cls = Class::Handle(isolate, field.owner());
3168 const String& getter_name = 3176 const String& getter_name =
3169 String::Handle(isolate, Field::GetterName(field_name)); 3177 String::Handle(isolate, Field::GetterName(field_name));
3170 getter = cls.LookupStaticFunctionAllowPrivate(getter_name); 3178 getter = cls.LookupStaticFunctionAllowPrivate(getter_name);
3171 } 3179 }
3172 3180
3173 if (!getter.IsNull()) { 3181 if (!getter.IsNull()) {
3174 // Invoke the getter and return the result. 3182 // Invoke the getter and return the result.
3175 return Api::NewHandle( 3183 return Api::NewHandle(
3176 isolate, DartEntry::InvokeFunction(getter, Object::empty_array())); 3184 isolate, DartEntry::InvokeFunction(getter, Object::empty_array()));
3177 } else if (!field.IsNull()) { 3185 }
3186 if (!field.IsNull()) {
3178 return Api::NewHandle(isolate, field.value()); 3187 return Api::NewHandle(isolate, field.value());
3179 } else {
3180 return Api::NewError("%s: did not find top-level variable '%s'.",
3181 CURRENT_FUNC, field_name.ToCString());
3182 } 3188 }
3189 if (!ambiguity_error_msg.IsNull()) {
3190 return Api::NewError("%s.", ambiguity_error_msg.ToCString());
3191 }
3192 return Api::NewError("%s: did not find top-level variable '%s'.",
3193 CURRENT_FUNC, field_name.ToCString());
3183 3194
3184 } else if (obj.IsError()) { 3195 } else if (obj.IsError()) {
3185 return container; 3196 return container;
3186 } else { 3197 } else {
3187 return Api::NewError( 3198 return Api::NewError(
3188 "%s expects argument 'container' to be an object, type, or library.", 3199 "%s expects argument 'container' to be an object, type, or library.",
3189 CURRENT_FUNC); 3200 CURRENT_FUNC);
3190 } 3201 }
3191 } 3202 }
3192 3203
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
3300 setter_name, 3311 setter_name,
3301 args, 3312 args,
3302 args_descriptor)); 3313 args_descriptor));
3303 } 3314 }
3304 return Api::NewHandle(isolate, DartEntry::InvokeFunction(setter, args)); 3315 return Api::NewHandle(isolate, DartEntry::InvokeFunction(setter, args));
3305 3316
3306 } else if (obj.IsLibrary()) { 3317 } else if (obj.IsLibrary()) {
3307 // To access a top-level we may need to use the Field or the 3318 // To access a top-level we may need to use the Field or the
3308 // setter Function. The setter function may either be in the 3319 // setter Function. The setter function may either be in the
3309 // library or in the field's owner class, depending. 3320 // library or in the field's owner class, depending.
3321 String& ambiguity_error_msg = String::Handle(isolate);
3310 const Library& lib = Library::Cast(obj); 3322 const Library& lib = Library::Cast(obj);
3311 field = lib.LookupFieldAllowPrivate(field_name); 3323 field = lib.LookupFieldAllowPrivate(field_name, &ambiguity_error_msg);
3312 if (field.IsNull()) { 3324 if (field.IsNull() && ambiguity_error_msg.IsNull()) {
3313 const String& setter_name = 3325 const String& setter_name =
3314 String::Handle(isolate, Field::SetterName(field_name)); 3326 String::Handle(isolate, Field::SetterName(field_name));
3315 setter ^= lib.LookupFunctionAllowPrivate(setter_name); 3327 setter ^= lib.LookupFunctionAllowPrivate(setter_name,
3328 &ambiguity_error_msg);
3316 } 3329 }
3317 3330
3318 if (!setter.IsNull()) { 3331 if (!setter.IsNull()) {
3319 // Invoke the setter and return the result. 3332 // Invoke the setter and return the result.
3320 const int kNumArgs = 1; 3333 const int kNumArgs = 1;
3321 const Array& args = Array::Handle(isolate, Array::New(kNumArgs)); 3334 const Array& args = Array::Handle(isolate, Array::New(kNumArgs));
3322 args.SetAt(0, value_instance); 3335 args.SetAt(0, value_instance);
3323 const Object& result = 3336 const Object& result =
3324 Object::Handle(isolate, DartEntry::InvokeFunction(setter, args)); 3337 Object::Handle(isolate, DartEntry::InvokeFunction(setter, args));
3325 if (result.IsError()) { 3338 if (result.IsError()) {
3326 return Api::NewHandle(isolate, result.raw()); 3339 return Api::NewHandle(isolate, result.raw());
3327 } else {
3328 return Api::Success();
3329 } 3340 }
3330 } else if (!field.IsNull()) { 3341 return Api::Success();
3342 }
3343 if (!field.IsNull()) {
3331 if (field.is_final()) { 3344 if (field.is_final()) {
3332 return Api::NewError("%s: cannot set final top-level variable '%s'.", 3345 return Api::NewError("%s: cannot set final top-level variable '%s'.",
3333 CURRENT_FUNC, field_name.ToCString()); 3346 CURRENT_FUNC, field_name.ToCString());
3334 } else {
3335 field.set_value(value_instance);
3336 return Api::Success();
3337 } 3347 }
3338 } else { 3348 field.set_value(value_instance);
3339 return Api::NewError("%s: did not find top-level variable '%s'.", 3349 return Api::Success();
3340 CURRENT_FUNC, field_name.ToCString());
3341 } 3350 }
3351 if (!ambiguity_error_msg.IsNull()) {
3352 return Api::NewError("%s.", ambiguity_error_msg.ToCString());
3353 }
3354 return Api::NewError("%s: did not find top-level variable '%s'.",
3355 CURRENT_FUNC, field_name.ToCString());
3342 3356
3343 } else if (obj.IsError()) { 3357 } else if (obj.IsError()) {
3344 return container; 3358 return container;
3345 } else {
3346 return Api::NewError(
3347 "%s expects argument 'container' to be an object, type, or library.",
3348 CURRENT_FUNC);
3349 } 3359 }
3360 return Api::NewError(
3361 "%s expects argument 'container' to be an object, type, or library.",
3362 CURRENT_FUNC);
3350 } 3363 }
3351 3364
3352 3365
3353 // --- Exceptions ---- 3366 // --- Exceptions ----
3354 3367
3355 DART_EXPORT Dart_Handle Dart_ThrowException(Dart_Handle exception) { 3368 DART_EXPORT Dart_Handle Dart_ThrowException(Dart_Handle exception) {
3356 Isolate* isolate = Isolate::Current(); 3369 Isolate* isolate = Isolate::Current();
3357 CHECK_ISOLATE(isolate); 3370 CHECK_ISOLATE(isolate);
3358 CHECK_CALLBACK_STATE(isolate); 3371 CHECK_CALLBACK_STATE(isolate);
3359 { 3372 {
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
3686 Isolate* isolate = Isolate::Current(); 3699 Isolate* isolate = Isolate::Current();
3687 DARTSCOPE(isolate); 3700 DARTSCOPE(isolate);
3688 const Library& lib = Api::UnwrapLibraryHandle(isolate, library); 3701 const Library& lib = Api::UnwrapLibraryHandle(isolate, library);
3689 if (lib.IsNull()) { 3702 if (lib.IsNull()) {
3690 RETURN_TYPE_ERROR(isolate, library, Library); 3703 RETURN_TYPE_ERROR(isolate, library, Library);
3691 } 3704 }
3692 const String& cls_name = Api::UnwrapStringHandle(isolate, class_name); 3705 const String& cls_name = Api::UnwrapStringHandle(isolate, class_name);
3693 if (cls_name.IsNull()) { 3706 if (cls_name.IsNull()) {
3694 RETURN_TYPE_ERROR(isolate, class_name, String); 3707 RETURN_TYPE_ERROR(isolate, class_name, String);
3695 } 3708 }
3696 const Class& cls = 3709 String& ambiguity_error_msg = String::Handle(isolate);
3697 Class::Handle(isolate, lib.LookupClassAllowPrivate(cls_name)); 3710 const Class& cls = Class::Handle(
3711 isolate, lib.LookupClassAllowPrivate(cls_name, &ambiguity_error_msg));
3698 if (cls.IsNull()) { 3712 if (cls.IsNull()) {
3713 if (!ambiguity_error_msg.IsNull()) {
3714 return Api::NewError("%s.", ambiguity_error_msg.ToCString());
3715 }
3699 // TODO(turnidge): Return null or error in this case? 3716 // TODO(turnidge): Return null or error in this case?
3700 const String& lib_name = String::Handle(isolate, lib.name()); 3717 const String& lib_name = String::Handle(isolate, lib.name());
3701 return Api::NewError("Class '%s' not found in library '%s'.", 3718 return Api::NewError("Class '%s' not found in library '%s'.",
3702 cls_name.ToCString(), lib_name.ToCString()); 3719 cls_name.ToCString(), lib_name.ToCString());
3703 } 3720 }
3704 return Api::NewHandle(isolate, cls.raw()); 3721 return Api::NewHandle(isolate, cls.raw());
3705 } 3722 }
3706 3723
3707 3724
3708 DART_EXPORT Dart_Handle Dart_GetType(Dart_Handle library, 3725 DART_EXPORT Dart_Handle Dart_GetType(Dart_Handle library,
(...skipping 10 matching lines...) Expand all
3719 } 3736 }
3720 const String& name_str = Api::UnwrapStringHandle(isolate, class_name); 3737 const String& name_str = Api::UnwrapStringHandle(isolate, class_name);
3721 if (name_str.IsNull()) { 3738 if (name_str.IsNull()) {
3722 RETURN_TYPE_ERROR(isolate, class_name, String); 3739 RETURN_TYPE_ERROR(isolate, class_name, String);
3723 } 3740 }
3724 // Ensure all classes are finalized. 3741 // Ensure all classes are finalized.
3725 Dart_Handle state = Api::CheckIsolateState(isolate); 3742 Dart_Handle state = Api::CheckIsolateState(isolate);
3726 if (::Dart_IsError(state)) { 3743 if (::Dart_IsError(state)) {
3727 return state; 3744 return state;
3728 } 3745 }
3746 String& ambiguity_error_msg = String::Handle(isolate);
3729 const Class& cls = 3747 const Class& cls =
3730 Class::Handle(isolate, lib.LookupClassAllowPrivate(name_str)); 3748 Class::Handle(isolate, lib.LookupClassAllowPrivate(name_str,
3749 &ambiguity_error_msg));
3731 if (cls.IsNull()) { 3750 if (cls.IsNull()) {
3751 if (!ambiguity_error_msg.IsNull()) {
3752 return Api::NewError("%s.", ambiguity_error_msg.ToCString());
3753 }
3732 const String& lib_name = String::Handle(isolate, lib.name()); 3754 const String& lib_name = String::Handle(isolate, lib.name());
3733 return Api::NewError("Type '%s' not found in library '%s'.", 3755 return Api::NewError("Type '%s' not found in library '%s'.",
3734 name_str.ToCString(), lib_name.ToCString()); 3756 name_str.ToCString(), lib_name.ToCString());
3735 } 3757 }
3736 if (cls.NumTypeArguments() == 0) { 3758 if (cls.NumTypeArguments() == 0) {
3737 if (number_of_type_arguments != 0) { 3759 if (number_of_type_arguments != 0) {
3738 return Api::NewError("Invalid number of type arguments specified, " 3760 return Api::NewError("Invalid number of type arguments specified, "
3739 "got %"Pd" expected 0", number_of_type_arguments); 3761 "got %"Pd" expected 0", number_of_type_arguments);
3740 } 3762 }
3741 return Api::NewHandle(isolate, Type::NewNonParameterizedType(cls)); 3763 return Api::NewHandle(isolate, Type::NewNonParameterizedType(cls));
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
4004 } 4026 }
4005 { 4027 {
4006 NoGCScope no_gc; 4028 NoGCScope no_gc;
4007 RawObject* raw_obj = obj.raw(); 4029 RawObject* raw_obj = obj.raw();
4008 isolate->heap()->SetPeer(raw_obj, peer); 4030 isolate->heap()->SetPeer(raw_obj, peer);
4009 } 4031 }
4010 return Api::Success(); 4032 return Api::Success();
4011 } 4033 }
4012 4034
4013 } // namespace dart 4035 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698