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

Unified Diff: runtime/vm/object.cc

Issue 1644793002: Replace intptr_t with TokenDescriptor (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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/object.h ('k') | runtime/vm/object_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/object.cc
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 3882b1bbc65f3f03e8e47bc42f068b2e664c7d9b..d1d590c0cee2a5e467a72c81cf3287b5c8991788 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -1185,7 +1185,7 @@ RawError* Object::Init(Isolate* isolate) {
// could expect. Use with caution.
type ^= Type::New(Object::Handle(zone, cls.raw()),
TypeArguments::Handle(zone),
- Token::kNoSourcePos);
+ TokenPosition::kNoSource);
type.SetIsFinalized();
type ^= type.Canonicalize();
object_store->set_array_type(type);
@@ -1586,7 +1586,7 @@ RawError* Object::Init(Isolate* isolate) {
#define ADD_SET_FIELD(clazz) \
field_name = Symbols::New("cid"#clazz); \
field = Field::New(field_name, true, false, true, false, cls, \
- Type::Handle(Type::IntType()), 0); \
+ Type::Handle(Type::IntType()), TokenPosition::kMinSource); \
value = Smi::New(k##clazz##Cid); \
field.SetStaticValue(value, true); \
cls.AddField(field); \
@@ -1972,7 +1972,7 @@ RawAbstractType* Class::RareType() const {
const Type& type = Type::Handle(Type::New(
*this,
Object::null_type_arguments(),
- Token::kNoSourcePos));
+ TokenPosition::kNoSource));
return ClassFinalizer::FinalizeType(*this,
type,
ClassFinalizer::kCanonicalize);
@@ -1984,7 +1984,7 @@ RawAbstractType* Class::DeclarationType() const {
const Type& type = Type::Handle(Type::New(
*this,
args,
- Token::kNoSourcePos));
+ TokenPosition::kNoSource));
return ClassFinalizer::FinalizeType(*this,
type,
ClassFinalizer::kCanonicalize);
@@ -2022,7 +2022,7 @@ RawClass* Class::New() {
result.set_num_type_arguments(0);
result.set_num_own_type_arguments(0);
result.set_num_native_fields(0);
- result.set_token_pos(Token::kNoSourcePos);
+ result.set_token_pos(TokenPosition::kNoSource);
result.InitEmptyFields();
Isolate::Current()->RegisterClass(result);
return result.raw();
@@ -2622,7 +2622,7 @@ RawFunction* Class::CreateInvocationDispatcher(const String& target_name,
false, // Not external.
false, // Not native.
*this,
- 0)); // token_pos
+ TokenPosition::kMinSource));
ArgumentsDescriptor desc(args_desc);
invocation.set_num_fixed_parameters(desc.PositionalCount());
invocation.SetNumOptionalParameters(desc.NamedCount(),
@@ -2679,7 +2679,7 @@ RawFunction* Function::CreateMethodExtractor(const String& getter_name) const {
false, // Not external.
false, // Not native.
owner,
- ClassifyingTokenPositions::kMethodExtractor)); // token_pos
+ TokenPosition::kMethodExtractor));
// Initialize signature: receiver is a single fixed parameter.
const intptr_t kNumParameters = 1;
@@ -3091,7 +3091,7 @@ RawClass* Class::New(intptr_t index) {
result.set_num_type_arguments(kUnknownNumTypeArguments);
result.set_num_own_type_arguments(kUnknownNumTypeArguments);
result.set_num_native_fields(0);
- result.set_token_pos(Token::kNoSourcePos);
+ result.set_token_pos(TokenPosition::kNoSource);
result.InitEmptyFields();
Isolate::Current()->RegisterClass(result);
return result.raw();
@@ -3100,7 +3100,7 @@ RawClass* Class::New(intptr_t index) {
RawClass* Class::New(const String& name,
const Script& script,
- intptr_t token_pos) {
+ TokenPosition token_pos) {
Class& result = Class::Handle(New<Instance>(kIllegalCid));
result.set_name(name);
result.set_script(script);
@@ -3114,7 +3114,7 @@ RawClass* Class::NewNativeWrapper(const Library& library,
int field_count) {
Class& cls = Class::Handle(library.LookupClass(name));
if (cls.IsNull()) {
- cls = New(name, Script::Handle(), Token::kNoSourcePos);
+ cls = New(name, Script::Handle(), TokenPosition::kNoSource);
cls.SetFields(Object::empty_array());
cls.SetFunctions(Object::empty_array());
// Set super class to Object.
@@ -3359,13 +3359,13 @@ void Class::set_script(const Script& value) const {
}
-void Class::set_token_pos(intptr_t token_pos) const {
- ASSERT(!Token::IsClassifying(token_pos));
+void Class::set_token_pos(TokenPosition token_pos) const {
+ ASSERT(!token_pos.IsClassifying());
StoreNonPointer(&raw_ptr()->token_pos_, token_pos);
}
-intptr_t Class::ComputeEndTokenPos() const {
+TokenPosition Class::ComputeEndTokenPos() const {
// Return the begin token for synthetic classes.
if (IsMixinApplication() || IsTopLevel()) {
return token_pos();
@@ -3373,8 +3373,9 @@ intptr_t Class::ComputeEndTokenPos() const {
const Script& scr = Script::Handle(script());
ASSERT(!scr.IsNull());
const TokenStream& tkns = TokenStream::Handle(scr.tokens());
- TokenStream::Iterator tkit(
- tkns, token_pos(), TokenStream::Iterator::kNoNewlines);
+ TokenStream::Iterator tkit(tkns,
+ token_pos(),
+ TokenStream::Iterator::kNoNewlines);
intptr_t level = 0;
while (tkit.CurrentTokenKind() != Token::kEOS) {
if (tkit.CurrentTokenKind() == Token::kLBRACE) {
@@ -3387,7 +3388,7 @@ intptr_t Class::ComputeEndTokenPos() const {
tkit.Advance();
}
UNREACHABLE();
- return 0;
+ return TokenPosition::kNoSource;
}
@@ -4246,7 +4247,7 @@ void Class::InsertCanonicalConstant(intptr_t index,
RawUnresolvedClass* UnresolvedClass::New(const LibraryPrefix& library_prefix,
const String& ident,
- intptr_t token_pos) {
+ TokenPosition token_pos) {
const UnresolvedClass& type = UnresolvedClass::Handle(UnresolvedClass::New());
type.set_library_prefix(library_prefix);
type.set_ident(ident);
@@ -4264,8 +4265,8 @@ RawUnresolvedClass* UnresolvedClass::New() {
}
-void UnresolvedClass::set_token_pos(intptr_t token_pos) const {
- ASSERT(!Token::IsClassifying(token_pos));
+void UnresolvedClass::set_token_pos(TokenPosition token_pos) const {
+ ASSERT(!token_pos.IsClassifying());
StoreNonPointer(&raw_ptr()->token_pos_, token_pos);
}
@@ -5259,7 +5260,7 @@ RawScript* Function::eval_script() const {
void Function::set_eval_script(const Script& script) const {
- ASSERT(token_pos() == 0);
+ ASSERT(token_pos() == TokenPosition::kMinSource);
ASSERT(raw_ptr()->data_ == Object::null());
set_data(script);
}
@@ -5409,7 +5410,7 @@ RawFunctionType* Function::SignatureType() const {
scope_class = Isolate::Current()->object_store()->closure_class();
if (IsSignatureFunction()) {
set_owner(scope_class);
- set_token_pos(Token::kNoSourcePos);
+ set_token_pos(TokenPosition::kNoSource);
}
}
const TypeArguments& signature_type_arguments =
@@ -5701,8 +5702,8 @@ void Function::set_recognized_kind(MethodRecognizer::Kind value) const {
}
-void Function::set_token_pos(intptr_t token_pos) const {
- ASSERT(!Token::IsClassifying(token_pos) || IsMethodExtractor());
+void Function::set_token_pos(TokenPosition token_pos) const {
+ ASSERT(!token_pos.IsClassifying() || IsMethodExtractor());
StoreNonPointer(&raw_ptr()->token_pos_, token_pos);
}
@@ -5746,8 +5747,9 @@ bool Function::IsOptimizable() const {
// Native methods don't need to be optimized.
return false;
}
+ const intptr_t function_length = end_token_pos().Pos() - token_pos().Pos();
if (is_optimizable() && (script() != Script::null()) &&
- ((end_token_pos() - token_pos()) < FLAG_huge_method_cutoff_in_tokens)) {
+ (function_length < FLAG_huge_method_cutoff_in_tokens)) {
// Additional check needed for implicit getters.
return (unoptimized_code() == Object::null()) ||
(Code::Handle(unoptimized_code()).Size() <
@@ -6321,7 +6323,7 @@ RawFunction* Function::New(const String& name,
bool is_external,
bool is_native,
const Object& owner,
- intptr_t token_pos) {
+ TokenPosition token_pos) {
ASSERT(!owner.IsNull());
const Function& result = Function::Handle(Function::New());
result.set_parameter_types(Object::empty_array());
@@ -6401,7 +6403,7 @@ RawFunction* Function::Clone(const Class& new_owner) const {
RawFunction* Function::NewClosureFunction(const String& name,
const Function& parent,
- intptr_t token_pos) {
+ TokenPosition token_pos) {
ASSERT(!parent.IsNull());
// Use the owner defining the parent function and not the class containing it.
const Object& parent_owner = Object::Handle(parent.raw_ptr()->owner_);
@@ -6422,7 +6424,7 @@ RawFunction* Function::NewClosureFunction(const String& name,
RawFunction* Function::NewSignatureFunction(const Class& owner,
- intptr_t token_pos) {
+ TokenPosition token_pos) {
const Function& result = Function::Handle(Function::New(
Symbols::AnonymousSignature(),
RawFunction::kSignatureFunction,
@@ -6452,7 +6454,7 @@ RawFunction* Function::NewEvalFunction(const Class& owner,
/* is_external = */ false,
/* is_native = */ false,
owner,
- /* token_pos = */ 0));
+ TokenPosition::kMinSource));
ASSERT(!script.IsNull());
result.set_is_debuggable(false);
result.set_is_visible(true);
@@ -6743,7 +6745,7 @@ RawClass* Function::origin() const {
RawScript* Function::script() const {
- if (token_pos() == 0) {
+ if (token_pos() == TokenPosition::kMinSource) {
// Testing for position 0 is an optimization that relies on temporary
// eval functions having token position 0.
const Script& script = Script::Handle(eval_script());
@@ -6846,7 +6848,7 @@ RawString* Function::GetSource() const {
if (!func_script.HasSource()) {
// When source is not available, avoid printing the whole token stream and
// doing expensive position calculations.
- return stream.GenerateSource(token_pos(), end_token_pos() + 1);
+ return stream.GenerateSource(token_pos(), end_token_pos().Next());
}
const TokenStream::Iterator tkit(stream, end_token_pos());
@@ -7353,7 +7355,7 @@ RawField* Field::New(const String& name,
bool is_reflectable,
const Class& owner,
const AbstractType& type,
- intptr_t token_pos) {
+ TokenPosition token_pos) {
ASSERT(!owner.IsNull());
const Field& result = Field::Handle(Field::New());
result.set_name(name);
@@ -7387,7 +7389,7 @@ RawField* Field::NewTopLevel(const String& name,
bool is_final,
bool is_const,
const Object& owner,
- intptr_t token_pos) {
+ TokenPosition token_pos) {
ASSERT(!owner.IsNull());
const Field& result = Field::Handle(Field::New());
result.set_name(name);
@@ -7986,11 +7988,12 @@ void TokenStream::SetPrivateKey(const String& value) const {
}
RawString* TokenStream::GenerateSource() const {
- return GenerateSource(0, kMaxElements);
+ return GenerateSource(TokenPosition::kMinSource,
+ TokenPosition::kMaxSource);
}
-RawString* TokenStream::GenerateSource(intptr_t start_pos,
- intptr_t end_pos) const {
+RawString* TokenStream::GenerateSource(TokenPosition start_pos,
+ TokenPosition end_pos) const {
Iterator iterator(*this, start_pos, Iterator::kAllTokens);
const ExternalTypedData& data = ExternalTypedData::Handle(GetStream());
const GrowableObjectArray& literals =
@@ -8164,14 +8167,15 @@ RawString* TokenStream::GenerateSource(intptr_t start_pos,
}
-intptr_t TokenStream::ComputeSourcePosition(intptr_t tok_pos) const {
- Iterator iterator(*this, 0, Iterator::kAllTokens);
- intptr_t src_pos = 0;
+TokenPosition TokenStream::ComputeSourcePosition(
+ TokenPosition tok_pos) const {
+ Iterator iterator(*this, TokenPosition::kMinSource, Iterator::kAllTokens);
+ TokenPosition src_pos = TokenPosition::kMinSource;
Token::Kind kind = iterator.CurrentTokenKind();
- while (iterator.CurrentPosition() < tok_pos && kind != Token::kEOS) {
+ while ((iterator.CurrentPosition() < tok_pos) && (kind != Token::kEOS)) {
iterator.Advance();
kind = iterator.CurrentTokenKind();
- src_pos += 1;
+ src_pos.Next();
}
return src_pos;
}
@@ -8206,7 +8210,7 @@ RawTokenStream* TokenStream::New(intptr_t len) {
// CompressedTokenMap maps String and LiteralToken keys to Smi values.
-// It also supports lookup by Scanner::TokenDescriptor.
+// It also supports lookup by TokenDescriptor.
class CompressedTokenTraits {
public:
static bool IsMatch(const Scanner::TokenDescriptor& descriptor,
@@ -8444,7 +8448,7 @@ void TokenStream::PrintJSONImpl(JSONStream* stream, bool ref) const {
TokenStream::Iterator::Iterator(const TokenStream& tokens,
- intptr_t token_pos,
+ TokenPosition token_pos,
Iterator::StreamType stream_type)
: tokens_(TokenStream::Handle(tokens.raw())),
data_(ExternalTypedData::Handle(tokens.GetStream())),
@@ -8452,26 +8456,26 @@ TokenStream::Iterator::Iterator(const TokenStream& tokens,
token_objects_(Array::Handle(
GrowableObjectArray::Handle(tokens.TokenObjects()).data())),
obj_(Object::Handle()),
- cur_token_pos_(token_pos),
+ cur_token_pos_(token_pos.Pos()),
cur_token_kind_(Token::kILLEGAL),
cur_token_obj_index_(-1),
stream_type_(stream_type) {
- ASSERT(token_pos != Token::kNoSourcePos);
- if (token_pos >= 0) {
+ ASSERT(token_pos != TokenPosition::kNoSource);
+ if (token_pos.IsReal()) {
SetCurrentPosition(token_pos);
}
}
void TokenStream::Iterator::SetStream(const TokenStream& tokens,
- intptr_t token_pos) {
+ TokenPosition token_pos) {
tokens_ = tokens.raw();
data_ = tokens.GetStream();
stream_.SetStream(reinterpret_cast<uint8_t*>(data_.DataAddr(0)),
data_.Length());
token_objects_ = GrowableObjectArray::Handle(tokens.TokenObjects()).data();
obj_ = Object::null();
- cur_token_pos_ = token_pos;
+ cur_token_pos_ = token_pos.Pos();
cur_token_kind_ = Token::kILLEGAL;
cur_token_obj_index_ = -1;
SetCurrentPosition(token_pos);
@@ -8513,13 +8517,13 @@ Token::Kind TokenStream::Iterator::LookaheadTokenKind(intptr_t num_tokens) {
}
-intptr_t TokenStream::Iterator::CurrentPosition() const {
- return cur_token_pos_;
+TokenPosition TokenStream::Iterator::CurrentPosition() const {
+ return TokenPosition(cur_token_pos_);
}
-void TokenStream::Iterator::SetCurrentPosition(intptr_t value) {
- stream_.SetPosition(value);
+void TokenStream::Iterator::SetCurrentPosition(TokenPosition token_pos) {
+ stream_.SetPosition(token_pos.value());
Advance();
}
@@ -8617,7 +8621,9 @@ RawGrowableObjectArray* Script::GenerateLineNumberArray() const {
Smi& value = Smi::Handle(zone);
String& tokenValue = String::Handle(zone);
ASSERT(!tkns.IsNull());
- TokenStream::Iterator tkit(tkns, 0, TokenStream::Iterator::kAllTokens);
+ TokenStream::Iterator tkit(tkns,
+ TokenPosition::kMinSource,
+ TokenStream::Iterator::kAllTokens);
int current_line = -1;
Scanner s(source, key);
s.Scan();
@@ -8672,7 +8678,7 @@ RawGrowableObjectArray* Script::GenerateLineNumberArray() const {
// TODO(hausner): Could optimize here by not reporting tokens
// that will never be a location used by the debugger, e.g.
// braces, semicolons, most keywords etc.
- value = Smi::New(tkit.CurrentPosition());
+ value = Smi::New(tkit.CurrentPosition().Pos());
info.Add(value);
int column = s.current_token().position.column;
// On the first line of the script we must add the column offset.
@@ -8759,7 +8765,7 @@ void Script::SetLocationOffset(intptr_t line_offset,
}
-void Script::GetTokenLocation(intptr_t token_pos,
+void Script::GetTokenLocation(TokenPosition token_pos,
intptr_t* line,
intptr_t* column,
intptr_t* token_len) const {
@@ -8777,10 +8783,12 @@ void Script::GetTokenLocation(intptr_t token_pos,
return;
}
if (column == NULL) {
- TokenStream::Iterator tkit(tkns, 0, TokenStream::Iterator::kAllTokens);
+ TokenStream::Iterator tkit(tkns,
+ TokenPosition::kMinSource,
+ TokenStream::Iterator::kAllTokens);
intptr_t cur_line = line_offset() + 1;
- while (tkit.CurrentPosition() < token_pos &&
- tkit.CurrentTokenKind() != Token::kEOS) {
+ while ((tkit.CurrentPosition() < token_pos) &&
+ (tkit.CurrentTokenKind() != Token::kEOS)) {
if (tkit.CurrentTokenKind() == Token::kNEWLINE) {
cur_line++;
}
@@ -8789,7 +8797,7 @@ void Script::GetTokenLocation(intptr_t token_pos,
*line = cur_line;
} else {
const String& src = String::Handle(Source());
- intptr_t src_pos = tkns.ComputeSourcePosition(token_pos);
+ TokenPosition src_pos = tkns.ComputeSourcePosition(token_pos);
Scanner scanner(src, Symbols::Empty());
scanner.ScanTo(src_pos);
intptr_t relative_line = scanner.CurrentPosition().line;
@@ -8811,16 +8819,18 @@ void Script::GetTokenLocation(intptr_t token_pos,
void Script::TokenRangeAtLine(intptr_t line_number,
- intptr_t* first_token_index,
- intptr_t* last_token_index) const {
+ TokenPosition* first_token_index,
+ TokenPosition* last_token_index) const {
ASSERT(first_token_index != NULL && last_token_index != NULL);
ASSERT(line_number > 0);
- *first_token_index = -1;
- *last_token_index = -1;
+ *first_token_index = TokenPosition::kNoSource;
+ *last_token_index = TokenPosition::kNoSource;
const TokenStream& tkns = TokenStream::Handle(tokens());
line_number -= line_offset();
if (line_number < 1) line_number = 1;
- TokenStream::Iterator tkit(tkns, 0, TokenStream::Iterator::kAllTokens);
+ TokenStream::Iterator tkit(tkns,
+ TokenPosition::kMinSource,
+ TokenStream::Iterator::kAllTokens);
// Scan through the token stream to the required line.
intptr_t cur_line = 1;
while (cur_line < line_number && tkit.CurrentTokenKind() != Token::kEOS) {
@@ -8848,7 +8858,7 @@ void Script::TokenRangeAtLine(intptr_t line_number,
*first_token_index = tkit.CurrentPosition();
// We cannot do "CurrentPosition() - 1" for the last token, because we do not
// know whether the previous token is a simple one or not.
- intptr_t end_pos = *first_token_index;
+ TokenPosition end_pos = *first_token_index;
while (tkit.CurrentTokenKind() != Token::kNEWLINE &&
tkit.CurrentTokenKind() != Token::kEOS) {
end_pos = tkit.CurrentPosition();
@@ -9151,7 +9161,7 @@ static void ReportTooManyImports(const Library& lib) {
const String& url = String::Handle(lib.url());
Report::MessageF(Report::kError,
Script::Handle(lib.LookupScript(url)),
- Token::kNoSourcePos,
+ TokenPosition::kNoSource,
Report::AtLocation,
"too many imports in library '%s'",
url.ToCString());
@@ -9338,7 +9348,7 @@ static RawString* MakeTypeParameterMetaName(const TypeParameter& param) {
void Library::AddMetadata(const Object& owner,
const String& name,
- intptr_t token_pos) const {
+ TokenPosition token_pos) const {
const String& metaname = String::Handle(Symbols::New(name));
const Field& field = Field::Handle(
Field::NewTopLevel(metaname,
@@ -9357,7 +9367,7 @@ void Library::AddMetadata(const Object& owner,
void Library::AddClassMetadata(const Class& cls,
const Object& tl_owner,
- intptr_t token_pos) const {
+ TokenPosition token_pos) const {
// We use the toplevel class as the owner of a class's metadata field because
// a class's metadata is in scope of the library, not the class.
AddMetadata(tl_owner,
@@ -9367,7 +9377,7 @@ void Library::AddClassMetadata(const Class& cls,
void Library::AddFieldMetadata(const Field& field,
- intptr_t token_pos) const {
+ TokenPosition token_pos) const {
AddMetadata(Object::Handle(field.RawOwner()),
String::Handle(MakeFieldMetaName(field)),
token_pos);
@@ -9375,7 +9385,7 @@ void Library::AddFieldMetadata(const Field& field,
void Library::AddFunctionMetadata(const Function& func,
- intptr_t token_pos) const {
+ TokenPosition token_pos) const {
AddMetadata(Object::Handle(func.RawOwner()),
String::Handle(MakeFunctionMetaName(func)),
token_pos);
@@ -9383,7 +9393,7 @@ void Library::AddFunctionMetadata(const Function& func,
void Library::AddTypeParameterMetadata(const TypeParameter& param,
- intptr_t token_pos) const {
+ TokenPosition token_pos) const {
AddMetadata(Class::Handle(param.parameterized_class()),
String::Handle(MakeTypeParameterMetaName(param)),
token_pos);
@@ -9391,7 +9401,7 @@ void Library::AddTypeParameterMetadata(const TypeParameter& param,
void Library::AddLibraryMetadata(const Object& tl_owner,
- intptr_t token_pos) const {
+ TokenPosition token_pos) const {
AddMetadata(tl_owner, Symbols::TopLevel(), token_pos);
}
@@ -10843,7 +10853,7 @@ void Namespace::set_metadata_field(const Field& value) const {
}
-void Namespace::AddMetadata(const Object& owner, intptr_t token_pos) {
+void Namespace::AddMetadata(const Object& owner, TokenPosition token_pos) {
ASSERT(Field::Handle(metadata_field()).IsNull());
Field& field = Field::Handle(Field::NewTopLevel(Symbols::TopLevel(),
false, // is_final
@@ -11412,7 +11422,7 @@ void PcDescriptors::PrintHeaderString() {
const char* PcDescriptors::ToCString() const {
// "*" in a printf format specifier tells it to read the field width from
// the printf argument list.
-#define FORMAT "%#-*" Px "\t%s\t%" Pd "\t\t%" Pd "\t%" Pd "\n"
+#define FORMAT "%#-*" Px "\t%s\t%" Pd "\t\t%s\t%" Pd "\n"
if (Length() == 0) {
return "empty PcDescriptors\n";
}
@@ -11427,7 +11437,7 @@ const char* PcDescriptors::ToCString() const {
iter.PcOffset(),
KindAsStr(iter.Kind()),
iter.DeoptId(),
- iter.TokenPos(),
+ iter.TokenPos().ToCString(),
iter.TryIndex());
}
}
@@ -11441,7 +11451,7 @@ const char* PcDescriptors::ToCString() const {
iter.PcOffset(),
KindAsStr(iter.Kind()),
iter.DeoptId(),
- iter.TokenPos(),
+ iter.TokenPos().ToCString(),
iter.TryIndex());
}
return buffer;
@@ -11583,7 +11593,7 @@ void CodeSourceMap::PrintJSONImpl(JSONStream* stream, bool ref) const {
const char* CodeSourceMap::ToCString() const {
// "*" in a printf format specifier tells it to read the field width from
// the printf argument list.
-#define FORMAT "%#-*" Px "\t%" Pd "\n"
+#define FORMAT "%#-*" Px "\t%s\n"
if (Length() == 0) {
return "empty CodeSourceMap\n";
}
@@ -11596,7 +11606,7 @@ const char* CodeSourceMap::ToCString() const {
while (iter.MoveNext()) {
len += OS::SNPrint(NULL, 0, FORMAT, addr_width,
iter.PcOffset(),
- iter.TokenPos());
+ iter.TokenPos().ToCString());
}
}
// Allocate the buffer.
@@ -11607,7 +11617,7 @@ const char* CodeSourceMap::ToCString() const {
while (iter.MoveNext()) {
index += OS::SNPrint((buffer + index), (len - index), FORMAT, addr_width,
iter.PcOffset(),
- iter.TokenPos());
+ iter.TokenPos().ToCString());
}
return buffer;
#undef FORMAT
@@ -11797,8 +11807,8 @@ static int PrintVarInfo(char* buffer, int len,
LocalVarDescriptors::KindToCString(kind),
index,
info.scope_id,
- info.begin_pos,
- info.end_pos);
+ static_cast<int>(info.begin_pos.Pos()),
+ static_cast<int>(info.end_pos.Pos()));
} else if (kind == RawLocalVarDescriptors::kContextVar) {
return OS::SNPrint(buffer, len,
"%2" Pd " %-13s level=%-3d index=%-3d"
@@ -11807,8 +11817,8 @@ static int PrintVarInfo(char* buffer, int len,
LocalVarDescriptors::KindToCString(kind),
info.scope_id,
index,
- info.begin_pos,
- info.end_pos,
+ static_cast<int>(info.begin_pos.Pos()),
+ static_cast<int>(info.end_pos.Pos()),
var_name.ToCString());
} else {
return OS::SNPrint(buffer, len,
@@ -11818,8 +11828,8 @@ static int PrintVarInfo(char* buffer, int len,
LocalVarDescriptors::KindToCString(kind),
info.scope_id,
index,
- info.begin_pos,
- info.end_pos,
+ static_cast<int>(info.begin_pos.Pos()),
+ static_cast<int>(info.end_pos.Pos()),
var_name.ToCString());
}
}
@@ -11874,8 +11884,8 @@ void LocalVarDescriptors::PrintJSONImpl(JSONStream* stream,
JSONObject var(&members);
var.AddProperty("name", var_name.ToCString());
var.AddProperty("index", static_cast<intptr_t>(info.index()));
- var.AddProperty("beginPos", static_cast<intptr_t>(info.begin_pos));
- var.AddProperty("endPos", static_cast<intptr_t>(info.end_pos));
+ var.AddProperty("beginPos", info.begin_pos);
+ var.AddProperty("endPos", info.end_pos);
var.AddProperty("scopeId", static_cast<intptr_t>(info.scope_id));
var.AddProperty("kind", KindToCString(info.kind()));
}
@@ -12952,7 +12962,7 @@ void ICData::PrintJSONImpl(JSONStream* stream, bool ref) const {
void ICData::PrintToJSONArray(const JSONArray& jsarray,
- intptr_t token_pos,
+ TokenPosition token_pos,
bool is_static_call) const {
Isolate* isolate = Isolate::Current();
Class& cls = Class::Handle();
@@ -12988,7 +12998,7 @@ void ICData::PrintToJSONArray(const JSONArray& jsarray,
void ICData::PrintToJSONArrayNew(const JSONArray& jsarray,
- intptr_t token_pos,
+ TokenPosition token_pos,
bool is_static_call) const {
Isolate* isolate = Isolate::Current();
Class& cls = Class::Handle();
@@ -12996,7 +13006,7 @@ void ICData::PrintToJSONArrayNew(const JSONArray& jsarray,
JSONObject jsobj(&jsarray);
jsobj.AddProperty("name", String::Handle(target_name()).ToCString());
- jsobj.AddProperty("tokenPos", token_pos);
+ jsobj.AddProperty("tokenPos", token_pos.value());
// TODO(rmacnak): Figure out how to stringify DeoptReasons().
// jsobj.AddProperty("deoptReasons", ...);
@@ -13616,7 +13626,7 @@ RawCode* Code::FindCode(uword pc, int64_t timestamp) {
}
-intptr_t Code::GetTokenIndexOfPC(uword pc) const {
+TokenPosition Code::GetTokenIndexOfPC(uword pc) const {
uword pc_offset = pc - EntryPoint();
const PcDescriptors& descriptors = PcDescriptors::Handle(pc_descriptors());
PcDescriptors::Iterator iter(descriptors, RawPcDescriptors::kAnyKind);
@@ -13625,7 +13635,7 @@ intptr_t Code::GetTokenIndexOfPC(uword pc) const {
return iter.TokenPos();
}
}
- return -1;
+ return TokenPosition::kNoSource;
}
@@ -14123,15 +14133,15 @@ RawContextScope* ContextScope::New(intptr_t num_variables, bool is_implicit) {
}
-intptr_t ContextScope::TokenIndexAt(intptr_t scope_index) const {
- return Smi::Value(VariableDescAddr(scope_index)->token_pos);
+TokenPosition ContextScope::TokenIndexAt(intptr_t scope_index) const {
+ return TokenPosition(Smi::Value(VariableDescAddr(scope_index)->token_pos));
}
void ContextScope::SetTokenIndexAt(intptr_t scope_index,
- intptr_t token_pos) const {
+ TokenPosition token_pos) const {
StoreSmi(&VariableDescAddr(scope_index)->token_pos,
- Smi::New(token_pos));
+ Smi::New(token_pos.value()));
}
@@ -14222,12 +14232,12 @@ const char* ContextScope::ToCString() const {
for (int i = 0; i < num_variables(); i++) {
name = NameAt(i);
const char* cname = name.ToCString();
- intptr_t pos = TokenIndexAt(i);
+ TokenPosition pos = TokenIndexAt(i);
intptr_t idx = ContextIndexAt(i);
intptr_t lvl = ContextLevelAt(i);
char* chars = OS::SCreate(Thread::Current()->zone(),
- "%s\nvar %s token-pos %" Pd " ctx lvl %" Pd " index %" Pd "",
- prev_cstr, cname, pos, lvl, idx);
+ "%s\nvar %s token-pos %s ctx lvl %" Pd " index %" Pd "",
+ prev_cstr, cname, pos.ToCString(), lvl, idx);
prev_cstr = chars;
}
return prev_cstr;
@@ -14548,7 +14558,7 @@ RawLanguageError* LanguageError::New() {
RawLanguageError* LanguageError::NewFormattedV(const Error& prev_error,
const Script& script,
- intptr_t token_pos,
+ TokenPosition token_pos,
bool report_after_token,
Report::Kind kind,
Heap::Space space,
@@ -14576,7 +14586,7 @@ RawLanguageError* LanguageError::NewFormattedV(const Error& prev_error,
RawLanguageError* LanguageError::NewFormatted(const Error& prev_error,
const Script& script,
- intptr_t token_pos,
+ TokenPosition token_pos,
bool report_after_token,
Report::Kind kind,
Heap::Space space,
@@ -14620,8 +14630,8 @@ void LanguageError::set_script(const Script& value) const {
}
-void LanguageError::set_token_pos(intptr_t token_pos) const {
- ASSERT(!Token::IsClassifying(token_pos));
+void LanguageError::set_token_pos(TokenPosition token_pos) const {
+ ASSERT(!token_pos.IsClassifying());
StoreNonPointer(&raw_ptr()->token_pos_, token_pos);
}
@@ -15032,7 +15042,7 @@ RawAbstractType* Instance::GetType() const {
ASSERT(scope_cls.NumTypeArguments() > 0);
TypeArguments& type_arguments = TypeArguments::Handle(GetTypeArguments());
type = FunctionType::New(
- scope_cls, type_arguments, signature, Token::kNoSourcePos);
+ scope_cls, type_arguments, signature, TokenPosition::kNoSource);
type.SetIsFinalized();
type ^= type.Canonicalize();
return type.raw();
@@ -15046,7 +15056,7 @@ RawAbstractType* Instance::GetType() const {
if (cls.NumTypeArguments() > 0) {
type_arguments = GetTypeArguments();
}
- type = Type::New(cls, type_arguments, Token::kNoSourcePos);
+ type = Type::New(cls, type_arguments, TokenPosition::kNoSource);
type.SetIsFinalized();
type ^= type.Canonicalize();
}
@@ -15373,8 +15383,8 @@ const char* Instance::ToCString() const {
if (num_type_arguments > 0) {
type_arguments = GetTypeArguments();
}
- const Type& type =
- Type::Handle(Type::New(cls, type_arguments, Token::kNoSourcePos));
+ const Type& type = Type::Handle(
+ Type::New(cls, type_arguments, TokenPosition::kNoSource));
const String& type_name = String::Handle(type.UserVisibleName());
return OS::SCreate(Thread::Current()->zone(),
"Instance of '%s'", type_name.ToCString());
@@ -15513,10 +15523,10 @@ void AbstractType::set_arguments(const TypeArguments& value) const {
UNREACHABLE();
}
-intptr_t AbstractType::token_pos() const {
+TokenPosition AbstractType::token_pos() const {
// AbstractType is an abstract class.
UNREACHABLE();
- return -1;
+ return TokenPosition::kNoSource;
}
@@ -16110,7 +16120,7 @@ RawType* Type::NewNonParameterizedType(const Class& type_class) {
const TypeArguments& no_type_arguments = TypeArguments::Handle();
type ^= Type::New(Object::Handle(type_class.raw()),
no_type_arguments,
- Token::kNoSourcePos);
+ TokenPosition::kNoSource);
type.SetIsFinalized();
type ^= type.Canonicalize();
}
@@ -16568,7 +16578,7 @@ RawType* Type::New(Heap::Space space) {
RawType* Type::New(const Object& clazz,
const TypeArguments& arguments,
- intptr_t token_pos,
+ TokenPosition token_pos,
Heap::Space space) {
const Type& result = Type::Handle(Type::New(space));
result.set_type_class(clazz);
@@ -16579,8 +16589,8 @@ RawType* Type::New(const Object& clazz,
}
-void Type::set_token_pos(intptr_t token_pos) const {
- ASSERT(!Token::IsClassifying(token_pos));
+void Type::set_token_pos(TokenPosition token_pos) const {
+ ASSERT(!token_pos.IsClassifying());
StoreNonPointer(&raw_ptr()->token_pos_, token_pos);
}
@@ -16998,10 +17008,8 @@ RawAbstractType* FunctionType::Canonicalize(TrailPtr trail) const {
// Replace the actual function by a signature function.
const Function& fun = Function::Handle(zone, signature());
if (!fun.IsSignatureFunction()) {
- Function& sig_fun =
- Function::Handle(zone,
- Function::NewSignatureFunction(scope_cls,
- Token::kNoSourcePos));
+ Function& sig_fun = Function::Handle(zone,
+ Function::NewSignatureFunction(scope_cls, TokenPosition::kNoSource));
type = fun.result_type();
type = type.Canonicalize(trail);
sig_fun.set_result_type(type);
@@ -17112,7 +17120,7 @@ RawFunctionType* FunctionType::New(Heap::Space space) {
RawFunctionType* FunctionType::New(const Class& clazz,
const TypeArguments& arguments,
const Function& signature,
- intptr_t token_pos,
+ TokenPosition token_pos,
Heap::Space space) {
const FunctionType& result = FunctionType::Handle(FunctionType::New(space));
result.set_scope_class(clazz);
@@ -17125,8 +17133,8 @@ RawFunctionType* FunctionType::New(const Class& clazz,
}
-void FunctionType::set_token_pos(intptr_t token_pos) const {
- ASSERT(!Token::IsClassifying(token_pos));
+void FunctionType::set_token_pos(TokenPosition token_pos) const {
+ ASSERT(!token_pos.IsClassifying());
StoreNonPointer(&raw_ptr()->token_pos_, token_pos);
}
@@ -17546,7 +17554,7 @@ RawTypeParameter* TypeParameter::New(const Class& parameterized_class,
intptr_t index,
const String& name,
const AbstractType& bound,
- intptr_t token_pos) {
+ TokenPosition token_pos) {
const TypeParameter& result = TypeParameter::Handle(TypeParameter::New());
result.set_parameterized_class(parameterized_class);
result.set_index(index);
@@ -17559,8 +17567,8 @@ RawTypeParameter* TypeParameter::New(const Class& parameterized_class,
}
-void TypeParameter::set_token_pos(intptr_t token_pos) const {
- ASSERT(!Token::IsClassifying(token_pos));
+void TypeParameter::set_token_pos(TokenPosition token_pos) const {
+ ASSERT(!token_pos.IsClassifying());
StoreNonPointer(&raw_ptr()->token_pos_, token_pos);
}
@@ -17837,7 +17845,7 @@ void BoundedType::PrintJSONImpl(JSONStream* stream, bool ref) const {
}
-intptr_t MixinAppType::token_pos() const {
+TokenPosition MixinAppType::token_pos() const {
return AbstractType::Handle(MixinTypeAt(0)).token_pos();
}
@@ -22347,14 +22355,14 @@ static intptr_t PrintOneStacktrace(Zone* zone,
const Function& function,
const Code& code,
intptr_t frame_index) {
- const intptr_t token_pos = code.GetTokenIndexOfPC(pc);
+ const TokenPosition token_pos = code.GetTokenIndexOfPC(pc);
const Script& script = Script::Handle(zone, function.script());
const String& function_name =
String::Handle(zone, function.QualifiedUserVisibleName());
const String& url = String::Handle(zone, script.url());
intptr_t line = -1;
intptr_t column = -1;
- if (token_pos >= 0) {
+ if (token_pos.IsReal()) {
if (script.HasSource()) {
script.GetTokenLocation(token_pos, &line, &column);
} else {
« no previous file with comments | « runtime/vm/object.h ('k') | runtime/vm/object_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698