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

Unified Diff: runtime/vm/object.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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/intrinsifier.cc ('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 947b877926c5589049dbef83f6468f71388af598..38913816fb130fba099d91114347aad5d0f25e9f 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -1176,7 +1176,7 @@ RawError* Object::Init(Isolate* isolate) {
// could expect. Use with caution.
type ^= Type::New(Object::Handle(zone, cls.raw()),
TypeArguments::Handle(zone),
- Scanner::kNoSourcePos);
+ Token::kNoSourcePos);
type.SetIsFinalized();
type ^= type.Canonicalize();
object_store->set_array_type(type);
@@ -1987,7 +1987,7 @@ RawAbstractType* Class::RareType() const {
const Type& type = Type::Handle(Type::New(
*this,
Object::null_type_arguments(),
- Scanner::kNoSourcePos));
+ Token::kNoSourcePos));
return ClassFinalizer::FinalizeType(*this,
type,
ClassFinalizer::kCanonicalize);
@@ -1999,7 +1999,7 @@ RawAbstractType* Class::DeclarationType() const {
const Type& type = Type::Handle(Type::New(
*this,
args,
- Scanner::kNoSourcePos));
+ Token::kNoSourcePos));
return ClassFinalizer::FinalizeType(*this,
type,
ClassFinalizer::kCanonicalize);
@@ -2037,7 +2037,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(Scanner::kNoSourcePos);
+ result.set_token_pos(Token::kNoSourcePos);
result.InitEmptyFields();
Isolate::Current()->RegisterClass(result);
return result.raw();
@@ -2695,7 +2695,7 @@ RawFunction* Function::CreateMethodExtractor(const String& getter_name) const {
false, // Not external.
false, // Not native.
owner,
- 0)); // token_pos
+ ClassifyingTokenPositions::kMethodExtractor)); // token_pos
// Initialize signature: receiver is a single fixed parameter.
const intptr_t kNumParameters = 1;
@@ -3110,7 +3110,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(Scanner::kNoSourcePos);
+ result.set_token_pos(Token::kNoSourcePos);
result.InitEmptyFields();
Isolate::Current()->RegisterClass(result);
return result.raw();
@@ -3200,7 +3200,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(), Scanner::kNoSourcePos);
+ cls = New(name, Script::Handle(), Token::kNoSourcePos);
cls.SetFields(Object::empty_array());
cls.SetFunctions(Object::empty_array());
// Set super class to Object.
@@ -3452,7 +3452,7 @@ void Class::set_script(const Script& value) const {
void Class::set_token_pos(intptr_t token_pos) const {
- ASSERT(Scanner::ValidSourcePosition(token_pos));
+ ASSERT(!Token::IsClassifying(token_pos));
StoreNonPointer(&raw_ptr()->token_pos_, token_pos);
}
@@ -4388,7 +4388,7 @@ RawUnresolvedClass* UnresolvedClass::New() {
void UnresolvedClass::set_token_pos(intptr_t token_pos) const {
- ASSERT(Scanner::ValidSourcePosition(token_pos));
+ ASSERT(!Token::IsClassifying(token_pos));
StoreNonPointer(&raw_ptr()->token_pos_, token_pos);
}
@@ -5790,7 +5790,7 @@ void Function::set_recognized_kind(MethodRecognizer::Kind value) const {
void Function::set_token_pos(intptr_t token_pos) const {
- ASSERT(token_pos >= 0);
+ ASSERT(!Token::IsClassifying(token_pos) || IsMethodExtractor());
StoreNonPointer(&raw_ptr()->token_pos_, token_pos);
}
@@ -8551,7 +8551,10 @@ TokenStream::Iterator::Iterator(const TokenStream& tokens,
cur_token_kind_(Token::kILLEGAL),
cur_token_obj_index_(-1),
stream_type_(stream_type) {
- SetCurrentPosition(token_pos);
+ ASSERT(token_pos != Token::kNoSourcePos);
+ if (token_pos >= 0) {
+ SetCurrentPosition(token_pos);
+ }
}
@@ -9243,7 +9246,7 @@ static void ReportTooManyImports(const Library& lib) {
const String& url = String::Handle(lib.url());
Report::MessageF(Report::kError,
Script::Handle(lib.LookupScript(url)),
- Scanner::kNoSourcePos,
+ Token::kNoSourcePos,
Report::AtLocation,
"too many imports in library '%s'",
url.ToCString());
@@ -11264,10 +11267,10 @@ void PcDescriptors::EncodeInteger(GrowableArray<uint8_t>* data,
intptr_t value) {
bool is_last_part = false;
while (!is_last_part) {
- intptr_t part = value & 0x7f;
+ uint8_t part = value & 0x7f;
value >>= 7;
if ((value == 0 && (part & 0x40) == 0) ||
- (value == -1 && (part & 0x40) != 0)) {
+ (value == static_cast<intptr_t>(-1) && (part & 0x40) != 0)) {
is_last_part = true;
} else {
part |= 0x80;
@@ -11284,15 +11287,15 @@ intptr_t PcDescriptors::DecodeInteger(intptr_t* byte_index) const {
ASSERT(*byte_index < Length());
uword shift = 0;
intptr_t value = 0;
- intptr_t part = 0;
+ uint8_t part = 0;
do {
part = data[(*byte_index)++];
- value |= (part & 0x7f) << shift;
+ value |= static_cast<intptr_t>(part & 0x7f) << shift;
shift += 7;
} while ((part & 0x80) != 0);
- if (shift < sizeof(value) * 8 && (part & 0x40) != 0) {
- value |= -(1 << shift);
+ if ((shift < (sizeof(value) * 8)) && ((part & 0x40) != 0)) {
+ value |= static_cast<intptr_t>(-1) << shift;
}
return value;
}
@@ -14588,7 +14591,7 @@ void LanguageError::set_script(const Script& value) const {
void LanguageError::set_token_pos(intptr_t token_pos) const {
- ASSERT(Scanner::ValidSourcePosition(token_pos));
+ ASSERT(!Token::IsClassifying(token_pos));
StoreNonPointer(&raw_ptr()->token_pos_, token_pos);
}
@@ -14992,7 +14995,7 @@ RawType* Instance::GetType() const {
if (cls.NumTypeArguments() > 0) {
type_arguments = GetTypeArguments();
}
- type = Type::New(cls, type_arguments, Scanner::kNoSourcePos);
+ type = Type::New(cls, type_arguments, Token::kNoSourcePos);
type.SetIsFinalized();
type ^= type.Canonicalize();
}
@@ -15251,7 +15254,7 @@ const char* Instance::ToCString() const {
type_arguments = GetTypeArguments();
}
const Type& type =
- Type::Handle(Type::New(cls, type_arguments, Scanner::kNoSourcePos));
+ Type::Handle(Type::New(cls, type_arguments, Token::kNoSourcePos));
const String& type_name = String::Handle(type.UserVisibleName());
return OS::SCreate(Thread::Current()->zone(),
"Instance of '%s'", type_name.ToCString());
@@ -15913,7 +15916,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,
- Scanner::kNoSourcePos);
+ Token::kNoSourcePos);
type.SetIsFinalized();
type ^= type.Canonicalize();
}
@@ -16422,7 +16425,7 @@ RawType* Type::New(const Object& clazz,
void Type::set_token_pos(intptr_t token_pos) const {
- ASSERT(Scanner::ValidSourcePosition(token_pos));
+ ASSERT(!Token::IsClassifying(token_pos));
StoreNonPointer(&raw_ptr()->token_pos_, token_pos);
}
@@ -16854,7 +16857,7 @@ RawTypeParameter* TypeParameter::New(const Class& parameterized_class,
void TypeParameter::set_token_pos(intptr_t token_pos) const {
- ASSERT(Scanner::ValidSourcePosition(token_pos));
+ ASSERT(!Token::IsClassifying(token_pos));
StoreNonPointer(&raw_ptr()->token_pos_, token_pos);
}
« no previous file with comments | « runtime/vm/intrinsifier.cc ('k') | runtime/vm/object_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698