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

Side by Side Diff: runtime/lib/mirrors.cc

Issue 1589643002: Source positions for constructors and lots of async machinery (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 11 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
« no previous file with comments | « no previous file | runtime/observatory/tests/service/coverage_test.dart » ('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 "lib/mirrors.h" 5 #include "lib/mirrors.h"
6 6
7 #include "lib/invocation_mirror.h" 7 #include "lib/invocation_mirror.h"
8 #include "vm/bootstrap_natives.h" 8 #include "vm/bootstrap_natives.h"
9 #include "vm/class_finalizer.h" 9 #include "vm/class_finalizer.h"
10 #include "vm/compiler.h" 10 #include "vm/compiler.h"
(...skipping 1464 matching lines...) Expand 10 before | Expand all | Expand 10 after
1475 // the equality test. 1475 // the equality test.
1476 function = function.parent_function(); 1476 function = function.parent_function();
1477 } 1477 }
1478 1478
1479 Type& instantiator = Type::Handle(); 1479 Type& instantiator = Type::Handle();
1480 if (closure.IsClosure()) { 1480 if (closure.IsClosure()) {
1481 const TypeArguments& arguments = 1481 const TypeArguments& arguments =
1482 TypeArguments::Handle(Closure::GetTypeArguments(closure)); 1482 TypeArguments::Handle(Closure::GetTypeArguments(closure));
1483 const Class& cls = 1483 const Class& cls =
1484 Class::Handle(Isolate::Current()->object_store()->object_class()); 1484 Class::Handle(Isolate::Current()->object_store()->object_class());
1485 instantiator = Type::New(cls, arguments, Scanner::kNoSourcePos); 1485 instantiator = Type::New(cls, arguments, Token::kNoSourcePos);
1486 instantiator.SetIsFinalized(); 1486 instantiator.SetIsFinalized();
1487 } 1487 }
1488 return CreateMethodMirror(function, 1488 return CreateMethodMirror(function,
1489 Instance::null_instance(), 1489 Instance::null_instance(),
1490 instantiator); 1490 instantiator);
1491 } 1491 }
1492 return Instance::null(); 1492 return Instance::null();
1493 } 1493 }
1494 1494
1495 1495
(...skipping 500 matching lines...) Expand 10 before | Expand all | Expand 10 after
1996 if (reflectee.IsMirrorReference()) { 1996 if (reflectee.IsMirrorReference()) {
1997 const MirrorReference& decl_ref = MirrorReference::Cast(reflectee); 1997 const MirrorReference& decl_ref = MirrorReference::Cast(reflectee);
1998 decl = decl_ref.referent(); 1998 decl = decl_ref.referent();
1999 } else if (reflectee.IsTypeParameter()) { 1999 } else if (reflectee.IsTypeParameter()) {
2000 decl = reflectee.raw(); 2000 decl = reflectee.raw();
2001 } else { 2001 } else {
2002 UNREACHABLE(); 2002 UNREACHABLE();
2003 } 2003 }
2004 2004
2005 Script& script = Script::Handle(); 2005 Script& script = Script::Handle();
2006 intptr_t token_pos = Scanner::kNoSourcePos; 2006 intptr_t token_pos = Token::kNoSourcePos;
2007 2007
2008 if (decl.IsFunction()) { 2008 if (decl.IsFunction()) {
2009 const Function& func = Function::Cast(decl); 2009 const Function& func = Function::Cast(decl);
2010 if (func.IsImplicitConstructor() || func.IsSignatureFunction()) { 2010 if (func.IsImplicitConstructor() || func.IsSignatureFunction()) {
2011 // These are synthetic methods; they have no source. 2011 // These are synthetic methods; they have no source.
2012 return Instance::null(); 2012 return Instance::null();
2013 } 2013 }
2014 script = func.script(); 2014 script = func.script();
2015 token_pos = func.token_pos(); 2015 token_pos = func.token_pos();
2016 } else if (decl.IsClass()) { 2016 } else if (decl.IsClass()) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
2051 const String& uri = String::Handle(script.url()); 2051 const String& uri = String::Handle(script.url());
2052 return CreateSourceLocation(uri, 1, 1); 2052 return CreateSourceLocation(uri, 1, 1);
2053 } 2053 }
2054 const TokenStream& stream = TokenStream::Handle(script.tokens()); 2054 const TokenStream& stream = TokenStream::Handle(script.tokens());
2055 TokenStream::Iterator tkit(stream, 0); 2055 TokenStream::Iterator tkit(stream, 0);
2056 if (tkit.CurrentTokenKind() == Token::kSCRIPTTAG) tkit.Advance(); 2056 if (tkit.CurrentTokenKind() == Token::kSCRIPTTAG) tkit.Advance();
2057 token_pos = tkit.CurrentPosition(); 2057 token_pos = tkit.CurrentPosition();
2058 } 2058 }
2059 2059
2060 ASSERT(!script.IsNull()); 2060 ASSERT(!script.IsNull());
2061 ASSERT(token_pos != Scanner::kNoSourcePos); 2061 ASSERT(token_pos != Token::kNoSourcePos);
2062 2062
2063 const String& uri = String::Handle(script.url()); 2063 const String& uri = String::Handle(script.url());
2064 intptr_t from_line = 0; 2064 intptr_t from_line = 0;
2065 intptr_t from_col = 0; 2065 intptr_t from_col = 0;
2066 if (script.HasSource()) { 2066 if (script.HasSource()) {
2067 script.GetTokenLocation(token_pos, &from_line, &from_col); 2067 script.GetTokenLocation(token_pos, &from_line, &from_col);
2068 } else { 2068 } else {
2069 // Avoid the slow path of printing the token stream when precise source 2069 // Avoid the slow path of printing the token stream when precise source
2070 // information is not available. 2070 // information is not available.
2071 script.GetTokenLocation(token_pos, &from_line, NULL); 2071 script.GetTokenLocation(token_pos, &from_line, NULL);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
2109 } 2109 }
2110 2110
2111 DEFINE_NATIVE_ENTRY(TypeMirror_subtypeTest, 2) { 2111 DEFINE_NATIVE_ENTRY(TypeMirror_subtypeTest, 2) {
2112 GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, a, arguments->NativeArgAt(0)); 2112 GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, a, arguments->NativeArgAt(0));
2113 GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, b, arguments->NativeArgAt(1)); 2113 GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, b, arguments->NativeArgAt(1));
2114 return Bool::Get(a.IsSubtypeOf(b, NULL)).raw(); 2114 return Bool::Get(a.IsSubtypeOf(b, NULL)).raw();
2115 } 2115 }
2116 2116
2117 2117
2118 } // namespace dart 2118 } // namespace dart
OLDNEW
« no previous file with comments | « no previous file | runtime/observatory/tests/service/coverage_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698