| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 <map> | 5 #include <map> |
| 6 #include <set> | 6 #include <set> |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "vm/kernel_to_il.h" | 9 #include "vm/kernel_to_il.h" |
| 10 | 10 |
| (...skipping 1050 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1061 } | 1061 } |
| 1062 | 1062 |
| 1063 | 1063 |
| 1064 dart::String& TranslationHelper::DartSymbol(String* content) const { | 1064 dart::String& TranslationHelper::DartSymbol(String* content) const { |
| 1065 return dart::String::ZoneHandle( | 1065 return dart::String::ZoneHandle( |
| 1066 Z, dart::Symbols::FromUTF8(thread_, content->buffer(), content->size())); | 1066 Z, dart::Symbols::FromUTF8(thread_, content->buffer(), content->size())); |
| 1067 } | 1067 } |
| 1068 | 1068 |
| 1069 | 1069 |
| 1070 const dart::String& TranslationHelper::DartClassName( | 1070 const dart::String& TranslationHelper::DartClassName( |
| 1071 kernel::Class* kernel_klass) { | 1071 CanonicalName* kernel_klass) { |
| 1072 ASSERT(kernel_klass->IsNormalClass()); | |
| 1073 dart::String& name = DartString(kernel_klass->name()); | 1072 dart::String& name = DartString(kernel_klass->name()); |
| 1074 return ManglePrivateName(kernel_klass->parent(), &name); | 1073 return ManglePrivateName(kernel_klass->parent(), &name); |
| 1075 } | 1074 } |
| 1076 | 1075 |
| 1077 | 1076 |
| 1078 const dart::String& TranslationHelper::DartConstructorName(Constructor* node) { | 1077 const dart::String& TranslationHelper::DartConstructorName(Constructor* node) { |
| 1079 Class* klass = Class::Cast(node->parent()); | 1078 Class* klass = Class::Cast(node->parent()); |
| 1080 return DartFactoryName(klass, node->name()); | 1079 return DartFactoryName(klass, node->name()); |
| 1081 } | 1080 } |
| 1082 | 1081 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 1105 // conventions. | 1104 // conventions. |
| 1106 String* content = kernel_name->string(); | 1105 String* content = kernel_name->string(); |
| 1107 ASSERT(content->size() > 0); | 1106 ASSERT(content->size() > 0); |
| 1108 intptr_t skip = 0; | 1107 intptr_t skip = 0; |
| 1109 if (content->buffer()[content->size() - 1] == '=') { | 1108 if (content->buffer()[content->size() - 1] == '=') { |
| 1110 skip = 1; | 1109 skip = 1; |
| 1111 } | 1110 } |
| 1112 dart::String& name = dart::String::ZoneHandle( | 1111 dart::String& name = dart::String::ZoneHandle( |
| 1113 Z, dart::String::FromUTF8(content->buffer(), content->size() - skip, | 1112 Z, dart::String::FromUTF8(content->buffer(), content->size() - skip, |
| 1114 allocation_space_)); | 1113 allocation_space_)); |
| 1115 ManglePrivateName(kernel_name->library(), &name, false); | 1114 ManglePrivateName(kernel_name->library_reference(), &name, false); |
| 1116 name = dart::Field::SetterSymbol(name); | 1115 name = dart::Field::SetterSymbol(name); |
| 1117 return name; | 1116 return name; |
| 1118 } | 1117 } |
| 1119 | 1118 |
| 1120 | 1119 |
| 1121 const dart::String& TranslationHelper::DartGetterName(Name* kernel_name) { | 1120 const dart::String& TranslationHelper::DartGetterName(Name* kernel_name) { |
| 1122 dart::String& name = DartString(kernel_name->string()); | 1121 dart::String& name = DartString(kernel_name->string()); |
| 1123 ManglePrivateName(kernel_name->library(), &name, false); | 1122 ManglePrivateName(kernel_name->library_reference(), &name, false); |
| 1124 name = dart::Field::GetterSymbol(name); | 1123 name = dart::Field::GetterSymbol(name); |
| 1125 return name; | 1124 return name; |
| 1126 } | 1125 } |
| 1127 | 1126 |
| 1128 | 1127 |
| 1129 const dart::String& TranslationHelper::DartFieldName(Name* kernel_name) { | 1128 const dart::String& TranslationHelper::DartFieldName(Name* kernel_name) { |
| 1130 dart::String& name = DartString(kernel_name->string()); | 1129 dart::String& name = DartString(kernel_name->string()); |
| 1131 return ManglePrivateName(kernel_name->library(), &name); | 1130 return ManglePrivateName(kernel_name->library_reference(), &name); |
| 1132 } | 1131 } |
| 1133 | 1132 |
| 1134 | 1133 |
| 1135 const dart::String& TranslationHelper::DartInitializerName(Name* kernel_name) { | 1134 const dart::String& TranslationHelper::DartInitializerName(Name* kernel_name) { |
| 1136 // The [DartFieldName] will take care of mangling the name. | 1135 // The [DartFieldName] will take care of mangling the name. |
| 1137 dart::String& name = | 1136 dart::String& name = |
| 1138 dart::String::Handle(Z, DartFieldName(kernel_name).raw()); | 1137 dart::String::Handle(Z, DartFieldName(kernel_name).raw()); |
| 1139 name = Symbols::FromConcat(thread_, Symbols::InitPrefix(), name); | 1138 name = Symbols::FromConcat(thread_, Symbols::InitPrefix(), name); |
| 1140 return name; | 1139 return name; |
| 1141 } | 1140 } |
| 1142 | 1141 |
| 1143 | 1142 |
| 1144 const dart::String& TranslationHelper::DartMethodName(Name* kernel_name) { | 1143 const dart::String& TranslationHelper::DartMethodName(Name* kernel_name) { |
| 1145 dart::String& name = DartString(kernel_name->string()); | 1144 dart::String& name = DartString(kernel_name->string()); |
| 1146 return ManglePrivateName(kernel_name->library(), &name); | 1145 return ManglePrivateName(kernel_name->library_reference(), &name); |
| 1147 } | 1146 } |
| 1148 | 1147 |
| 1149 | 1148 |
| 1150 const dart::String& TranslationHelper::DartFactoryName(Class* klass, | 1149 const dart::String& TranslationHelper::DartFactoryName(Class* klass, |
| 1151 Name* method_name) { | 1150 Name* method_name) { |
| 1152 // [DartMethodName] will mangle the name. | 1151 // [DartMethodName] will mangle the name. |
| 1153 GrowableHandlePtrArray<const dart::String> pieces(Z, 3); | 1152 GrowableHandlePtrArray<const dart::String> pieces(Z, 3); |
| 1154 pieces.Add(DartClassName(klass)); | 1153 pieces.Add(DartClassName(klass->canonical_name())); |
| 1155 pieces.Add(Symbols::Dot()); | 1154 pieces.Add(Symbols::Dot()); |
| 1156 pieces.Add(DartMethodName(method_name)); | 1155 pieces.Add(DartMethodName(method_name)); |
| 1157 return dart::String::ZoneHandle( | 1156 return dart::String::ZoneHandle( |
| 1158 Z, dart::Symbols::FromConcatAll(thread_, pieces)); | 1157 Z, dart::Symbols::FromConcatAll(thread_, pieces)); |
| 1159 } | 1158 } |
| 1160 | 1159 |
| 1161 | 1160 |
| 1162 dart::RawLibrary* TranslationHelper::LookupLibraryByKernelLibrary( | 1161 dart::RawLibrary* TranslationHelper::LookupLibraryByKernelLibrary( |
| 1163 Library* kernel_library) { | 1162 CanonicalName* kernel_library) { |
| 1164 const dart::String& library_name = DartSymbol(kernel_library->import_uri()); | 1163 const dart::String& library_name = DartSymbol(kernel_library->name()); |
| 1165 ASSERT(!library_name.IsNull()); | 1164 ASSERT(!library_name.IsNull()); |
| 1166 dart::RawLibrary* library = | 1165 dart::RawLibrary* library = |
| 1167 dart::Library::LookupLibrary(thread_, library_name); | 1166 dart::Library::LookupLibrary(thread_, library_name); |
| 1168 ASSERT(library != Object::null()); | 1167 ASSERT(library != Object::null()); |
| 1169 return library; | 1168 return library; |
| 1170 } | 1169 } |
| 1171 | 1170 |
| 1172 | 1171 |
| 1173 dart::RawClass* TranslationHelper::LookupClassByKernelClass( | 1172 dart::RawClass* TranslationHelper::LookupClassByKernelClass( |
| 1174 Class* kernel_klass) { | 1173 CanonicalName* kernel_klass) { |
| 1175 dart::RawClass* klass = NULL; | 1174 dart::RawClass* klass = NULL; |
| 1176 | 1175 |
| 1177 const dart::String& class_name = DartClassName(kernel_klass); | 1176 const dart::String& class_name = DartClassName(kernel_klass); |
| 1178 Library* kernel_library = Library::Cast(kernel_klass->parent()); | 1177 CanonicalName* kernel_library = kernel_klass->parent(); |
| 1179 dart::Library& library = | 1178 dart::Library& library = |
| 1180 dart::Library::Handle(Z, LookupLibraryByKernelLibrary(kernel_library)); | 1179 dart::Library::Handle(Z, LookupLibraryByKernelLibrary(kernel_library)); |
| 1181 klass = library.LookupClassAllowPrivate(class_name); | 1180 klass = library.LookupClassAllowPrivate(class_name); |
| 1182 | 1181 |
| 1183 ASSERT(klass != Object::null()); | 1182 ASSERT(klass != Object::null()); |
| 1184 return klass; | 1183 return klass; |
| 1185 } | 1184 } |
| 1186 | 1185 |
| 1187 | 1186 |
| 1188 dart::RawField* TranslationHelper::LookupFieldByKernelField( | 1187 dart::RawField* TranslationHelper::LookupFieldByKernelField( |
| 1189 Field* kernel_field) { | 1188 Field* kernel_field) { |
| 1190 TreeNode* node = kernel_field->parent(); | 1189 TreeNode* node = kernel_field->parent(); |
| 1191 | 1190 |
| 1192 dart::Class& klass = dart::Class::Handle(Z); | 1191 dart::Class& klass = dart::Class::Handle(Z); |
| 1193 if (node->IsClass()) { | 1192 if (node->IsClass()) { |
| 1194 klass = LookupClassByKernelClass(Class::Cast(node)); | 1193 klass = LookupClassByKernelClass(Class::Cast(node)->canonical_name()); |
| 1195 } else { | 1194 } else { |
| 1196 ASSERT(node->IsLibrary()); | 1195 ASSERT(node->IsLibrary()); |
| 1197 dart::Library& library = dart::Library::Handle( | 1196 dart::Library& library = dart::Library::Handle( |
| 1198 Z, LookupLibraryByKernelLibrary(Library::Cast(node))); | 1197 Z, LookupLibraryByKernelLibrary(Library::Cast(node)->canonical_name())); |
| 1199 klass = library.toplevel_class(); | 1198 klass = library.toplevel_class(); |
| 1200 } | 1199 } |
| 1201 dart::RawField* field = | 1200 dart::RawField* field = |
| 1202 klass.LookupFieldAllowPrivate(DartSymbol(kernel_field->name()->string())); | 1201 klass.LookupFieldAllowPrivate(DartSymbol(kernel_field->name()->string())); |
| 1203 ASSERT(field != Object::null()); | 1202 ASSERT(field != Object::null()); |
| 1204 return field; | 1203 return field; |
| 1205 } | 1204 } |
| 1206 | 1205 |
| 1207 | 1206 |
| 1208 dart::RawFunction* TranslationHelper::LookupStaticMethodByKernelProcedure( | 1207 dart::RawFunction* TranslationHelper::LookupStaticMethodByKernelProcedure( |
| 1209 Procedure* procedure) { | 1208 Procedure* procedure) { |
| 1210 ASSERT(procedure->IsStatic()); | 1209 ASSERT(procedure->IsStatic()); |
| 1211 const dart::String& procedure_name = DartProcedureName(procedure); | 1210 const dart::String& procedure_name = DartProcedureName(procedure); |
| 1212 | 1211 |
| 1213 // The parent is either a library or a class (in which case the procedure is a | 1212 // The parent is either a library or a class (in which case the procedure is a |
| 1214 // static method). | 1213 // static method). |
| 1215 TreeNode* parent = procedure->parent(); | 1214 TreeNode* parent = procedure->parent(); |
| 1216 if (parent->IsClass()) { | 1215 if (parent->IsClass()) { |
| 1217 dart::Class& klass = | 1216 dart::Class& klass = dart::Class::Handle( |
| 1218 dart::Class::Handle(Z, LookupClassByKernelClass(Class::Cast(parent))); | 1217 Z, LookupClassByKernelClass(Class::Cast(parent)->canonical_name())); |
| 1219 dart::RawFunction* raw_function = | 1218 dart::RawFunction* raw_function = |
| 1220 klass.LookupFunctionAllowPrivate(procedure_name); | 1219 klass.LookupFunctionAllowPrivate(procedure_name); |
| 1221 ASSERT(raw_function != Object::null()); | 1220 ASSERT(raw_function != Object::null()); |
| 1222 | 1221 |
| 1223 // TODO(27590): We can probably get rid of this after no longer using | 1222 // TODO(27590): We can probably get rid of this after no longer using |
| 1224 // core libraries from the source. | 1223 // core libraries from the source. |
| 1225 dart::Function& function = dart::Function::ZoneHandle(Z, raw_function); | 1224 dart::Function& function = dart::Function::ZoneHandle(Z, raw_function); |
| 1226 if (function.IsRedirectingFactory()) { | 1225 if (function.IsRedirectingFactory()) { |
| 1227 ClassFinalizer::ResolveRedirectingFactory(klass, function); | 1226 ClassFinalizer::ResolveRedirectingFactory(klass, function); |
| 1228 function = function.RedirectionTarget(); | 1227 function = function.RedirectionTarget(); |
| 1229 } | 1228 } |
| 1230 return function.raw(); | 1229 return function.raw(); |
| 1231 } else { | 1230 } else { |
| 1232 ASSERT(parent->IsLibrary()); | 1231 ASSERT(parent->IsLibrary()); |
| 1233 dart::Library& library = dart::Library::Handle( | 1232 dart::Library& library = dart::Library::Handle( |
| 1234 Z, LookupLibraryByKernelLibrary(Library::Cast(parent))); | 1233 Z, |
| 1234 LookupLibraryByKernelLibrary(Library::Cast(parent)->canonical_name())); |
| 1235 dart::RawFunction* function = | 1235 dart::RawFunction* function = |
| 1236 library.LookupFunctionAllowPrivate(procedure_name); | 1236 library.LookupFunctionAllowPrivate(procedure_name); |
| 1237 ASSERT(function != Object::null()); | 1237 ASSERT(function != Object::null()); |
| 1238 return function; | 1238 return function; |
| 1239 } | 1239 } |
| 1240 } | 1240 } |
| 1241 | 1241 |
| 1242 | 1242 |
| 1243 dart::RawFunction* TranslationHelper::LookupConstructorByKernelConstructor( | 1243 dart::RawFunction* TranslationHelper::LookupConstructorByKernelConstructor( |
| 1244 Constructor* constructor) { | 1244 Constructor* constructor) { |
| 1245 Class* kernel_klass = Class::Cast(constructor->parent()); | 1245 Class* kernel_klass = Class::Cast(constructor->parent()); |
| 1246 dart::Class& klass = | 1246 dart::Class& klass = dart::Class::Handle( |
| 1247 dart::Class::Handle(Z, LookupClassByKernelClass(kernel_klass)); | 1247 Z, LookupClassByKernelClass(kernel_klass->canonical_name())); |
| 1248 return LookupConstructorByKernelConstructor(klass, constructor); | 1248 return LookupConstructorByKernelConstructor(klass, constructor); |
| 1249 } | 1249 } |
| 1250 | 1250 |
| 1251 | 1251 |
| 1252 dart::RawFunction* TranslationHelper::LookupConstructorByKernelConstructor( | 1252 dart::RawFunction* TranslationHelper::LookupConstructorByKernelConstructor( |
| 1253 const dart::Class& owner, | 1253 const dart::Class& owner, |
| 1254 Constructor* constructor) { | 1254 Constructor* constructor) { |
| 1255 dart::RawFunction* function = | 1255 dart::RawFunction* function = |
| 1256 owner.LookupConstructorAllowPrivate(DartConstructorName(constructor)); | 1256 owner.LookupConstructorAllowPrivate(DartConstructorName(constructor)); |
| 1257 ASSERT(function != Object::null()); | 1257 ASSERT(function != Object::null()); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1297 | 1297 |
| 1298 va_list args; | 1298 va_list args; |
| 1299 va_start(args, format); | 1299 va_start(args, format); |
| 1300 Report::LongJumpV(prev_error, null_script, TokenPosition::kNoSource, format, | 1300 Report::LongJumpV(prev_error, null_script, TokenPosition::kNoSource, format, |
| 1301 args); | 1301 args); |
| 1302 va_end(args); | 1302 va_end(args); |
| 1303 UNREACHABLE(); | 1303 UNREACHABLE(); |
| 1304 } | 1304 } |
| 1305 | 1305 |
| 1306 | 1306 |
| 1307 dart::String& TranslationHelper::ManglePrivateName(Library* kernel_library, | 1307 dart::String& TranslationHelper::ManglePrivateName( |
| 1308 dart::String* name_to_modify, | 1308 CanonicalName* kernel_library, |
| 1309 bool symbolize) { | 1309 dart::String* name_to_modify, |
| 1310 bool symbolize) { |
| 1310 if (name_to_modify->Length() >= 1 && name_to_modify->CharAt(0) == '_') { | 1311 if (name_to_modify->Length() >= 1 && name_to_modify->CharAt(0) == '_') { |
| 1311 const dart::Library& library = | 1312 const dart::Library& library = |
| 1312 dart::Library::Handle(Z, LookupLibraryByKernelLibrary(kernel_library)); | 1313 dart::Library::Handle(Z, LookupLibraryByKernelLibrary(kernel_library)); |
| 1313 *name_to_modify = library.PrivateName(*name_to_modify); | 1314 *name_to_modify = library.PrivateName(*name_to_modify); |
| 1314 } else if (symbolize) { | 1315 } else if (symbolize) { |
| 1315 *name_to_modify = Symbols::New(thread_, *name_to_modify); | 1316 *name_to_modify = Symbols::New(thread_, *name_to_modify); |
| 1316 } | 1317 } |
| 1317 return *name_to_modify; | 1318 return *name_to_modify; |
| 1318 } | 1319 } |
| 1319 | 1320 |
| (...skipping 1510 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2830 // though the function will result in an exception). | 2831 // though the function will result in an exception). |
| 2831 | 2832 |
| 2832 return instructions; | 2833 return instructions; |
| 2833 } | 2834 } |
| 2834 | 2835 |
| 2835 | 2836 |
| 2836 dart::RawFunction* FlowGraphBuilder::LookupMethodByMember( | 2837 dart::RawFunction* FlowGraphBuilder::LookupMethodByMember( |
| 2837 Member* target, | 2838 Member* target, |
| 2838 const dart::String& method_name) { | 2839 const dart::String& method_name) { |
| 2839 Class* kernel_klass = Class::Cast(target->parent()); | 2840 Class* kernel_klass = Class::Cast(target->parent()); |
| 2840 dart::Class& klass = | 2841 dart::Class& klass = dart::Class::Handle( |
| 2841 dart::Class::Handle(Z, H.LookupClassByKernelClass(kernel_klass)); | 2842 Z, H.LookupClassByKernelClass(kernel_klass->canonical_name())); |
| 2842 | 2843 |
| 2843 dart::RawFunction* function = klass.LookupFunctionAllowPrivate(method_name); | 2844 dart::RawFunction* function = klass.LookupFunctionAllowPrivate(method_name); |
| 2844 ASSERT(function != Object::null()); | 2845 ASSERT(function != Object::null()); |
| 2845 return function; | 2846 return function; |
| 2846 } | 2847 } |
| 2847 | 2848 |
| 2848 | 2849 |
| 2849 LocalVariable* FlowGraphBuilder::MakeTemporary() { | 2850 LocalVariable* FlowGraphBuilder::MakeTemporary() { |
| 2850 char name[64]; | 2851 char name[64]; |
| 2851 intptr_t index = stack_->definition()->temp_index(); | 2852 intptr_t index = stack_->definition()->temp_index(); |
| (...skipping 1610 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4462 | 4463 |
| 4463 | 4464 |
| 4464 void DartTypeTranslator::VisitInterfaceType(InterfaceType* node) { | 4465 void DartTypeTranslator::VisitInterfaceType(InterfaceType* node) { |
| 4465 // NOTE: That an interface type like `T<A, B>` is considered to be | 4466 // NOTE: That an interface type like `T<A, B>` is considered to be |
| 4466 // malformed iff `T` is malformed. | 4467 // malformed iff `T` is malformed. |
| 4467 // => We therefore ignore errors in `A` or `B`. | 4468 // => We therefore ignore errors in `A` or `B`. |
| 4468 const TypeArguments& type_arguments = TranslateTypeArguments( | 4469 const TypeArguments& type_arguments = TranslateTypeArguments( |
| 4469 node->type_arguments().raw_array(), node->type_arguments().length()); | 4470 node->type_arguments().raw_array(), node->type_arguments().length()); |
| 4470 | 4471 |
| 4471 | 4472 |
| 4472 dart::Object& klass = | 4473 dart::Object& klass = dart::Object::Handle( |
| 4473 dart::Object::Handle(Z, H.LookupClassByKernelClass(node->klass())); | 4474 Z, H.LookupClassByKernelClass(node->class_reference())); |
| 4474 result_ = Type::New(klass, type_arguments, TokenPosition::kNoSource); | 4475 result_ = Type::New(klass, type_arguments, TokenPosition::kNoSource); |
| 4475 if (finalize_) { | 4476 if (finalize_) { |
| 4476 ASSERT(active_class_->klass != NULL); | 4477 ASSERT(active_class_->klass != NULL); |
| 4477 result_ = ClassFinalizer::FinalizeType(*active_class_->klass, result_); | 4478 result_ = ClassFinalizer::FinalizeType(*active_class_->klass, result_); |
| 4478 } | 4479 } |
| 4479 } | 4480 } |
| 4480 | 4481 |
| 4481 | 4482 |
| 4482 void DartTypeTranslator::VisitDynamicType(DynamicType* node) { | 4483 void DartTypeTranslator::VisitDynamicType(DynamicType* node) { |
| 4483 result_ = Object::dynamic_type().raw(); | 4484 result_ = Object::dynamic_type().raw(); |
| (...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4901 | 4902 |
| 4902 void FlowGraphBuilder::VisitConstructorInvocation(ConstructorInvocation* node) { | 4903 void FlowGraphBuilder::VisitConstructorInvocation(ConstructorInvocation* node) { |
| 4903 if (node->is_const()) { | 4904 if (node->is_const()) { |
| 4904 fragment_ = | 4905 fragment_ = |
| 4905 Constant(constant_evaluator_.EvaluateConstructorInvocation(node)); | 4906 Constant(constant_evaluator_.EvaluateConstructorInvocation(node)); |
| 4906 return; | 4907 return; |
| 4907 } | 4908 } |
| 4908 | 4909 |
| 4909 Class* kernel_class = Class::Cast(node->target()->parent()); | 4910 Class* kernel_class = Class::Cast(node->target()->parent()); |
| 4910 | 4911 |
| 4911 dart::Class& klass = | 4912 dart::Class& klass = dart::Class::ZoneHandle( |
| 4912 dart::Class::ZoneHandle(Z, H.LookupClassByKernelClass(kernel_class)); | 4913 Z, H.LookupClassByKernelClass(kernel_class->canonical_name())); |
| 4913 | 4914 |
| 4914 Fragment instructions; | 4915 Fragment instructions; |
| 4915 | 4916 |
| 4916 // Check for malbounded-ness of type. | 4917 // Check for malbounded-ness of type. |
| 4917 if (I->type_checks()) { | 4918 if (I->type_checks()) { |
| 4918 List<DartType>& kernel_type_arguments = node->arguments()->types(); | 4919 List<DartType>& kernel_type_arguments = node->arguments()->types(); |
| 4919 const TypeArguments& type_arguments = T.TranslateInstantiatedTypeArguments( | 4920 const TypeArguments& type_arguments = T.TranslateInstantiatedTypeArguments( |
| 4920 klass, kernel_type_arguments.raw_array(), | 4921 klass, kernel_type_arguments.raw_array(), |
| 4921 kernel_type_arguments.length()); | 4922 kernel_type_arguments.length()); |
| 4922 | 4923 |
| (...skipping 1517 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6440 thread->clear_sticky_error(); | 6441 thread->clear_sticky_error(); |
| 6441 return error.raw(); | 6442 return error.raw(); |
| 6442 } | 6443 } |
| 6443 } | 6444 } |
| 6444 | 6445 |
| 6445 | 6446 |
| 6446 } // namespace kernel | 6447 } // namespace kernel |
| 6447 } // namespace dart | 6448 } // namespace dart |
| 6448 | 6449 |
| 6449 #endif // !defined(DART_PRECOMPILED_RUNTIME) | 6450 #endif // !defined(DART_PRECOMPILED_RUNTIME) |
| OLD | NEW |