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

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

Issue 1644793002: Replace intptr_t with TokenDescriptor (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 10 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 | « runtime/lib/errors.cc ('k') | runtime/lib/object.cc » ('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 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 133
134 bool has_extra_parameter_info = true; 134 bool has_extra_parameter_info = true;
135 if (non_implicit_param_count == 0) { 135 if (non_implicit_param_count == 0) {
136 has_extra_parameter_info = false; 136 has_extra_parameter_info = false;
137 } 137 }
138 if (func.IsImplicitConstructor()) { 138 if (func.IsImplicitConstructor()) {
139 // This covers the default constructor and forwarding constructors. 139 // This covers the default constructor and forwarding constructors.
140 has_extra_parameter_info = false; 140 has_extra_parameter_info = false;
141 } 141 }
142 if (func.IsSignatureFunction() && 142 if (func.IsSignatureFunction() &&
143 (func.token_pos() == Token::kNoSourcePos)) { 143 (func.token_pos() == TokenPosition::kNoSource)) {
144 // Signature functions (except those describing typedefs) get canonicalized, 144 // Signature functions (except those describing typedefs) get canonicalized,
145 // hence do not have a token position, and therefore cannot be reparsed. 145 // hence do not have a token position, and therefore cannot be reparsed.
146 has_extra_parameter_info = false; 146 has_extra_parameter_info = false;
147 } 147 }
148 148
149 Array& param_descriptor = Array::Handle(); 149 Array& param_descriptor = Array::Handle();
150 if (has_extra_parameter_info) { 150 if (has_extra_parameter_info) {
151 // Reparse the function for the following information: 151 // Reparse the function for the following information:
152 // * The default value of a parameter. 152 // * The default value of a parameter.
153 // * Whether a parameters has been declared as final. 153 // * Whether a parameters has been declared as final.
(...skipping 1287 matching lines...) Expand 10 before | Expand all | Expand 10 after
1441 // the equality test. 1441 // the equality test.
1442 function = function.parent_function(); 1442 function = function.parent_function();
1443 } 1443 }
1444 1444
1445 Type& instantiator = Type::Handle(); 1445 Type& instantiator = Type::Handle();
1446 if (closure.IsClosure()) { 1446 if (closure.IsClosure()) {
1447 const TypeArguments& arguments = 1447 const TypeArguments& arguments =
1448 TypeArguments::Handle(closure.GetTypeArguments()); 1448 TypeArguments::Handle(closure.GetTypeArguments());
1449 const Class& cls = 1449 const Class& cls =
1450 Class::Handle(Isolate::Current()->object_store()->object_class()); 1450 Class::Handle(Isolate::Current()->object_store()->object_class());
1451 instantiator = Type::New(cls, arguments, Token::kNoSourcePos); 1451 instantiator = Type::New(cls, arguments, TokenPosition::kNoSource);
1452 instantiator.SetIsFinalized(); 1452 instantiator.SetIsFinalized();
1453 } 1453 }
1454 return CreateMethodMirror(function, 1454 return CreateMethodMirror(function,
1455 Instance::null_instance(), 1455 Instance::null_instance(),
1456 instantiator); 1456 instantiator);
1457 } 1457 }
1458 return Instance::null(); 1458 return Instance::null();
1459 } 1459 }
1460 1460
1461 1461
(...skipping 500 matching lines...) Expand 10 before | Expand all | Expand 10 after
1962 if (reflectee.IsMirrorReference()) { 1962 if (reflectee.IsMirrorReference()) {
1963 const MirrorReference& decl_ref = MirrorReference::Cast(reflectee); 1963 const MirrorReference& decl_ref = MirrorReference::Cast(reflectee);
1964 decl = decl_ref.referent(); 1964 decl = decl_ref.referent();
1965 } else if (reflectee.IsTypeParameter()) { 1965 } else if (reflectee.IsTypeParameter()) {
1966 decl = reflectee.raw(); 1966 decl = reflectee.raw();
1967 } else { 1967 } else {
1968 UNREACHABLE(); 1968 UNREACHABLE();
1969 } 1969 }
1970 1970
1971 Script& script = Script::Handle(); 1971 Script& script = Script::Handle();
1972 intptr_t token_pos = Token::kNoSourcePos; 1972 TokenPosition token_pos = TokenPosition::kNoSource;
1973 1973
1974 if (decl.IsFunction()) { 1974 if (decl.IsFunction()) {
1975 const Function& func = Function::Cast(decl); 1975 const Function& func = Function::Cast(decl);
1976 if (func.IsImplicitConstructor() || func.IsSignatureFunction()) { 1976 if (func.IsImplicitConstructor() || func.IsSignatureFunction()) {
1977 // These are synthetic methods; they have no source. 1977 // These are synthetic methods; they have no source.
1978 return Instance::null(); 1978 return Instance::null();
1979 } 1979 }
1980 script = func.script(); 1980 script = func.script();
1981 token_pos = func.token_pos(); 1981 token_pos = func.token_pos();
1982 } else if (decl.IsClass()) { 1982 } else if (decl.IsClass()) {
(...skipping 27 matching lines...) Expand all
2010 if (script.kind() == RawScript::kLibraryTag) break; 2010 if (script.kind() == RawScript::kLibraryTag) break;
2011 } 2011 }
2012 ASSERT(!script.IsNull()); 2012 ASSERT(!script.IsNull());
2013 const String& libname = String::Handle(lib.name()); 2013 const String& libname = String::Handle(lib.name());
2014 if (libname.Length() == 0) { 2014 if (libname.Length() == 0) {
2015 // No library declaration. 2015 // No library declaration.
2016 const String& uri = String::Handle(script.url()); 2016 const String& uri = String::Handle(script.url());
2017 return CreateSourceLocation(uri, 1, 1); 2017 return CreateSourceLocation(uri, 1, 1);
2018 } 2018 }
2019 const TokenStream& stream = TokenStream::Handle(script.tokens()); 2019 const TokenStream& stream = TokenStream::Handle(script.tokens());
2020 TokenStream::Iterator tkit(stream, 0); 2020 TokenStream::Iterator tkit(stream, TokenPosition::kMinSource);
2021 if (tkit.CurrentTokenKind() == Token::kSCRIPTTAG) tkit.Advance(); 2021 if (tkit.CurrentTokenKind() == Token::kSCRIPTTAG) tkit.Advance();
2022 token_pos = tkit.CurrentPosition(); 2022 token_pos = tkit.CurrentPosition();
2023 } 2023 }
2024 2024
2025 ASSERT(!script.IsNull()); 2025 ASSERT(!script.IsNull());
2026 ASSERT(token_pos != Token::kNoSourcePos); 2026 ASSERT(token_pos != TokenPosition::kNoSource);
2027 2027
2028 const String& uri = String::Handle(script.url()); 2028 const String& uri = String::Handle(script.url());
2029 intptr_t from_line = 0; 2029 intptr_t from_line = 0;
2030 intptr_t from_col = 0; 2030 intptr_t from_col = 0;
2031 if (script.HasSource()) { 2031 if (script.HasSource()) {
2032 script.GetTokenLocation(token_pos, &from_line, &from_col); 2032 script.GetTokenLocation(token_pos, &from_line, &from_col);
2033 } else { 2033 } else {
2034 // Avoid the slow path of printing the token stream when precise source 2034 // Avoid the slow path of printing the token stream when precise source
2035 // information is not available. 2035 // information is not available.
2036 script.GetTokenLocation(token_pos, &from_line, NULL); 2036 script.GetTokenLocation(token_pos, &from_line, NULL);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
2084 } 2084 }
2085 2085
2086 DEFINE_NATIVE_ENTRY(TypeMirror_subtypeTest, 2) { 2086 DEFINE_NATIVE_ENTRY(TypeMirror_subtypeTest, 2) {
2087 GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, a, arguments->NativeArgAt(0)); 2087 GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, a, arguments->NativeArgAt(0));
2088 GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, b, arguments->NativeArgAt(1)); 2088 GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, b, arguments->NativeArgAt(1));
2089 return Bool::Get(a.IsSubtypeOf(b, NULL)).raw(); 2089 return Bool::Get(a.IsSubtypeOf(b, NULL)).raw();
2090 } 2090 }
2091 2091
2092 2092
2093 } // namespace dart 2093 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/lib/errors.cc ('k') | runtime/lib/object.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698