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

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

Issue 1691163002: Fix background compilation crashes due to allocation of types in new space. Remove default argument… (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: e Created 4 years, 10 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/code_generator.cc ('k') | runtime/vm/object.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) 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 "lib/stacktrace.h" 10 #include "lib/stacktrace.h"
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 const Library& core_lib = Library::Handle(zone, Library::CoreLibrary()); 143 const Library& core_lib = Library::Handle(zone, Library::CoreLibrary());
144 const Class& list_class = 144 const Class& list_class =
145 Class::Handle(zone, core_lib.LookupClass(Symbols::List())); 145 Class::Handle(zone, core_lib.LookupClass(Symbols::List()));
146 ASSERT(!list_class.IsNull()); 146 ASSERT(!list_class.IsNull());
147 const Instance& instance = Instance::Cast(obj); 147 const Instance& instance = Instance::Cast(obj);
148 const Class& obj_class = Class::Handle(zone, obj.clazz()); 148 const Class& obj_class = Class::Handle(zone, obj.clazz());
149 Error& malformed_type_error = Error::Handle(zone); 149 Error& malformed_type_error = Error::Handle(zone);
150 if (obj_class.IsSubtypeOf(Object::null_type_arguments(), 150 if (obj_class.IsSubtypeOf(Object::null_type_arguments(),
151 list_class, 151 list_class,
152 Object::null_type_arguments(), 152 Object::null_type_arguments(),
153 &malformed_type_error)) { 153 &malformed_type_error,
154 NULL,
155 Heap::kNew)) {
154 ASSERT(malformed_type_error.IsNull()); // Type is a raw List. 156 ASSERT(malformed_type_error.IsNull()); // Type is a raw List.
155 return instance.raw(); 157 return instance.raw();
156 } 158 }
157 } 159 }
158 return Instance::null(); 160 return Instance::null();
159 } 161 }
160 162
161 static RawInstance* GetMapInstance(Zone* zone, const Object& obj) { 163 static RawInstance* GetMapInstance(Zone* zone, const Object& obj) {
162 if (obj.IsInstance()) { 164 if (obj.IsInstance()) {
163 const Library& core_lib = Library::Handle(zone, Library::CoreLibrary()); 165 const Library& core_lib = Library::Handle(zone, Library::CoreLibrary());
164 const Class& map_class = 166 const Class& map_class =
165 Class::Handle(core_lib.LookupClass(Symbols::Map())); 167 Class::Handle(core_lib.LookupClass(Symbols::Map()));
166 ASSERT(!map_class.IsNull()); 168 ASSERT(!map_class.IsNull());
167 const Instance& instance = Instance::Cast(obj); 169 const Instance& instance = Instance::Cast(obj);
168 const Class& obj_class = Class::Handle(zone, obj.clazz()); 170 const Class& obj_class = Class::Handle(zone, obj.clazz());
169 Error& malformed_type_error = Error::Handle(zone); 171 Error& malformed_type_error = Error::Handle(zone);
170 if (obj_class.IsSubtypeOf(Object::null_type_arguments(), 172 if (obj_class.IsSubtypeOf(Object::null_type_arguments(),
171 map_class, 173 map_class,
172 Object::null_type_arguments(), 174 Object::null_type_arguments(),
173 &malformed_type_error)) { 175 &malformed_type_error,
176 NULL,
177 Heap::kNew)) {
174 ASSERT(malformed_type_error.IsNull()); // Type is a raw Map. 178 ASSERT(malformed_type_error.IsNull()); // Type is a raw Map.
175 return instance.raw(); 179 return instance.raw();
176 } 180 }
177 } 181 }
178 return Instance::null(); 182 return Instance::null();
179 } 183 }
180 184
181 185
182 static bool GetNativeStringArgument(NativeArguments* arguments, 186 static bool GetNativeStringArgument(NativeArguments* arguments,
183 int arg_index, 187 int arg_index,
(...skipping 1825 matching lines...) Expand 10 before | Expand all | Expand 10 after
2009 const Object& obj = Object::Handle(Z, Api::UnwrapHandle(handle)); 2013 const Object& obj = Object::Handle(Z, Api::UnwrapHandle(handle));
2010 if (obj.IsInstance()) { 2014 if (obj.IsInstance()) {
2011 const Class& future_class = 2015 const Class& future_class =
2012 Class::Handle(I->object_store()->future_class()); 2016 Class::Handle(I->object_store()->future_class());
2013 ASSERT(!future_class.IsNull()); 2017 ASSERT(!future_class.IsNull());
2014 const Class& obj_class = Class::Handle(Z, obj.clazz()); 2018 const Class& obj_class = Class::Handle(Z, obj.clazz());
2015 Error& malformed_type_error = Error::Handle(Z); 2019 Error& malformed_type_error = Error::Handle(Z);
2016 bool is_future = obj_class.IsSubtypeOf(Object::null_type_arguments(), 2020 bool is_future = obj_class.IsSubtypeOf(Object::null_type_arguments(),
2017 future_class, 2021 future_class,
2018 Object::null_type_arguments(), 2022 Object::null_type_arguments(),
2019 &malformed_type_error); 2023 &malformed_type_error,
2024 NULL,
2025 Heap::kNew);
2020 ASSERT(malformed_type_error.IsNull()); // Type is a raw Future. 2026 ASSERT(malformed_type_error.IsNull()); // Type is a raw Future.
2021 return is_future; 2027 return is_future;
2022 } 2028 }
2023 return false; 2029 return false;
2024 } 2030 }
2025 2031
2026 2032
2027 // --- Instances ---- 2033 // --- Instances ----
2028 2034
2029 DART_EXPORT Dart_Handle Dart_InstanceGetType(Dart_Handle instance) { 2035 DART_EXPORT Dart_Handle Dart_InstanceGetType(Dart_Handle instance) {
(...skipping 1761 matching lines...) Expand 10 before | Expand all | Expand 10 after
3791 if (constructor.IsNull()) { 3797 if (constructor.IsNull()) {
3792 ASSERT(redirect_type.IsMalformed()); 3798 ASSERT(redirect_type.IsMalformed());
3793 return Api::NewHandle(T, redirect_type.error()); 3799 return Api::NewHandle(T, redirect_type.error());
3794 } 3800 }
3795 3801
3796 if (!redirect_type.IsInstantiated()) { 3802 if (!redirect_type.IsInstantiated()) {
3797 // The type arguments of the redirection type are instantiated from the 3803 // The type arguments of the redirection type are instantiated from the
3798 // type arguments of the type argument. 3804 // type arguments of the type argument.
3799 Error& bound_error = Error::Handle(); 3805 Error& bound_error = Error::Handle();
3800 redirect_type ^= redirect_type.InstantiateFrom(type_arguments, 3806 redirect_type ^= redirect_type.InstantiateFrom(type_arguments,
3801 &bound_error); 3807 &bound_error,
3808 NULL, NULL, Heap::kNew);
3802 if (!bound_error.IsNull()) { 3809 if (!bound_error.IsNull()) {
3803 return Api::NewHandle(T, bound_error.raw()); 3810 return Api::NewHandle(T, bound_error.raw());
3804 } 3811 }
3805 redirect_type ^= redirect_type.Canonicalize(); 3812 redirect_type ^= redirect_type.Canonicalize();
3806 } 3813 }
3807 3814
3808 type_obj = redirect_type.raw(); 3815 type_obj = redirect_type.raw();
3809 type_arguments = redirect_type.arguments(); 3816 type_arguments = redirect_type.arguments();
3810 3817
3811 cls = type_obj.type_class(); 3818 cls = type_obj.type_class();
(...skipping 2349 matching lines...) Expand 10 before | Expand all | Expand 10 after
6161 return Api::Success(); 6168 return Api::Success();
6162 } 6169 }
6163 #endif // DART_PRECOMPILER 6170 #endif // DART_PRECOMPILER
6164 6171
6165 6172
6166 DART_EXPORT bool Dart_IsRunningPrecompiledCode() { 6173 DART_EXPORT bool Dart_IsRunningPrecompiledCode() {
6167 return Dart::IsRunningPrecompiledCode(); 6174 return Dart::IsRunningPrecompiledCode();
6168 } 6175 }
6169 6176
6170 } // namespace dart 6177 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/code_generator.cc ('k') | runtime/vm/object.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698