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