| 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 "vm/kernel.h" | 5 #include "vm/kernel.h" |
| 6 | 6 |
| 7 #if !defined(DART_PRECOMPILED_RUNTIME) | 7 #if !defined(DART_PRECOMPILED_RUNTIME) |
| 8 namespace dart { | 8 namespace dart { |
| 9 | 9 |
| 10 namespace kernel { | 10 namespace kernel { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 delete children_[i]; | 26 delete children_[i]; |
| 27 } | 27 } |
| 28 } | 28 } |
| 29 | 29 |
| 30 | 30 |
| 31 CanonicalName* CanonicalName::NewRoot() { | 31 CanonicalName* CanonicalName::NewRoot() { |
| 32 return new CanonicalName(); | 32 return new CanonicalName(); |
| 33 } | 33 } |
| 34 | 34 |
| 35 | 35 |
| 36 void CanonicalName::BindTo(LinkedNode* new_target) { | |
| 37 ASSERT(new_target != NULL); | |
| 38 if (definition_ == new_target) return; | |
| 39 ASSERT(definition_ == NULL); | |
| 40 ASSERT(new_target->canonical_name_ == NULL); | |
| 41 definition_ = new_target; | |
| 42 new_target->canonical_name_ = this; | |
| 43 } | |
| 44 | |
| 45 | |
| 46 void CanonicalName::Unbind() { | |
| 47 if (definition_ == NULL) return; | |
| 48 ASSERT(definition_->canonical_name_ == this); | |
| 49 definition_->canonical_name_ = NULL; | |
| 50 definition_ = NULL; | |
| 51 } | |
| 52 | |
| 53 | |
| 54 CanonicalName* CanonicalName::AddChild(String* name) { | 36 CanonicalName* CanonicalName::AddChild(String* name) { |
| 55 CanonicalName* child = new CanonicalName(); | 37 CanonicalName* child = new CanonicalName(); |
| 56 child->parent_ = this; | 38 child->parent_ = this; |
| 57 child->name_ = name; | 39 child->name_ = name; |
| 58 children_.Add(child); | 40 children_.Add(child); |
| 59 return child; | 41 return child; |
| 60 } | 42 } |
| 61 | 43 |
| 62 | 44 |
| 63 Library* CanonicalName::AsLibrary() { | 45 bool CanonicalName::IsAdministrative() { |
| 64 return Library::Cast(definition()); | 46 // Administrative names start with '@'. |
| 47 return (name()->size() > 0) && (name()->buffer()[0] == '@'); |
| 65 } | 48 } |
| 66 | 49 |
| 67 | 50 |
| 68 Class* CanonicalName::AsClass() { | 51 bool CanonicalName::IsPrivate() { |
| 69 return Class::Cast(definition()); | 52 // Private names start with '_'. |
| 53 return (name()->size() > 0) && (name()->buffer()[0] == '_'); |
| 70 } | 54 } |
| 71 | 55 |
| 72 | 56 |
| 73 Member* CanonicalName::AsMember() { | 57 bool CanonicalName::IsRoot() { |
| 74 return Member::Cast(definition()); | 58 // The root is the only canonical name with no parent. |
| 59 return parent() == NULL; |
| 75 } | 60 } |
| 76 | 61 |
| 77 | 62 |
| 78 Field* CanonicalName::AsField() { | 63 bool CanonicalName::IsLibrary() { |
| 79 return Field::Cast(definition()); | 64 // Libraries are the only canonical names with the root as their parent. |
| 65 return !IsRoot() && parent()->IsRoot(); |
| 80 } | 66 } |
| 81 | 67 |
| 82 | 68 |
| 83 Constructor* CanonicalName::AsConstructor() { | 69 bool CanonicalName::IsClass() { |
| 84 return Constructor::Cast(definition()); | 70 // Classes have the library as their parent and are not an administrative |
| 71 // name starting with @. |
| 72 return !IsAdministrative() && !IsRoot() && parent()->IsLibrary(); |
| 85 } | 73 } |
| 86 | 74 |
| 87 | 75 |
| 88 Procedure* CanonicalName::AsProcedure() { | 76 bool CanonicalName::IsMember() { |
| 89 return Procedure::Cast(definition()); | 77 return IsConstructor() || IsField() || IsProcedure(); |
| 90 } | 78 } |
| 91 | 79 |
| 92 | 80 |
| 81 // Note the two occurrences of the parameter 'literal'. |
| 82 #define COMPARE_NAME(canonical_name, literal) \ |
| 83 memcmp((canonical_name)->name()->buffer(), (literal), strlen(literal)) == 0 |
| 84 |
| 85 bool CanonicalName::IsField() { |
| 86 // Fields with private names have the import URI of the library where they are |
| 87 // visible as the parent and the string "@fields" as the parent's parent. |
| 88 // Fields with non-private names have the string "@fields' as the parent. |
| 89 if (IsRoot()) { |
| 90 return false; |
| 91 } |
| 92 CanonicalName* kind = this->parent(); |
| 93 if (IsPrivate()) { |
| 94 kind = kind->parent(); |
| 95 } |
| 96 return COMPARE_NAME(kind, "@fields"); |
| 97 } |
| 98 |
| 99 |
| 100 bool CanonicalName::IsConstructor() { |
| 101 // Constructors with private names have the import URI of the library where |
| 102 // they are visible as the parent and the string "@constructors" as the |
| 103 // parent's parent. Constructors with non-private names have the string |
| 104 // "@constructors" as the parent. |
| 105 if (IsRoot()) { |
| 106 return false; |
| 107 } |
| 108 CanonicalName* kind = this->parent(); |
| 109 if (IsPrivate()) { |
| 110 kind = kind->parent(); |
| 111 } |
| 112 return COMPARE_NAME(kind, "@constructors"); |
| 113 } |
| 114 |
| 115 |
| 116 bool CanonicalName::IsProcedure() { |
| 117 return IsMethod() || IsGetter() || IsSetter() || IsFactory(); |
| 118 } |
| 119 |
| 120 |
| 121 bool CanonicalName::IsMethod() { |
| 122 // Methods with private names have the import URI of the library where they |
| 123 // are visible as the parent and the string "@methods" as the parent's parent. |
| 124 // Methods with non-private names have the string "@methods" as the parent. |
| 125 if (IsRoot()) { |
| 126 return false; |
| 127 } |
| 128 CanonicalName* kind = this->parent(); |
| 129 if (IsPrivate()) { |
| 130 kind = kind->parent(); |
| 131 } |
| 132 return COMPARE_NAME(kind, "@methods"); |
| 133 } |
| 134 |
| 135 |
| 136 bool CanonicalName::IsGetter() { |
| 137 // Getters with private names have the import URI of the library where they |
| 138 // are visible as the parent and the string "@getters" as the parent's parent. |
| 139 // Getters with non-private names have the string "@getters" as the parent. |
| 140 if (IsRoot()) { |
| 141 return false; |
| 142 } |
| 143 CanonicalName* kind = this->parent(); |
| 144 if (IsPrivate()) { |
| 145 kind = kind->parent(); |
| 146 } |
| 147 return COMPARE_NAME(kind, "@getters"); |
| 148 } |
| 149 |
| 150 |
| 151 bool CanonicalName::IsSetter() { |
| 152 // Setters with private names have the import URI of the library where they |
| 153 // are visible as the parent and the string "@setters" as the parent's parent. |
| 154 // Setters with non-private names have the string "@setters" as the parent. |
| 155 if (IsRoot()) { |
| 156 return false; |
| 157 } |
| 158 CanonicalName* kind = this->parent(); |
| 159 if (IsPrivate()) { |
| 160 kind = kind->parent(); |
| 161 } |
| 162 return COMPARE_NAME(kind, "@setters"); |
| 163 } |
| 164 |
| 165 |
| 166 bool CanonicalName::IsFactory() { |
| 167 // Factories with private names have the import URI of the library where they |
| 168 // are visible as the parent and the string "@factories" as the parent's |
| 169 // parent. Factories with non-private names have the string "@factories" as |
| 170 // the parent. |
| 171 if (IsRoot()) { |
| 172 return false; |
| 173 } |
| 174 CanonicalName* kind = this->parent(); |
| 175 if (IsPrivate()) { |
| 176 kind = kind->parent(); |
| 177 } |
| 178 return COMPARE_NAME(kind, "@factories"); |
| 179 } |
| 180 |
| 181 #undef COMPARE_NAME |
| 182 |
| 183 |
| 184 CanonicalName* CanonicalName::EnclosingName() { |
| 185 ASSERT(IsField() || IsConstructor() || IsProcedure()); |
| 186 CanonicalName* enclosing = parent()->parent(); |
| 187 if (IsPrivate()) { |
| 188 enclosing = enclosing->parent(); |
| 189 } |
| 190 ASSERT(enclosing->IsLibrary() || enclosing->IsClass()); |
| 191 return enclosing; |
| 192 } |
| 193 |
| 194 |
| 93 Node::~Node() {} | 195 Node::~Node() {} |
| 94 | 196 |
| 95 | 197 |
| 96 TreeNode::~TreeNode() {} | 198 TreeNode::~TreeNode() {} |
| 97 | 199 |
| 98 | 200 |
| 99 void TreeNode::AcceptVisitor(Visitor* visitor) { | 201 void TreeNode::AcceptVisitor(Visitor* visitor) { |
| 100 AcceptTreeVisitor(visitor); | 202 AcceptTreeVisitor(visitor); |
| 101 } | 203 } |
| 102 | 204 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 128 | 230 |
| 129 | 231 |
| 130 NormalClass::~NormalClass() {} | 232 NormalClass::~NormalClass() {} |
| 131 | 233 |
| 132 | 234 |
| 133 void NormalClass::AcceptClassVisitor(ClassVisitor* visitor) { | 235 void NormalClass::AcceptClassVisitor(ClassVisitor* visitor) { |
| 134 visitor->VisitNormalClass(this); | 236 visitor->VisitNormalClass(this); |
| 135 } | 237 } |
| 136 | 238 |
| 137 | 239 |
| 138 void NormalClass::AcceptReferenceVisitor(ClassReferenceVisitor* visitor) { | |
| 139 visitor->VisitNormalClassReference(this); | |
| 140 } | |
| 141 | |
| 142 | |
| 143 void NormalClass::VisitChildren(Visitor* visitor) { | 240 void NormalClass::VisitChildren(Visitor* visitor) { |
| 144 VisitList(&type_parameters(), visitor); | 241 VisitList(&type_parameters(), visitor); |
| 145 if (super_class() != NULL) visitor->VisitInterfaceType(super_class()); | 242 if (super_class() != NULL) visitor->VisitInterfaceType(super_class()); |
| 146 VisitList(&implemented_classes(), visitor); | 243 VisitList(&implemented_classes(), visitor); |
| 147 VisitList(&constructors(), visitor); | 244 VisitList(&constructors(), visitor); |
| 148 VisitList(&procedures(), visitor); | 245 VisitList(&procedures(), visitor); |
| 149 VisitList(&fields(), visitor); | 246 VisitList(&fields(), visitor); |
| 150 } | 247 } |
| 151 | 248 |
| 152 | 249 |
| 153 MixinClass::~MixinClass() {} | 250 MixinClass::~MixinClass() {} |
| 154 | 251 |
| 155 | 252 |
| 156 void MixinClass::AcceptClassVisitor(ClassVisitor* visitor) { | 253 void MixinClass::AcceptClassVisitor(ClassVisitor* visitor) { |
| 157 visitor->VisitMixinClass(this); | 254 visitor->VisitMixinClass(this); |
| 158 } | 255 } |
| 159 | 256 |
| 160 | 257 |
| 161 void MixinClass::AcceptReferenceVisitor(ClassReferenceVisitor* visitor) { | |
| 162 visitor->VisitMixinClassReference(this); | |
| 163 } | |
| 164 | |
| 165 | |
| 166 void MixinClass::VisitChildren(Visitor* visitor) { | 258 void MixinClass::VisitChildren(Visitor* visitor) { |
| 167 VisitList(&type_parameters(), visitor); | 259 VisitList(&type_parameters(), visitor); |
| 168 visitor->VisitInterfaceType(first()); | 260 visitor->VisitInterfaceType(first()); |
| 169 visitor->VisitInterfaceType(second()); | 261 visitor->VisitInterfaceType(second()); |
| 170 VisitList(&implemented_classes(), visitor); | 262 VisitList(&implemented_classes(), visitor); |
| 171 VisitList(&constructors(), visitor); | 263 VisitList(&constructors(), visitor); |
| 172 } | 264 } |
| 173 | 265 |
| 174 | 266 |
| 175 Member::~Member() {} | 267 Member::~Member() {} |
| 176 | 268 |
| 177 | 269 |
| 178 void Member::AcceptTreeVisitor(TreeVisitor* visitor) { | 270 void Member::AcceptTreeVisitor(TreeVisitor* visitor) { |
| 179 AcceptMemberVisitor(visitor); | 271 AcceptMemberVisitor(visitor); |
| 180 } | 272 } |
| 181 | 273 |
| 182 | 274 |
| 183 Field::~Field() {} | 275 Field::~Field() {} |
| 184 | 276 |
| 185 | 277 |
| 186 void Field::AcceptMemberVisitor(MemberVisitor* visitor) { | 278 void Field::AcceptMemberVisitor(MemberVisitor* visitor) { |
| 187 visitor->VisitField(this); | 279 visitor->VisitField(this); |
| 188 } | 280 } |
| 189 | 281 |
| 190 | 282 |
| 191 void Field::AcceptReferenceVisitor(MemberReferenceVisitor* visitor) { | |
| 192 visitor->VisitFieldReference(this); | |
| 193 } | |
| 194 | |
| 195 | |
| 196 void Field::VisitChildren(Visitor* visitor) { | 283 void Field::VisitChildren(Visitor* visitor) { |
| 197 type()->AcceptDartTypeVisitor(visitor); | 284 type()->AcceptDartTypeVisitor(visitor); |
| 198 visitor->VisitName(name()); | 285 visitor->VisitName(name()); |
| 199 if (initializer() != NULL) initializer()->AcceptExpressionVisitor(visitor); | 286 if (initializer() != NULL) initializer()->AcceptExpressionVisitor(visitor); |
| 200 } | 287 } |
| 201 | 288 |
| 202 | 289 |
| 203 Constructor::~Constructor() {} | 290 Constructor::~Constructor() {} |
| 204 | 291 |
| 205 | 292 |
| 206 void Constructor::AcceptMemberVisitor(MemberVisitor* visitor) { | 293 void Constructor::AcceptMemberVisitor(MemberVisitor* visitor) { |
| 207 visitor->VisitConstructor(this); | 294 visitor->VisitConstructor(this); |
| 208 } | 295 } |
| 209 | 296 |
| 210 | 297 |
| 211 void Constructor::AcceptReferenceVisitor(MemberReferenceVisitor* visitor) { | |
| 212 visitor->VisitConstructorReference(this); | |
| 213 } | |
| 214 | |
| 215 | |
| 216 void Constructor::VisitChildren(Visitor* visitor) { | 298 void Constructor::VisitChildren(Visitor* visitor) { |
| 217 visitor->VisitName(name()); | 299 visitor->VisitName(name()); |
| 218 visitor->VisitFunctionNode(function()); | 300 visitor->VisitFunctionNode(function()); |
| 219 VisitList(&initializers(), visitor); | 301 VisitList(&initializers(), visitor); |
| 220 } | 302 } |
| 221 | 303 |
| 222 | 304 |
| 223 Procedure::~Procedure() {} | 305 Procedure::~Procedure() {} |
| 224 | 306 |
| 225 | 307 |
| 226 void Procedure::AcceptMemberVisitor(MemberVisitor* visitor) { | 308 void Procedure::AcceptMemberVisitor(MemberVisitor* visitor) { |
| 227 visitor->VisitProcedure(this); | 309 visitor->VisitProcedure(this); |
| 228 } | 310 } |
| 229 | 311 |
| 230 | 312 |
| 231 void Procedure::AcceptReferenceVisitor(MemberReferenceVisitor* visitor) { | |
| 232 visitor->VisitProcedureReference(this); | |
| 233 } | |
| 234 | |
| 235 | |
| 236 void Procedure::VisitChildren(Visitor* visitor) { | 313 void Procedure::VisitChildren(Visitor* visitor) { |
| 237 visitor->VisitName(name()); | 314 visitor->VisitName(name()); |
| 238 if (function() != NULL) visitor->VisitFunctionNode(function()); | 315 if (function() != NULL) visitor->VisitFunctionNode(function()); |
| 239 } | 316 } |
| 240 | 317 |
| 241 | 318 |
| 242 Initializer::~Initializer() {} | 319 Initializer::~Initializer() {} |
| 243 | 320 |
| 244 | 321 |
| 245 void Initializer::AcceptTreeVisitor(TreeVisitor* visitor) { | 322 void Initializer::AcceptTreeVisitor(TreeVisitor* visitor) { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 260 | 337 |
| 261 FieldInitializer::~FieldInitializer() {} | 338 FieldInitializer::~FieldInitializer() {} |
| 262 | 339 |
| 263 | 340 |
| 264 void FieldInitializer::AcceptInitializerVisitor(InitializerVisitor* visitor) { | 341 void FieldInitializer::AcceptInitializerVisitor(InitializerVisitor* visitor) { |
| 265 visitor->VisitFieldInitializer(this); | 342 visitor->VisitFieldInitializer(this); |
| 266 } | 343 } |
| 267 | 344 |
| 268 | 345 |
| 269 void FieldInitializer::VisitChildren(Visitor* visitor) { | 346 void FieldInitializer::VisitChildren(Visitor* visitor) { |
| 270 visitor->VisitFieldReference(field()); | |
| 271 value()->AcceptExpressionVisitor(visitor); | 347 value()->AcceptExpressionVisitor(visitor); |
| 272 } | 348 } |
| 273 | 349 |
| 274 | 350 |
| 275 SuperInitializer::~SuperInitializer() {} | 351 SuperInitializer::~SuperInitializer() {} |
| 276 | 352 |
| 277 | 353 |
| 278 void SuperInitializer::AcceptInitializerVisitor(InitializerVisitor* visitor) { | 354 void SuperInitializer::AcceptInitializerVisitor(InitializerVisitor* visitor) { |
| 279 visitor->VisitSuperInitializer(this); | 355 visitor->VisitSuperInitializer(this); |
| 280 } | 356 } |
| 281 | 357 |
| 282 | 358 |
| 283 void SuperInitializer::VisitChildren(Visitor* visitor) { | 359 void SuperInitializer::VisitChildren(Visitor* visitor) { |
| 284 visitor->VisitConstructorReference(target()); | |
| 285 visitor->VisitArguments(arguments()); | 360 visitor->VisitArguments(arguments()); |
| 286 } | 361 } |
| 287 | 362 |
| 288 | 363 |
| 289 RedirectingInitializer::~RedirectingInitializer() {} | 364 RedirectingInitializer::~RedirectingInitializer() {} |
| 290 | 365 |
| 291 | 366 |
| 292 void RedirectingInitializer::AcceptInitializerVisitor( | 367 void RedirectingInitializer::AcceptInitializerVisitor( |
| 293 InitializerVisitor* visitor) { | 368 InitializerVisitor* visitor) { |
| 294 visitor->VisitRedirectingInitializer(this); | 369 visitor->VisitRedirectingInitializer(this); |
| 295 } | 370 } |
| 296 | 371 |
| 297 | 372 |
| 298 void RedirectingInitializer::VisitChildren(Visitor* visitor) { | 373 void RedirectingInitializer::VisitChildren(Visitor* visitor) { |
| 299 visitor->VisitConstructorReference(target()); | |
| 300 visitor->VisitArguments(arguments()); | 374 visitor->VisitArguments(arguments()); |
| 301 } | 375 } |
| 302 | 376 |
| 303 | 377 |
| 304 LocalInitializer::~LocalInitializer() {} | 378 LocalInitializer::~LocalInitializer() {} |
| 305 | 379 |
| 306 | 380 |
| 307 void LocalInitializer::AcceptInitializerVisitor(InitializerVisitor* visitor) { | 381 void LocalInitializer::AcceptInitializerVisitor(InitializerVisitor* visitor) { |
| 308 visitor->VisitLocalInitializer(this); | 382 visitor->VisitLocalInitializer(this); |
| 309 } | 383 } |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 406 DirectPropertyGet::~DirectPropertyGet() {} | 480 DirectPropertyGet::~DirectPropertyGet() {} |
| 407 | 481 |
| 408 | 482 |
| 409 void DirectPropertyGet::AcceptExpressionVisitor(ExpressionVisitor* visitor) { | 483 void DirectPropertyGet::AcceptExpressionVisitor(ExpressionVisitor* visitor) { |
| 410 visitor->VisitDirectPropertyGet(this); | 484 visitor->VisitDirectPropertyGet(this); |
| 411 } | 485 } |
| 412 | 486 |
| 413 | 487 |
| 414 void DirectPropertyGet::VisitChildren(Visitor* visitor) { | 488 void DirectPropertyGet::VisitChildren(Visitor* visitor) { |
| 415 receiver()->AcceptExpressionVisitor(visitor); | 489 receiver()->AcceptExpressionVisitor(visitor); |
| 416 target()->AcceptReferenceVisitor(visitor); | |
| 417 } | 490 } |
| 418 | 491 |
| 419 | 492 |
| 420 DirectPropertySet::~DirectPropertySet() {} | 493 DirectPropertySet::~DirectPropertySet() {} |
| 421 | 494 |
| 422 | 495 |
| 423 void DirectPropertySet::AcceptExpressionVisitor(ExpressionVisitor* visitor) { | 496 void DirectPropertySet::AcceptExpressionVisitor(ExpressionVisitor* visitor) { |
| 424 visitor->VisitDirectPropertySet(this); | 497 visitor->VisitDirectPropertySet(this); |
| 425 } | 498 } |
| 426 | 499 |
| 427 | 500 |
| 428 void DirectPropertySet::VisitChildren(Visitor* visitor) { | 501 void DirectPropertySet::VisitChildren(Visitor* visitor) { |
| 429 receiver()->AcceptExpressionVisitor(visitor); | 502 receiver()->AcceptExpressionVisitor(visitor); |
| 430 target()->AcceptReferenceVisitor(visitor); | |
| 431 value()->AcceptExpressionVisitor(visitor); | 503 value()->AcceptExpressionVisitor(visitor); |
| 432 } | 504 } |
| 433 | 505 |
| 434 | 506 |
| 435 StaticGet::~StaticGet() {} | 507 StaticGet::~StaticGet() {} |
| 436 | 508 |
| 437 | 509 |
| 438 void StaticGet::AcceptExpressionVisitor(ExpressionVisitor* visitor) { | 510 void StaticGet::AcceptExpressionVisitor(ExpressionVisitor* visitor) { |
| 439 visitor->VisitStaticGet(this); | 511 visitor->VisitStaticGet(this); |
| 440 } | 512 } |
| 441 | 513 |
| 442 | 514 |
| 443 void StaticGet::VisitChildren(Visitor* visitor) { | 515 void StaticGet::VisitChildren(Visitor* visitor) {} |
| 444 target()->AcceptReferenceVisitor(visitor); | |
| 445 } | |
| 446 | 516 |
| 447 | 517 |
| 448 StaticSet::~StaticSet() {} | 518 StaticSet::~StaticSet() {} |
| 449 | 519 |
| 450 | 520 |
| 451 void StaticSet::AcceptExpressionVisitor(ExpressionVisitor* visitor) { | 521 void StaticSet::AcceptExpressionVisitor(ExpressionVisitor* visitor) { |
| 452 visitor->VisitStaticSet(this); | 522 visitor->VisitStaticSet(this); |
| 453 } | 523 } |
| 454 | 524 |
| 455 | 525 |
| 456 void StaticSet::VisitChildren(Visitor* visitor) { | 526 void StaticSet::VisitChildren(Visitor* visitor) { |
| 457 target()->AcceptReferenceVisitor(visitor); | |
| 458 expression()->AcceptExpressionVisitor(visitor); | 527 expression()->AcceptExpressionVisitor(visitor); |
| 459 } | 528 } |
| 460 | 529 |
| 461 | 530 |
| 462 Arguments::~Arguments() {} | 531 Arguments::~Arguments() {} |
| 463 | 532 |
| 464 | 533 |
| 465 void Arguments::AcceptTreeVisitor(TreeVisitor* visitor) { | 534 void Arguments::AcceptTreeVisitor(TreeVisitor* visitor) { |
| 466 visitor->VisitArguments(this); | 535 visitor->VisitArguments(this); |
| 467 } | 536 } |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 506 | 575 |
| 507 | 576 |
| 508 void DirectMethodInvocation::AcceptExpressionVisitor( | 577 void DirectMethodInvocation::AcceptExpressionVisitor( |
| 509 ExpressionVisitor* visitor) { | 578 ExpressionVisitor* visitor) { |
| 510 visitor->VisitDirectMethodInvocation(this); | 579 visitor->VisitDirectMethodInvocation(this); |
| 511 } | 580 } |
| 512 | 581 |
| 513 | 582 |
| 514 void DirectMethodInvocation::VisitChildren(Visitor* visitor) { | 583 void DirectMethodInvocation::VisitChildren(Visitor* visitor) { |
| 515 receiver()->AcceptExpressionVisitor(visitor); | 584 receiver()->AcceptExpressionVisitor(visitor); |
| 516 visitor->VisitProcedureReference(target()); | |
| 517 visitor->VisitArguments(arguments()); | 585 visitor->VisitArguments(arguments()); |
| 518 } | 586 } |
| 519 | 587 |
| 520 | 588 |
| 521 StaticInvocation::~StaticInvocation() {} | 589 StaticInvocation::~StaticInvocation() {} |
| 522 | 590 |
| 523 | 591 |
| 524 void StaticInvocation::AcceptExpressionVisitor(ExpressionVisitor* visitor) { | 592 void StaticInvocation::AcceptExpressionVisitor(ExpressionVisitor* visitor) { |
| 525 visitor->VisitStaticInvocation(this); | 593 visitor->VisitStaticInvocation(this); |
| 526 } | 594 } |
| 527 | 595 |
| 528 | 596 |
| 529 void StaticInvocation::VisitChildren(Visitor* visitor) { | 597 void StaticInvocation::VisitChildren(Visitor* visitor) { |
| 530 visitor->VisitProcedureReference(procedure()); | |
| 531 visitor->VisitArguments(arguments()); | 598 visitor->VisitArguments(arguments()); |
| 532 } | 599 } |
| 533 | 600 |
| 534 | 601 |
| 535 ConstructorInvocation::~ConstructorInvocation() {} | 602 ConstructorInvocation::~ConstructorInvocation() {} |
| 536 | 603 |
| 537 | 604 |
| 538 void ConstructorInvocation::AcceptExpressionVisitor( | 605 void ConstructorInvocation::AcceptExpressionVisitor( |
| 539 ExpressionVisitor* visitor) { | 606 ExpressionVisitor* visitor) { |
| 540 visitor->VisitConstructorInvocation(this); | 607 visitor->VisitConstructorInvocation(this); |
| 541 } | 608 } |
| 542 | 609 |
| 543 | 610 |
| 544 void ConstructorInvocation::VisitChildren(Visitor* visitor) { | 611 void ConstructorInvocation::VisitChildren(Visitor* visitor) { |
| 545 visitor->VisitConstructorReference(target()); | |
| 546 visitor->VisitArguments(arguments()); | 612 visitor->VisitArguments(arguments()); |
| 547 } | 613 } |
| 548 | 614 |
| 549 | 615 |
| 550 Not::~Not() {} | 616 Not::~Not() {} |
| 551 | 617 |
| 552 | 618 |
| 553 void Not::AcceptExpressionVisitor(ExpressionVisitor* visitor) { | 619 void Not::AcceptExpressionVisitor(ExpressionVisitor* visitor) { |
| 554 visitor->VisitNot(this); | 620 visitor->VisitNot(this); |
| 555 } | 621 } |
| (...skipping 631 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1187 | 1253 |
| 1188 InterfaceType::~InterfaceType() {} | 1254 InterfaceType::~InterfaceType() {} |
| 1189 | 1255 |
| 1190 | 1256 |
| 1191 void InterfaceType::AcceptDartTypeVisitor(DartTypeVisitor* visitor) { | 1257 void InterfaceType::AcceptDartTypeVisitor(DartTypeVisitor* visitor) { |
| 1192 visitor->VisitInterfaceType(this); | 1258 visitor->VisitInterfaceType(this); |
| 1193 } | 1259 } |
| 1194 | 1260 |
| 1195 | 1261 |
| 1196 void InterfaceType::VisitChildren(Visitor* visitor) { | 1262 void InterfaceType::VisitChildren(Visitor* visitor) { |
| 1197 klass()->AcceptReferenceVisitor(visitor); | |
| 1198 VisitList(&type_arguments(), visitor); | 1263 VisitList(&type_arguments(), visitor); |
| 1199 } | 1264 } |
| 1200 | 1265 |
| 1201 | 1266 |
| 1202 FunctionType::~FunctionType() {} | 1267 FunctionType::~FunctionType() {} |
| 1203 | 1268 |
| 1204 | 1269 |
| 1205 void FunctionType::AcceptDartTypeVisitor(DartTypeVisitor* visitor) { | 1270 void FunctionType::AcceptDartTypeVisitor(DartTypeVisitor* visitor) { |
| 1206 visitor->VisitFunctionType(this); | 1271 visitor->VisitFunctionType(this); |
| 1207 } | 1272 } |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1251 } | 1316 } |
| 1252 | 1317 |
| 1253 | 1318 |
| 1254 void Program::AcceptTreeVisitor(TreeVisitor* visitor) { | 1319 void Program::AcceptTreeVisitor(TreeVisitor* visitor) { |
| 1255 visitor->VisitProgram(this); | 1320 visitor->VisitProgram(this); |
| 1256 } | 1321 } |
| 1257 | 1322 |
| 1258 | 1323 |
| 1259 void Program::VisitChildren(Visitor* visitor) { | 1324 void Program::VisitChildren(Visitor* visitor) { |
| 1260 VisitList(&libraries(), visitor); | 1325 VisitList(&libraries(), visitor); |
| 1261 visitor->VisitProcedureReference(main_method()); | |
| 1262 } | 1326 } |
| 1263 | 1327 |
| 1264 | 1328 |
| 1265 } // namespace kernel | 1329 } // namespace kernel |
| 1266 | 1330 |
| 1267 } // namespace dart | 1331 } // namespace dart |
| 1268 #endif // !defined(DART_PRECOMPILED_RUNTIME) | 1332 #endif // !defined(DART_PRECOMPILED_RUNTIME) |
| OLD | NEW |