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

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

Issue 1162033005: Fix http://dartbug.com/23578: (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Update to ToT. Created 5 years, 6 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
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 "vm/code_generator.h" 5 #include "vm/code_generator.h"
6 6
7 #include "vm/assembler.h" 7 #include "vm/assembler.h"
8 #include "vm/ast.h" 8 #include "vm/ast.h"
9 #include "vm/code_patcher.h" 9 #include "vm/code_patcher.h"
10 #include "vm/compiler.h" 10 #include "vm/compiler.h"
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 DEFINE_RUNTIME_ENTRY(InstantiateTypeArguments, 2) { 218 DEFINE_RUNTIME_ENTRY(InstantiateTypeArguments, 2) {
219 TypeArguments& type_arguments = 219 TypeArguments& type_arguments =
220 TypeArguments::CheckedHandle(arguments.ArgAt(0)); 220 TypeArguments::CheckedHandle(arguments.ArgAt(0));
221 const TypeArguments& instantiator = 221 const TypeArguments& instantiator =
222 TypeArguments::CheckedHandle(arguments.ArgAt(1)); 222 TypeArguments::CheckedHandle(arguments.ArgAt(1));
223 ASSERT(!type_arguments.IsNull() && !type_arguments.IsInstantiated()); 223 ASSERT(!type_arguments.IsNull() && !type_arguments.IsInstantiated());
224 ASSERT(instantiator.IsNull() || instantiator.IsInstantiated()); 224 ASSERT(instantiator.IsNull() || instantiator.IsInstantiated());
225 // Code inlined in the caller should have optimized the case where the 225 // Code inlined in the caller should have optimized the case where the
226 // instantiator can be reused as type argument vector. 226 // instantiator can be reused as type argument vector.
227 ASSERT(instantiator.IsNull() || !type_arguments.IsUninstantiatedIdentity()); 227 ASSERT(instantiator.IsNull() || !type_arguments.IsUninstantiatedIdentity());
228 if (Isolate::Current()->TypeChecksEnabled()) { 228 if (isolate->flags().type_checks()) {
229 Error& bound_error = Error::Handle(); 229 Error& bound_error = Error::Handle();
230 type_arguments = 230 type_arguments =
231 type_arguments.InstantiateAndCanonicalizeFrom(instantiator, 231 type_arguments.InstantiateAndCanonicalizeFrom(instantiator,
232 &bound_error); 232 &bound_error);
233 if (!bound_error.IsNull()) { 233 if (!bound_error.IsNull()) {
234 // Throw a dynamic type error. 234 // Throw a dynamic type error.
235 const intptr_t location = GetCallerLocation(); 235 const intptr_t location = GetCallerLocation();
236 String& bound_error_message = String::Handle( 236 String& bound_error_message = String::Handle(
237 String::New(bound_error.ToErrorCString())); 237 String::New(bound_error.ToErrorCString()));
238 Exceptions::CreateAndThrowTypeError( 238 Exceptions::CreateAndThrowTypeError(
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 // Note that instantiated_dst_type may be malbounded. 523 // Note that instantiated_dst_type may be malbounded.
524 dst_type_name = instantiated_dst_type.UserVisibleName(); 524 dst_type_name = instantiated_dst_type.UserVisibleName();
525 dst_type_lib = 525 dst_type_lib =
526 Class::Handle(instantiated_dst_type.type_class()).library(); 526 Class::Handle(instantiated_dst_type.type_class()).library();
527 } else { 527 } else {
528 dst_type_name = dst_type.UserVisibleName(); 528 dst_type_name = dst_type.UserVisibleName();
529 dst_type_lib = Class::Handle(dst_type.type_class()).library(); 529 dst_type_lib = Class::Handle(dst_type.type_class()).library();
530 } 530 }
531 String& bound_error_message = String::Handle(); 531 String& bound_error_message = String::Handle();
532 if (!bound_error.IsNull()) { 532 if (!bound_error.IsNull()) {
533 ASSERT(Isolate::Current()->TypeChecksEnabled()); 533 ASSERT(isolate->flags().type_checks());
534 bound_error_message = String::New(bound_error.ToErrorCString()); 534 bound_error_message = String::New(bound_error.ToErrorCString());
535 } 535 }
536 if (src_type_name.Equals(dst_type_name)) { 536 if (src_type_name.Equals(dst_type_name)) {
537 // Qualify the names with their libraries. 537 // Qualify the names with their libraries.
538 String& lib_name = String::Handle(); 538 String& lib_name = String::Handle();
539 lib_name = Library::Handle( 539 lib_name = Library::Handle(
540 Class::Handle(src_type.type_class()).library()).name(); 540 Class::Handle(src_type.type_class()).library()).name();
541 if (lib_name.Length() != 0) { 541 if (lib_name.Length() != 0) {
542 lib_name = String::Concat(lib_name, Symbols::Dot()); 542 lib_name = String::Concat(lib_name, Symbols::Dot());
543 src_type_name = String::Concat(lib_name, src_type_name); 543 src_type_name = String::Concat(lib_name, src_type_name);
(...skipping 1140 matching lines...) Expand 10 before | Expand all | Expand 10 after
1684 const intptr_t elm_size = old_data.ElementSizeInBytes(); 1684 const intptr_t elm_size = old_data.ElementSizeInBytes();
1685 const TypedData& new_data = 1685 const TypedData& new_data =
1686 TypedData::Handle(TypedData::New(cid, new_size, Heap::kOld)); 1686 TypedData::Handle(TypedData::New(cid, new_size, Heap::kOld));
1687 TypedData::Copy(new_data, 0, old_data, 0, old_size * elm_size); 1687 TypedData::Copy(new_data, 0, old_data, 0, old_size * elm_size);
1688 typed_data_cell.SetAt(0, new_data); 1688 typed_data_cell.SetAt(0, new_data);
1689 arguments.SetReturn(new_data); 1689 arguments.SetReturn(new_data);
1690 } 1690 }
1691 1691
1692 1692
1693 } // namespace dart 1693 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698