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

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

Issue 50523018: Cleanup StaticResolveType, it does not seem to be used anywhere. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « runtime/vm/intermediate_language.cc ('k') | runtime/vm/resolver.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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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/parser.h" 5 #include "vm/parser.h"
6 6
7 #include "lib/invocation_mirror.h" 7 #include "lib/invocation_mirror.h"
8 #include "vm/bigint_operations.h" 8 #include "vm/bigint_operations.h"
9 #include "vm/bootstrap.h" 9 #include "vm/bootstrap.h"
10 #include "vm/class_finalizer.h" 10 #include "vm/class_finalizer.h"
(...skipping 6418 matching lines...) Expand 10 before | Expand all | Expand 10 after
6429 // Calling VM-internal helpers, uses implementation core library. 6429 // Calling VM-internal helpers, uses implementation core library.
6430 AstNode* Parser::MakeStaticCall(const String& cls_name, 6430 AstNode* Parser::MakeStaticCall(const String& cls_name,
6431 const String& func_name, 6431 const String& func_name,
6432 ArgumentListNode* arguments) { 6432 ArgumentListNode* arguments) {
6433 const Class& cls = Class::Handle(Library::LookupCoreClass(cls_name)); 6433 const Class& cls = Class::Handle(Library::LookupCoreClass(cls_name));
6434 ASSERT(!cls.IsNull()); 6434 ASSERT(!cls.IsNull());
6435 const Function& func = Function::ZoneHandle( 6435 const Function& func = Function::ZoneHandle(
6436 Resolver::ResolveStatic(cls, 6436 Resolver::ResolveStatic(cls,
6437 func_name, 6437 func_name,
6438 arguments->length(), 6438 arguments->length(),
6439 arguments->names(), 6439 arguments->names()));
6440 Resolver::kIsQualified));
6441 ASSERT(!func.IsNull()); 6440 ASSERT(!func.IsNull());
6442 return new StaticCallNode(arguments->token_pos(), func, arguments); 6441 return new StaticCallNode(arguments->token_pos(), func, arguments);
6443 } 6442 }
6444 6443
6445 6444
6446 AstNode* Parser::MakeAssertCall(intptr_t begin, intptr_t end) { 6445 AstNode* Parser::MakeAssertCall(intptr_t begin, intptr_t end) {
6447 ArgumentListNode* arguments = new ArgumentListNode(begin); 6446 ArgumentListNode* arguments = new ArgumentListNode(begin);
6448 arguments->Add(new LiteralNode(begin, 6447 arguments->Add(new LiteralNode(begin,
6449 Integer::ZoneHandle(Integer::New(begin)))); 6448 Integer::ZoneHandle(Integer::New(begin))));
6450 arguments->Add(new LiteralNode(end, 6449 arguments->Add(new LiteralNode(end,
(...skipping 1501 matching lines...) Expand 10 before | Expand all | Expand 10 after
7952 intptr_t ident_pos) { 7951 intptr_t ident_pos) {
7953 TRACE_PARSER("ParseStaticCall"); 7952 TRACE_PARSER("ParseStaticCall");
7954 const intptr_t call_pos = TokenPos(); 7953 const intptr_t call_pos = TokenPos();
7955 ASSERT(CurrentToken() == Token::kLPAREN); 7954 ASSERT(CurrentToken() == Token::kLPAREN);
7956 ArgumentListNode* arguments = ParseActualParameters(NULL, kAllowConst); 7955 ArgumentListNode* arguments = ParseActualParameters(NULL, kAllowConst);
7957 const int num_arguments = arguments->length(); 7956 const int num_arguments = arguments->length();
7958 const Function& func = Function::ZoneHandle( 7957 const Function& func = Function::ZoneHandle(
7959 Resolver::ResolveStatic(cls, 7958 Resolver::ResolveStatic(cls,
7960 func_name, 7959 func_name,
7961 num_arguments, 7960 num_arguments,
7962 arguments->names(), 7961 arguments->names()));
7963 Resolver::kIsQualified));
7964 if (func.IsNull()) { 7962 if (func.IsNull()) {
7965 // Check if there is a static field of the same name, it could be a closure 7963 // Check if there is a static field of the same name, it could be a closure
7966 // and so we try and invoke the closure. 7964 // and so we try and invoke the closure.
7967 AstNode* closure = NULL; 7965 AstNode* closure = NULL;
7968 const Field& field = Field::ZoneHandle(cls.LookupStaticField(func_name)); 7966 const Field& field = Field::ZoneHandle(cls.LookupStaticField(func_name));
7969 Function& func = Function::ZoneHandle(); 7967 Function& func = Function::ZoneHandle();
7970 if (field.IsNull()) { 7968 if (field.IsNull()) {
7971 // No field, check if we have an explicit getter function. 7969 // No field, check if we have an explicit getter function.
7972 const String& getter_name = 7970 const String& getter_name =
7973 String::ZoneHandle(Field::GetterName(func_name)); 7971 String::ZoneHandle(Field::GetterName(func_name));
7974 const int kNumArguments = 0; // no arguments. 7972 const int kNumArguments = 0; // no arguments.
7975 func = Resolver::ResolveStatic(cls, 7973 func = Resolver::ResolveStatic(cls,
7976 getter_name, 7974 getter_name,
7977 kNumArguments, 7975 kNumArguments,
7978 Object::empty_array(), 7976 Object::empty_array());
7979 Resolver::kIsQualified);
7980 if (!func.IsNull()) { 7977 if (!func.IsNull()) {
7981 ASSERT(func.kind() != RawFunction::kImplicitStaticFinalGetter); 7978 ASSERT(func.kind() != RawFunction::kImplicitStaticFinalGetter);
7982 EnsureSavedCurrentContext(); 7979 EnsureSavedCurrentContext();
7983 closure = new StaticGetterNode(call_pos, 7980 closure = new StaticGetterNode(call_pos,
7984 NULL, 7981 NULL,
7985 false, 7982 false,
7986 Class::ZoneHandle(cls.raw()), 7983 Class::ZoneHandle(cls.raw()),
7987 func_name); 7984 func_name);
7988 return new ClosureCallNode(call_pos, closure, arguments); 7985 return new ClosureCallNode(call_pos, closure, arguments);
7989 } 7986 }
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
8077 const Field& field = Field::ZoneHandle(cls.LookupStaticField(field_name)); 8074 const Field& field = Field::ZoneHandle(cls.LookupStaticField(field_name));
8078 Function& func = Function::ZoneHandle(); 8075 Function& func = Function::ZoneHandle();
8079 if (field.IsNull()) { 8076 if (field.IsNull()) {
8080 // No field, check if we have an explicit getter function. 8077 // No field, check if we have an explicit getter function.
8081 const String& getter_name = 8078 const String& getter_name =
8082 String::ZoneHandle(Field::GetterName(field_name)); 8079 String::ZoneHandle(Field::GetterName(field_name));
8083 const int kNumArguments = 0; // no arguments. 8080 const int kNumArguments = 0; // no arguments.
8084 func = Resolver::ResolveStatic(cls, 8081 func = Resolver::ResolveStatic(cls,
8085 getter_name, 8082 getter_name,
8086 kNumArguments, 8083 kNumArguments,
8087 Object::empty_array(), 8084 Object::empty_array());
8088 Resolver::kIsQualified);
8089 if (func.IsNull()) { 8085 if (func.IsNull()) {
8090 // We might be referring to an implicit closure, check to see if 8086 // We might be referring to an implicit closure, check to see if
8091 // there is a function of the same name. 8087 // there is a function of the same name.
8092 func = cls.LookupStaticFunction(field_name); 8088 func = cls.LookupStaticFunction(field_name);
8093 if (!func.IsNull()) { 8089 if (!func.IsNull()) {
8094 access = CreateImplicitClosureNode(func, call_pos, NULL); 8090 access = CreateImplicitClosureNode(func, call_pos, NULL);
8095 } else { 8091 } else {
8096 // No function to closurize found found. 8092 // No function to closurize found found.
8097 // This field access may turn out to be a call to the setter. 8093 // This field access may turn out to be a call to the setter.
8098 // Create a getter call, which may later be turned into 8094 // Create a getter call, which may later be turned into
(...skipping 549 matching lines...) Expand 10 before | Expand all | Expand 10 after
8648 // This field has not been referenced yet and thus the value has 8644 // This field has not been referenced yet and thus the value has
8649 // not been evaluated. If the field is const, call the static getter method 8645 // not been evaluated. If the field is const, call the static getter method
8650 // to evaluate the expression and canonicalize the value. 8646 // to evaluate the expression and canonicalize the value.
8651 if (field.is_const()) { 8647 if (field.is_const()) {
8652 field.set_value(Object::transition_sentinel()); 8648 field.set_value(Object::transition_sentinel());
8653 const int kNumArguments = 0; // no arguments. 8649 const int kNumArguments = 0; // no arguments.
8654 const Function& func = 8650 const Function& func =
8655 Function::Handle(Resolver::ResolveStatic(field_owner, 8651 Function::Handle(Resolver::ResolveStatic(field_owner,
8656 getter_name, 8652 getter_name,
8657 kNumArguments, 8653 kNumArguments,
8658 Object::empty_array(), 8654 Object::empty_array()));
8659 Resolver::kIsQualified));
8660 ASSERT(!func.IsNull()); 8655 ASSERT(!func.IsNull());
8661 ASSERT(func.kind() == RawFunction::kImplicitStaticFinalGetter); 8656 ASSERT(func.kind() == RawFunction::kImplicitStaticFinalGetter);
8662 Object& const_value = Object::Handle( 8657 Object& const_value = Object::Handle(
8663 DartEntry::InvokeFunction(func, Object::empty_array())); 8658 DartEntry::InvokeFunction(func, Object::empty_array()));
8664 if (const_value.IsError()) { 8659 if (const_value.IsError()) {
8665 const Error& error = Error::Cast(const_value); 8660 const Error& error = Error::Cast(const_value);
8666 if (error.IsUnhandledException()) { 8661 if (error.IsUnhandledException()) {
8667 // An exception may not occur in every parse attempt, i.e., the 8662 // An exception may not occur in every parse attempt, i.e., the
8668 // generated AST is not deterministic. Therefore mark the function as 8663 // generated AST is not deterministic. Therefore mark the function as
8669 // not optimizable. 8664 // not optimizable.
(...skipping 1918 matching lines...) Expand 10 before | Expand all | Expand 10 after
10588 void Parser::SkipQualIdent() { 10583 void Parser::SkipQualIdent() {
10589 ASSERT(IsIdentifier()); 10584 ASSERT(IsIdentifier());
10590 ConsumeToken(); 10585 ConsumeToken();
10591 if (CurrentToken() == Token::kPERIOD) { 10586 if (CurrentToken() == Token::kPERIOD) {
10592 ConsumeToken(); // Consume the kPERIOD token. 10587 ConsumeToken(); // Consume the kPERIOD token.
10593 ExpectIdentifier("identifier expected after '.'"); 10588 ExpectIdentifier("identifier expected after '.'");
10594 } 10589 }
10595 } 10590 }
10596 10591
10597 } // namespace dart 10592 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/intermediate_language.cc ('k') | runtime/vm/resolver.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698