Index: runtime/vm/object.cc |
=================================================================== |
--- runtime/vm/object.cc (revision 9315) |
+++ runtime/vm/object.cc (working copy) |
@@ -440,8 +440,8 @@ |
const Script& script, |
const Library& lib) { |
String& str = String::Handle(); |
- str ^= String::NewSymbol(public_class_name); |
- str ^= lib.PrivateName(str); |
+ str = String::NewSymbol(public_class_name); |
+ str = lib.PrivateName(str); |
cls.set_name(str); |
cls.set_script(script); |
lib.AddClass(cls); |
@@ -2684,11 +2684,9 @@ |
if (!other.IsType()) { |
return false; |
} |
- Type& other_type = Type::Handle(); |
- other_type ^= other.raw(); |
// Both type classes may not be resolved yet. |
String& name = String::Handle(TypeClassName()); |
- String& other_name = String::Handle(other_type.TypeClassName()); |
+ String& other_name = String::Handle(Type::Cast(other).TypeClassName()); |
if (!name.Equals(other_name)) { |
return false; |
} |
@@ -4413,9 +4411,8 @@ |
} |
return String::NewSymbol(Token::Str(kind)); |
} else { |
- LiteralToken& token = LiteralToken::Handle(); |
- token ^= obj.raw(); // Must be a literal token. |
- return token.literal(); |
+ // Must be a literal token. |
+ return LiteralToken::Cast(obj).literal(); |
} |
} |
@@ -4691,9 +4688,7 @@ |
int ix = next_ix_++; |
Object& obj = Object::Handle(array_.At(ix)); |
MoveToNextClass(); |
- Class& cls = Class::Handle(); |
- cls ^= obj.raw(); |
- return cls.raw(); |
+ return Class::Cast(obj).raw(); |
} |
@@ -4717,9 +4712,7 @@ |
int ix = next_ix_++; |
Object& obj = Object::Handle(array_.At(ix)); |
Advance(); |
- LibraryPrefix& prefix = LibraryPrefix::Handle(); |
- prefix ^= obj.raw(); |
- return prefix.raw(); |
+ return LibraryPrefix::Cast(obj).raw(); |
} |
@@ -5119,18 +5112,14 @@ |
RawFunction* Library::LookupLocalFunction(const String& name) const { |
Isolate* isolate = Isolate::Current(); |
- Function& function = Function::Handle(isolate, Function::null()); |
Object& obj = Object::Handle(isolate, Object::null()); |
obj = LookupLocalObject(name); |
if (obj.IsNull() && ShouldBePrivate(name)) { |
String& private_name = String::Handle(isolate, PrivateName(name)); |
obj = LookupLocalObject(private_name); |
} |
- if (!obj.IsNull()) { |
- if (obj.IsFunction()) { |
- function ^= obj.raw(); |
- return function.raw(); |
- } |
+ if (obj.IsFunction()) { |
+ return Function::Cast(obj).raw(); |
} |
// No function found. |
@@ -5297,8 +5286,7 @@ |
// See if the class is available in this library or in the top level |
// scope of any imported library. |
Isolate* isolate = Isolate::Current(); |
- Class& cls = Class::Handle(isolate); |
- cls = LookupClass(name); |
+ const Class& cls = Class::Handle(isolate, LookupClass(name)); |
if (!cls.IsNull()) { |
return cls.raw(); |
} |
@@ -5308,11 +5296,8 @@ |
if (ShouldBePrivate(name)) { |
String& private_name = String::Handle(isolate, PrivateName(name)); |
const Object& obj = Object::Handle(LookupLocalObject(private_name)); |
- if (!obj.IsNull()) { |
- if (obj.IsClass()) { |
- cls ^= obj.raw(); |
- return cls.raw(); |
- } |
+ if (obj.IsClass()) { |
+ return Class::Cast(obj).raw(); |
} |
} |
@@ -5321,9 +5306,9 @@ |
RawLibraryPrefix* Library::LookupLocalLibraryPrefix(const String& name) const { |
- Object& obj = Object::Handle(LookupLocalObject(name)); |
- if (!obj.IsNull() && obj.IsLibraryPrefix()) { |
- return LibraryPrefix::CheckedHandle(obj.raw()).raw(); |
+ const Object& obj = Object::Handle(LookupLocalObject(name)); |
+ if (obj.IsLibraryPrefix()) { |
+ return LibraryPrefix::Cast(obj).raw(); |
} |
return LibraryPrefix::null(); |
} |
@@ -5377,12 +5362,11 @@ |
return LibraryPrefix::null(); |
} |
DictionaryIterator it(*this); |
- LibraryPrefix& lib_prefix = LibraryPrefix::Handle(); |
Object& obj = Object::Handle(); |
while (it.HasNext()) { |
obj = it.GetNext(); |
if (obj.IsLibraryPrefix()) { |
- lib_prefix ^= obj.raw(); |
+ const LibraryPrefix& lib_prefix = LibraryPrefix::Cast(obj); |
if (lib_prefix.ContainsLibrary(imported)) { |
return lib_prefix.raw(); |
} |
@@ -7391,10 +7375,7 @@ |
if (other.IsNull() || !other.IsSmi()) { |
return false; |
} |
- |
- Smi& other_smi = Smi::Handle(); |
- other_smi ^= other.raw(); |
- return (this->Value() == other_smi.Value()); |
+ return (this->Value() == Smi::Cast(other).Value()); |
} |
@@ -7417,9 +7398,7 @@ |
return Smi::IsValid64(mint_value); |
} |
if (integer.IsBigint()) { |
- Bigint& big = Bigint::Handle(); |
- big ^= integer.raw(); |
- return BigintOperations::FitsIntoSmi(big); |
+ return BigintOperations::FitsIntoSmi(Bigint::Cast(integer)); |
} |
UNREACHABLE(); |
return false; |
@@ -7428,11 +7407,10 @@ |
int Smi::CompareWith(const Integer& other) const { |
if (other.IsSmi()) { |
- Smi& smi = Smi::Handle(); |
- smi ^= other.raw(); |
- if (this->Value() < smi.Value()) { |
+ const Smi& other_smi = Smi::Cast(other); |
+ if (this->Value() < other_smi.Value()) { |
return -1; |
- } else if (this->Value() > smi.Value()) { |
+ } else if (this->Value() > other_smi.Value()) { |
return 1; |
} else { |
return 0; |
@@ -7523,15 +7501,10 @@ |
// Both handles point to the same raw instance. |
return true; |
} |
- |
if (!other.IsMint() || other.IsNull()) { |
return false; |
} |
- |
- Mint& other_mint = Mint::Handle(); |
- other_mint ^= other.raw(); |
- |
- return value() == other_mint.value(); |
+ return value() == Mint::Cast(other).value(); |
} |
@@ -7559,9 +7532,7 @@ |
} |
} |
if (other.IsBigint()) { |
- Bigint& bigi = Bigint::Handle(); |
- bigi ^= other.raw(); |
- ASSERT(!BigintOperations::FitsIntoMint(bigi)); |
+ ASSERT(!BigintOperations::FitsIntoMint(Bigint::Cast(other))); |
if (this->IsNegative() == other.IsNegative()) { |
return this->IsNegative() ? 1 : -1; |
} |
@@ -7604,9 +7575,7 @@ |
if (other.IsNull() || !other.IsDouble()) { |
return false; |
} |
- Double& other_dbl = Double::Handle(); |
- other_dbl ^= other.raw(); |
- return EqualsToDouble(other_dbl.value()); |
+ return EqualsToDouble(Double::Cast(other).value()); |
} |
@@ -7717,8 +7686,7 @@ |
return false; |
} |
- Bigint& other_bgi = Bigint::Handle(); |
- other_bgi ^= other.raw(); |
+ const Bigint& other_bgi = Bigint::Cast(other); |
intptr_t len = this->Length(); |
if (len != other_bgi.Length()) { |
@@ -7762,9 +7730,7 @@ |
ASSERT(!FitsIntoSmi(*this)); |
ASSERT(!BigintOperations::FitsIntoMint(*this)); |
if (other.IsBigint()) { |
- Bigint& big = Bigint::Handle(); |
- big ^= other.raw(); |
- return BigintOperations::Compare(*this, big); |
+ return BigintOperations::Compare(*this, Bigint::Cast(other)); |
} |
if (this->IsNegative() == other.IsNegative()) { |
return this->IsNegative() ? -1 : 1; |
@@ -7896,8 +7862,7 @@ |
return false; |
} |
- String& other_string = String::Handle(); |
- other_string ^= other.raw(); |
+ const String& other_string = String::Cast(other); |
if (this->HasHash() && other_string.HasHash() && |
(this->Hash() != other_string.Hash())) { |
// Both sides have a hash code and it does not match. |
@@ -8173,23 +8138,20 @@ |
ASSERT(len >= 0); |
ASSERT(len <= (dst.Length() - dst_offset)); |
if (dst.IsOneByteString()) { |
- OneByteString& onestr = OneByteString::Handle(); |
- onestr ^= dst.raw(); |
+ const OneByteString& onestr = OneByteString::Cast(dst); |
NoGCScope no_gc; |
if (len > 0) { |
memmove(onestr.CharAddr(dst_offset), characters, len); |
} |
} else if (dst.IsTwoByteString()) { |
- TwoByteString& twostr = TwoByteString::Handle(); |
- twostr ^= dst.raw(); |
+ const TwoByteString& twostr = TwoByteString::Cast(dst); |
NoGCScope no_gc; |
for (intptr_t i = 0; i < len; ++i) { |
*twostr.CharAddr(i + dst_offset) = characters[i]; |
} |
} else { |
ASSERT(dst.IsFourByteString()); |
- FourByteString& fourstr = FourByteString::Handle(); |
- fourstr ^= dst.raw(); |
+ const FourByteString& fourstr = FourByteString::Cast(dst); |
NoGCScope no_gc; |
for (intptr_t i = 0; i < len; ++i) { |
*fourstr.CharAddr(i + dst_offset) = characters[i]; |
@@ -8205,24 +8167,21 @@ |
ASSERT(len >= 0); |
ASSERT(len <= (dst.Length() - dst_offset)); |
if (dst.IsOneByteString()) { |
- OneByteString& onestr = OneByteString::Handle(); |
- onestr ^= dst.raw(); |
+ const OneByteString& onestr = OneByteString::Cast(dst); |
NoGCScope no_gc; |
for (intptr_t i = 0; i < len; ++i) { |
ASSERT(characters[i] <= 0xFF); |
*onestr.CharAddr(i + dst_offset) = characters[i]; |
} |
} else if (dst.IsTwoByteString()) { |
- TwoByteString& twostr = TwoByteString::Handle(); |
- twostr ^= dst.raw(); |
+ const TwoByteString& twostr = TwoByteString::Cast(dst); |
NoGCScope no_gc; |
if (len > 0) { |
memmove(twostr.CharAddr(dst_offset), characters, len * 2); |
} |
} else { |
ASSERT(dst.IsFourByteString()); |
- FourByteString& fourstr = FourByteString::Handle(); |
- fourstr ^= dst.raw(); |
+ const FourByteString& fourstr = FourByteString::Cast(dst); |
NoGCScope no_gc; |
for (intptr_t i = 0; i < len; ++i) { |
*fourstr.CharAddr(i + dst_offset) = characters[i]; |
@@ -8238,16 +8197,14 @@ |
ASSERT(len >= 0); |
ASSERT(len <= (dst.Length() - dst_offset)); |
if (dst.IsOneByteString()) { |
- OneByteString& onestr = OneByteString::Handle(); |
- onestr ^= dst.raw(); |
+ const OneByteString& onestr = OneByteString::Cast(dst); |
NoGCScope no_gc; |
for (intptr_t i = 0; i < len; ++i) { |
ASSERT(characters[i] <= 0xFF); |
*onestr.CharAddr(i + dst_offset) = characters[i]; |
} |
} else if (dst.IsTwoByteString()) { |
- TwoByteString& twostr = TwoByteString::Handle(); |
- twostr ^= dst.raw(); |
+ const TwoByteString& twostr = TwoByteString::Cast(dst); |
NoGCScope no_gc; |
for (intptr_t i = 0; i < len; ++i) { |
ASSERT(characters[i] <= 0xFFFF); |
@@ -8255,8 +8212,7 @@ |
} |
} else { |
ASSERT(dst.IsFourByteString()); |
- FourByteString& fourstr = FourByteString::Handle(); |
- fourstr ^= dst.raw(); |
+ const FourByteString& fourstr = FourByteString::Cast(dst); |
NoGCScope no_gc; |
if (len > 0) { |
memmove(fourstr.CharAddr(dst_offset), characters, len * 4); |
@@ -8277,41 +8233,36 @@ |
intptr_t char_size = src.CharSize(); |
if (char_size == kOneByteChar) { |
if (src.IsOneByteString()) { |
- OneByteString& onestr = OneByteString::Handle(); |
- onestr ^= src.raw(); |
+ const OneByteString& onestr = OneByteString::Cast(src); |
NoGCScope no_gc; |
String::Copy(dst, dst_offset, onestr.CharAddr(0) + src_offset, len); |
} else { |
ASSERT(src.IsExternalOneByteString()); |
- ExternalOneByteString& onestr = ExternalOneByteString::Handle(); |
- onestr ^= src.raw(); |
+ const ExternalOneByteString& onestr = ExternalOneByteString::Cast(src); |
NoGCScope no_gc; |
String::Copy(dst, dst_offset, onestr.CharAddr(0) + src_offset, len); |
} |
} else if (char_size == kTwoByteChar) { |
if (src.IsTwoByteString()) { |
- TwoByteString& twostr = TwoByteString::Handle(); |
- twostr ^= src.raw(); |
+ const TwoByteString& twostr = TwoByteString::Cast(src); |
NoGCScope no_gc; |
String::Copy(dst, dst_offset, twostr.CharAddr(0) + src_offset, len); |
} else { |
ASSERT(src.IsExternalTwoByteString()); |
- ExternalTwoByteString& twostr = ExternalTwoByteString::Handle(); |
- twostr ^= src.raw(); |
+ const ExternalTwoByteString& twostr = ExternalTwoByteString::Cast(src); |
NoGCScope no_gc; |
String::Copy(dst, dst_offset, twostr.CharAddr(0) + src_offset, len); |
} |
} else { |
ASSERT(char_size == kFourByteChar); |
if (src.IsFourByteString()) { |
- FourByteString& fourstr = FourByteString::Handle(); |
- fourstr ^= src.raw(); |
+ const FourByteString& fourstr = FourByteString::Cast(src); |
NoGCScope no_gc; |
String::Copy(dst, dst_offset, fourstr.CharAddr(0) + src_offset, len); |
} else { |
ASSERT(src.IsExternalFourByteString()); |
- ExternalFourByteString& fourstr = ExternalFourByteString::Handle(); |
- fourstr ^= src.raw(); |
+ const ExternalFourByteString& fourstr = |
+ ExternalFourByteString::Cast(src); |
NoGCScope no_gc; |
String::Copy(dst, dst_offset, fourstr.CharAddr(0) + src_offset, len); |
} |
@@ -9134,8 +9085,7 @@ |
return false; |
} |
- Array& other_arr = Array::Handle(); |
- other_arr ^= other.raw(); |
+ const Array& other_arr = Array::Cast(other); |
intptr_t len = this->Length(); |
if (len != other_arr.Length()) { |
@@ -9349,8 +9299,7 @@ |
return false; |
} |
- GrowableObjectArray& other_arr = GrowableObjectArray::Handle(); |
- other_arr ^= other.raw(); |
+ const GrowableObjectArray& other_arr = GrowableObjectArray::Cast(other); |
// The capacity and length of both objects must be equal. |
if (Capacity() != other_arr.Capacity() || Length() != other_arr.Length()) { |
@@ -10236,8 +10185,7 @@ |
if (other.IsNull() || !other.IsJSRegExp()) { |
return false; |
} |
- JSRegExp& other_js = JSRegExp::Handle(); |
- other_js ^= other.raw(); |
+ const JSRegExp& other_js = JSRegExp::Cast(other); |
// Match the pattern. |
const String& str1 = String::Handle(pattern()); |
const String& str2 = String::Handle(other_js.pattern()); |