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

Unified Diff: vm/object.cc

Issue 12052033: Added macros OBJECT_IMPLEMENTATION and FINAL_OBJECT_IMPLEMENTATION (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: Created 7 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 | « vm/object.h ('k') | vm/parser.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: vm/object.cc
===================================================================
--- vm/object.cc (revision 17436)
+++ vm/object.cc (working copy)
@@ -244,16 +244,16 @@
Smi::handle_vtable_ = fake_smi.vtable();
}
+ Isolate* isolate = Isolate::Current();
+ Heap* heap = isolate->heap();
+
// Allocate the read only object handles here.
- empty_array_ = reinterpret_cast<Array*>(Dart::AllocateReadOnlyHandle());
- sentinel_ = reinterpret_cast<Instance*>(Dart::AllocateReadOnlyHandle());
- transition_sentinel_ =
- reinterpret_cast<Instance*>(Dart::AllocateReadOnlyHandle());
- bool_true_ = reinterpret_cast<Bool*>(Dart::AllocateReadOnlyHandle());
- bool_false_ = reinterpret_cast<Bool*>(Dart::AllocateReadOnlyHandle());
+ empty_array_ = Array::ReadOnlyHandle(isolate);
+ sentinel_ = Instance::ReadOnlyHandle(isolate);
+ transition_sentinel_ = Instance::ReadOnlyHandle(isolate);
+ bool_true_ = Bool::ReadOnlyHandle(isolate);
+ bool_false_ = Bool::ReadOnlyHandle(isolate);
- Isolate* isolate = Isolate::Current();
- Heap* heap = isolate->heap();
// Allocate and initialize the null instance.
// 'null_' must be the first object allocated as it is used in allocation to
// clear the object.
@@ -1450,7 +1450,7 @@
const Array& field_array = Array::Handle(fields());
Field& field = Field::Handle();
for (intptr_t i = 0; i < field_array.Length(); ++i) {
- field |= field_array.At(i);
+ field ^= field_array.At(i);
if (!field.is_static()) {
return true;
}
@@ -1466,7 +1466,7 @@
Function& func = Function::Handle();
intptr_t len = value.Length();
for (intptr_t i = 0; i < len; i++) {
- func |= value.At(i);
+ func ^= value.At(i);
ASSERT(func.Owner() == raw());
}
#endif
@@ -1506,7 +1506,7 @@
intptr_t best_fit_token_pos = -1;
intptr_t best_fit_index = -1;
for (intptr_t i = 0; i < num_closures; i++) {
- closure |= closures.At(i);
+ closure ^= closures.At(i);
ASSERT(!closure.IsNull());
if ((closure.token_pos() <= token_pos) &&
(token_pos < closure.end_token_pos()) &&
@@ -1517,7 +1517,7 @@
}
closure = Function::null();
if (best_fit_index >= 0) {
- closure |= closures.At(best_fit_index);
+ closure ^= closures.At(best_fit_index);
}
return closure.raw();
}
@@ -1674,7 +1674,7 @@
Field& field = Field::Handle();
intptr_t len = flds.Length();
for (intptr_t i = 0; i < len; i++) {
- field |= flds.At(i);
+ field ^= flds.At(i);
// Offset is computed only for instance fields.
if (!field.is_static()) {
ASSERT(field.Offset() == 0);
@@ -1730,8 +1730,8 @@
const GrowableObjectArray& new_functions = GrowableObjectArray::Handle(
GrowableObjectArray::New(orig_len));
for (intptr_t i = 0; i < orig_len; i++) {
- orig_func |= orig_list.At(i);
- member_name = orig_func.name();
+ orig_func ^= orig_list.At(i);
+ member_name ^= orig_func.name();
func = patch.LookupFunction(member_name);
if (func.IsNull()) {
// Non-patched function is preserved, all patched functions are added in
@@ -1745,7 +1745,7 @@
}
}
for (intptr_t i = 0; i < patch_len; i++) {
- func |= patch_list.At(i);
+ func ^= patch_list.At(i);
func.set_owner(patch_class);
new_functions.Add(func);
}
@@ -1763,20 +1763,20 @@
Field& orig_field = Field::Handle();
new_list = Array::New(patch_len + orig_len);
for (intptr_t i = 0; i < patch_len; i++) {
- field |= patch_list.At(i);
+ field ^= patch_list.At(i);
field.set_owner(*this);
member_name = field.name();
// TODO(iposva): Verify non-public fields only.
// Verify no duplicate additions.
- orig_field = LookupField(member_name);
+ orig_field ^= LookupField(member_name);
if (!orig_field.IsNull()) {
return FormatPatchError("duplicate field: %s", member_name);
}
new_list.SetAt(i, field);
}
for (intptr_t i = 0; i < orig_len; i++) {
- field |= orig_list.At(i);
+ field ^= orig_list.At(i);
new_list.SetAt(patch_len + i, field);
}
SetFields(new_list);
@@ -1791,7 +1791,7 @@
Field& field = Field::Handle();
intptr_t len = value.Length();
for (intptr_t i = 0; i < len; i++) {
- field |= value.At(i);
+ field ^= value.At(i);
ASSERT(field.owner() == raw());
}
#endif
@@ -2322,7 +2322,7 @@
// Quick Symbol compare.
NoGCScope no_gc;
for (intptr_t i = 0; i < len; i++) {
- function |= funcs.At(i);
+ function ^= funcs.At(i);
if (function.name() == name.raw()) {
return function.raw();
}
@@ -2330,8 +2330,8 @@
} else {
String& function_name = String::Handle(isolate, String::null());
for (intptr_t i = 0; i < len; i++) {
- function |= funcs.At(i);
- function_name |= function.name();
+ function ^= funcs.At(i);
+ function_name ^= function.name();
if (function_name.Equals(name)) {
return function.raw();
}
@@ -2354,8 +2354,8 @@
String& function_name = String::Handle(isolate, String::null());
intptr_t len = funcs.Length();
for (intptr_t i = 0; i < len; i++) {
- function |= funcs.At(i);
- function_name |= function.name();
+ function ^= funcs.At(i);
+ function_name ^= function.name();
if (OneByteString::EqualsIgnoringPrivateKey(function_name, name)) {
return function.raw();
}
@@ -2384,8 +2384,8 @@
String& function_name = String::Handle(isolate, String::null());
intptr_t len = funcs.Length();
for (intptr_t i = 0; i < len; i++) {
- function |= funcs.At(i);
- function_name |= function.name();
+ function ^= funcs.At(i);
+ function_name ^= function.name();
if (MatchesAccessorName(function_name, prefix, prefix_length, name)) {
return function.raw();
}
@@ -2407,7 +2407,7 @@
Array& funcs = Array::Handle(functions());
intptr_t len = funcs.Length();
for (intptr_t i = 0; i < len; i++) {
- func |= funcs.At(i);
+ func ^= funcs.At(i);
if ((func.token_pos() <= token_pos) &&
(token_pos <= func.end_token_pos())) {
return func.raw();
@@ -2456,8 +2456,8 @@
String& field_name = String::Handle(isolate, String::null());
intptr_t len = flds.Length();
for (intptr_t i = 0; i < len; i++) {
- field |= flds.At(i);
- field_name |= field.name();
+ field ^= flds.At(i);
+ field_name ^= field.name();
if (OneByteString::EqualsIgnoringPrivateKey(field_name, name)) {
return field.raw();
}
@@ -3008,7 +3008,7 @@
// Last element of the array is the number of used elements.
intptr_t table_size = table.Length() - 1;
Smi& used = Smi::Handle(isolate);
- used |= table.At(table_size);
+ used ^= table.At(table_size);
intptr_t used_elements = used.Value() + 1;
used = Smi::New(used_elements);
table.SetAt(table_size, used);
@@ -3511,7 +3511,7 @@
RawString* Function::ParameterNameAt(intptr_t index) const {
const Array& parameter_names = Array::Handle(raw_ptr()->parameter_names_);
String& parameter_name = String::Handle();
- parameter_name |= parameter_names.At(index);
+ parameter_name ^= parameter_names.At(index);
return parameter_name.raw();
}
@@ -3730,13 +3730,13 @@
String& argument_name = String::Handle();
String& parameter_name = String::Handle();
for (int i = 0; i < num_named_arguments; i++) {
- argument_name |= argument_names.At(i);
+ argument_name ^= argument_names.At(i);
ASSERT(argument_name.IsSymbol());
bool found = false;
const int num_positional_args = num_arguments - num_named_arguments;
const int num_parameters = NumParameters();
for (int j = num_positional_args; !found && (j < num_parameters); j++) {
- parameter_name |= ParameterNameAt(j);
+ parameter_name = ParameterNameAt(j);
ASSERT(argument_name.IsSymbol());
if (argument_name.Equals(parameter_name)) {
found = true;
@@ -4096,9 +4096,9 @@
// Set closure function's context scope.
ContextScope& context_scope = ContextScope::Handle();
if (is_static()) {
- context_scope |= ContextScope::New(0);
+ context_scope = ContextScope::New(0);
} else {
- context_scope |= LocalScope::CreateImplicitClosureScope(*this);
+ context_scope = LocalScope::CreateImplicitClosureScope(*this);
}
closure_function.set_context_scope(context_scope);
@@ -5212,7 +5212,7 @@
const Array& symbols = Array::Handle(isolate,
object_store->keyword_symbols());
ASSERT(!symbols.IsNull());
- str |= symbols.At(kind - Token::kFirstKeyword);
+ str ^= symbols.At(kind - Token::kFirstKeyword);
ASSERT(!str.IsNull());
return str.raw();
}
@@ -5595,7 +5595,7 @@
// Insert the object at the empty slot.
dict.SetAt(index, obj);
Smi& used = Smi::Handle();
- used |= dict.At(dict_size);
+ used ^= dict.At(dict_size);
intptr_t used_elements = used.Value() + 1; // One more element added.
used = Smi::New(used_elements);
dict.SetAt(dict_size, used); // Update used count.
@@ -5619,7 +5619,7 @@
Namespace& ns = Namespace::Handle();
Object& obj = Object::Handle();
for (int i = 0; i < exports.Length(); i++) {
- ns |= exports.At(i);
+ ns ^= exports.At(i);
obj = ns.Lookup(name);
if (!obj.IsNull()) {
return obj.raw();
@@ -5701,7 +5701,7 @@
}
bool is_unique = true;
for (int i = 0; i < scripts.Length(); i++) {
- script_obj |= scripts.At(i);
+ script_obj ^= scripts.At(i);
if (script_obj.raw() == owner_script.raw()) {
// We already have a reference to this script.
is_unique = false;
@@ -5729,7 +5729,7 @@
String& script_url = String::Handle();
intptr_t num_scripts = scripts.Length();
for (int i = 0; i < num_scripts; i++) {
- script |= scripts.At(i);
+ script ^= scripts.At(i);
script_url = script.url();
if (script_url.Equals(url)) {
return script.raw();
@@ -5783,7 +5783,7 @@
Array& anon_classes = Array::Handle(this->raw_ptr()->anonymous_classes_);
intptr_t num_anonymous = raw_ptr()->num_anonymous_;
for (int i = 0; i < num_anonymous; i++) {
- cls |= anon_classes.At(i);
+ cls ^= anon_classes.At(i);
ASSERT(!cls.IsNull());
if (script.raw() == cls.script()) {
func = cls.LookupFunctionAtToken(token_pos);
@@ -5832,10 +5832,10 @@
Namespace& import = Namespace::Handle();
Object& obj = Object::Handle();
for (intptr_t j = 0; j < this->num_imports(); j++) {
- import |= imports.At(j);
+ import ^= imports.At(j);
obj = import.Lookup(name);
if (!obj.IsNull() && obj.IsField()) {
- field |= obj.raw();
+ field ^= obj.raw();
return field.raw();
}
}
@@ -5854,7 +5854,7 @@
}
if (!obj.IsNull()) {
if (obj.IsField()) {
- field |= obj.raw();
+ field ^= obj.raw();
return field.raw();
}
}
@@ -5881,10 +5881,10 @@
Namespace& import = Namespace::Handle();
Object& obj = Object::Handle();
for (intptr_t j = 0; j < this->num_imports(); j++) {
- import |= imports.At(j);
+ import ^= imports.At(j);
obj = import.Lookup(name);
if (!obj.IsNull() && obj.IsFunction()) {
- function |= obj.raw();
+ function ^= obj.raw();
return function.raw();
}
}
@@ -5919,7 +5919,7 @@
const Array& imports = Array::Handle(this->imports());
Namespace& import = Namespace::Handle();
for (intptr_t j = 0; j < this->num_imports(); j++) {
- import |= imports.At(j);
+ import ^= imports.At(j);
obj = import.Lookup(name);
if (!obj.IsNull()) {
return obj.raw();
@@ -6008,7 +6008,7 @@
}
const Array& import_list = Array::Handle(imports());
Namespace& import = Namespace::Handle();
- import |= import_list.At(index);
+ import ^= import_list.At(index);
return import.raw();
}
@@ -6289,8 +6289,8 @@
GrowableObjectArray& libs = GrowableObjectArray::Handle(
isolate, isolate->object_store()->libraries());
for (int i = 0; i < libs.Length(); i++) {
- lib |= libs.At(i);
- lib_url = lib.url();
+ lib ^= libs.At(i);
+ lib_url ^= lib.url();
if (lib_url.Equals(url)) {
return lib.raw();
}
@@ -6312,8 +6312,8 @@
Library& lib = Library::Handle();
String& lib_url = String::Handle();
for (int i = 0; i < libs.Length(); i++) {
- lib |= libs.At(i);
- lib_url |= lib.url();
+ lib ^= libs.At(i);
+ lib_url ^= lib.url();
lib_key = lib_url.Hash();
if (lib_key == key) {
return true;
@@ -6343,7 +6343,7 @@
ASSERT(IsPrivate(name));
// ASSERT(strchr(name, '@') == NULL);
String& str = String::Handle();
- str |= name.raw();
+ str = name.raw();
str = String::Concat(str, String::Handle(this->private_key()));
str = Symbols::New(str);
return str.raw();
@@ -6357,7 +6357,7 @@
ASSERT(!libs.IsNull());
if ((0 <= index) && (index < libs.Length())) {
Library& lib = Library::Handle();
- lib |= libs.At(index);
+ lib ^= libs.At(index);
return lib.raw();
}
return Library::null();
@@ -6434,7 +6434,7 @@
if ((index >= 0) || (index < num_imports())) {
const Array& imports = Array::Handle(this->imports());
Namespace& import = Namespace::Handle();
- import |= imports.At(index);
+ import ^= imports.At(index);
return import.library();
}
return Library::null();
@@ -6482,7 +6482,7 @@
Object& obj = Object::Handle();
Namespace& import = Namespace::Handle();
for (intptr_t i = 0; i < num_imports(); i++) {
- import |= imports.At(i);
+ import ^= imports.At(i);
obj = import.Lookup(class_name);
if (!obj.IsNull() && obj.IsClass()) {
// TODO(hausner):
@@ -6556,7 +6556,7 @@
String& hidden = String::Handle();
intptr_t num_names = names.Length();
for (intptr_t i = 0; i < num_names; i++) {
- hidden |= names.At(i);
+ hidden ^= names.At(i);
if (name.Equals(hidden)) {
return true;
}
@@ -6569,7 +6569,7 @@
String& shown = String::Handle();
intptr_t num_names = names.Length();
for (intptr_t i = 0; i < num_names; i++) {
- shown |= names.At(i);
+ shown ^= names.At(i);
if (name.Equals(shown)) {
return false;
}
@@ -6628,10 +6628,10 @@
Library& lib = Library::Handle();
Class& cls = Class::Handle();
for (int i = 0; i < libs.Length(); i++) {
- lib |= libs.At(i);
+ lib ^= libs.At(i);
ClassDictionaryIterator it(lib);
while (it.HasNext()) {
- cls |= it.GetNextClass();
+ cls = it.GetNextClass();
error = Compiler::CompileAllFunctions(cls);
if (!error.IsNull()) {
return error.raw();
@@ -6639,7 +6639,7 @@
}
Array& anon_classes = Array::Handle(lib.raw_ptr()->anonymous_classes_);
for (int i = 0; i < lib.raw_ptr()->num_anonymous_; i++) {
- cls |= anon_classes.At(i);
+ cls ^= anon_classes.At(i);
error = Compiler::CompileAllFunctions(cls);
if (!error.IsNull()) {
return error.raw();
@@ -6968,7 +6968,7 @@
const Array& names = Array::Handle(raw_ptr()->names_);
ASSERT(Length() == names.Length());
String& name = String::Handle();
- name |= names.At(var_index);
+ name ^= names.At(var_index);
return name.raw();
}
@@ -7301,7 +7301,7 @@
intptr_t Code::Comments::PCOffsetAt(intptr_t idx) const {
Smi& result = Smi::Handle();
- result |= comments_.At(idx * kNumberOfEntries + kPCOffsetEntry);
+ result ^= comments_.At(idx * kNumberOfEntries + kPCOffsetEntry);
return result.Value();
}
@@ -7314,7 +7314,7 @@
RawString* Code::Comments::CommentAt(intptr_t idx) const {
String& result = String::Handle();
- result |= comments_.At(idx * kNumberOfEntries + kCommentEntry);
+ result ^= comments_.At(idx * kNumberOfEntries + kCommentEntry);
return result.raw();
}
@@ -7381,7 +7381,7 @@
for (intptr_t i = 0; i < array.Length(); i += kSCallTableEntryLength) {
if (array.At(i) == raw_code_offset) {
Function& function = Function::Handle();
- function |= array.At(i + kSCallTableFunctionEntry);
+ function ^= array.At(i + kSCallTableFunctionEntry);
return function.raw();
}
}
@@ -7666,7 +7666,7 @@
*maps = stackmaps();
*map = Stackmap::null();
for (intptr_t i = 0; i < maps->Length(); i++) {
- *map |= maps->At(i);
+ *map ^= maps->At(i);
ASSERT(!map->IsNull());
if (map->PC() == pc) {
return map->raw(); // We found a stack map for this frame.
@@ -7981,10 +7981,10 @@
intptr_t data_pos = index * TestEntryLength();
Smi& smi = Smi::Handle();
for (intptr_t i = 0; i < num_args_tested(); i++) {
- smi |= data.At(data_pos++);
+ smi ^= data.At(data_pos++);
class_ids->Add(smi.Value());
}
- (*target) |= data.At(data_pos++);
+ (*target) ^= data.At(data_pos++);
}
@@ -7997,9 +7997,9 @@
const Array& data = Array::Handle(ic_data());
intptr_t data_pos = index * TestEntryLength();
Smi& smi = Smi::Handle();
- smi |= data.At(data_pos);
+ smi ^= data.At(data_pos);
*class_id = smi.Value();
- *target |= data.At(data_pos + 1);
+ *target ^= data.At(data_pos + 1);
}
@@ -8016,7 +8016,7 @@
const Array& data = Array::Handle(ic_data());
const intptr_t data_pos = index * TestEntryLength();
Smi& smi = Smi::Handle();
- smi |= data.At(data_pos);
+ smi ^= data.At(data_pos);
return smi.Value();
}
@@ -8034,7 +8034,7 @@
const intptr_t data_pos = index * TestEntryLength() +
CountIndexFor(num_args_tested());
Smi& smi = Smi::Handle();
- smi |= data.At(data_pos);
+ smi ^= data.At(data_pos);
return smi.Value();
}
@@ -8266,9 +8266,9 @@
// Rehash the valid entries.
for (intptr_t i = 0; i < old_capacity; ++i) {
- class_id |= GetClassId(old_buckets, i);
+ class_id ^= GetClassId(old_buckets, i);
if (class_id.Value() != kIllegalCid) {
- target |= GetTargetFunction(old_buckets, i);
+ target ^= GetTargetFunction(old_buckets, i);
Insert(class_id, target);
}
}
@@ -8286,7 +8286,7 @@
Smi& probe = Smi::Handle();
intptr_t i = index;
do {
- probe |= GetClassId(backing_array, i);
+ probe ^= GetClassId(backing_array, i);
if (probe.Value() == kIllegalCid) {
SetEntry(backing_array, i, class_id, target);
set_filled_entry_count(filled_entry_count() + 1);
@@ -8361,12 +8361,12 @@
Array& data = Array::Handle(cache());
intptr_t data_pos = ix * kTestEntryLength;
Smi& instance_class_id_handle = Smi::Handle();
- instance_class_id_handle |= data.At(data_pos + kInstanceClassId);
+ instance_class_id_handle ^= data.At(data_pos + kInstanceClassId);
*instance_class_id = instance_class_id_handle.Value();
*instance_type_arguments ^= data.At(data_pos + kInstanceTypeArguments);
*instantiator_type_arguments ^=
data.At(data_pos + kInstantiatorTypeArguments);
- *test_result |= data.At(data_pos + kTestResult);
+ *test_result ^= data.At(data_pos + kTestResult);
}
@@ -9682,7 +9682,7 @@
if (IsSmi()) return raw();
if (IsMint()) {
Mint& mint = Mint::Handle();
- mint |= raw();
+ mint ^= raw();
if (Smi::IsValid64(mint.value())) {
return Smi::New(mint.value());
} else {
@@ -9691,7 +9691,7 @@
}
ASSERT(IsBigint());
Bigint& big_value = Bigint::Handle();
- big_value |= raw();
+ big_value ^= raw();
if (BigintOperations::FitsIntoSmi(big_value)) {
return BigintOperations::ToSmi(big_value);
} else if (BigintOperations::FitsIntoMint(big_value)) {
@@ -9712,8 +9712,8 @@
if (IsSmi() && other.IsSmi()) {
Smi& left_smi = Smi::Handle();
Smi& right_smi = Smi::Handle();
- left_smi |= raw();
- right_smi |= other.raw();
+ left_smi ^= raw();
+ right_smi ^= other.raw();
const intptr_t left_value = left_smi.Value();
const intptr_t right_value = right_smi.Value();
switch (operation) {
@@ -9810,8 +9810,8 @@
if (IsSmi() && other.IsSmi()) {
Smi& op1 = Smi::Handle();
Smi& op2 = Smi::Handle();
- op1 |= raw();
- op2 |= other.raw();
+ op1 ^= raw();
+ op2 ^= other.raw();
intptr_t result = 0;
switch (kind) {
case Token::kBIT_AND:
@@ -10005,7 +10005,7 @@
Mint& canonical_value = Mint::Handle();
intptr_t index = 0;
while (index < constants_len) {
- canonical_value |= constants.At(index);
+ canonical_value ^= constants.At(index);
if (canonical_value.IsNull()) {
break;
}
@@ -10159,7 +10159,7 @@
Double& canonical_value = Double::Handle();
intptr_t index = 0;
while (index < constants_len) {
- canonical_value |= constants.At(index);
+ canonical_value ^= constants.At(index);
if (canonical_value.IsNull()) {
break;
}
@@ -10205,16 +10205,16 @@
ASSERT(!IsNull());
if (IsSmi()) {
Smi& smi = Smi::Handle();
- smi |= raw();
+ smi ^= raw();
return BigintOperations::NewFromSmi(smi);
} else if (IsMint()) {
Mint& mint = Mint::Handle();
- mint |= raw();
+ mint ^= raw();
return BigintOperations::NewFromInt64(mint.value());
} else {
ASSERT(IsBigint());
Bigint& big = Bigint::Handle();
- big |= raw();
+ big ^= raw();
ASSERT(!BigintOperations::FitsIntoSmi(big));
return big.raw();
}
@@ -10292,7 +10292,7 @@
Bigint& canonical_value = Bigint::Handle();
intptr_t index = 0;
while (index < constants_len) {
- canonical_value |= constants.At(index);
+ canonical_value ^= constants.At(index);
if (canonical_value.IsNull()) {
break;
}
@@ -10688,10 +10688,10 @@
String& result = String::Handle();
intptr_t char_size = str.CharSize();
if (char_size == kOneByteChar) {
- result |= OneByteString::New(len, space);
+ result = OneByteString::New(len, space);
} else {
ASSERT(char_size == kTwoByteChar);
- result |= TwoByteString::New(len, space);
+ result = TwoByteString::New(len, space);
}
String::Copy(result, 0, str, 0, len);
return result.raw();
@@ -10860,7 +10860,7 @@
String& str = String::Handle();
intptr_t char_size = kOneByteChar;
for (intptr_t i = 0; i < strings_len; i++) {
- str |= strings.At(i);
+ str ^= strings.At(i);
result_len += str.Length();
char_size = Utils::Maximum(char_size, str.CharSize());
}
@@ -10908,9 +10908,9 @@
}
}
if (is_one_byte_string) {
- result |= OneByteString::New(length, space);
+ result = OneByteString::New(length, space);
} else {
- result |= TwoByteString::New(length, space);
+ result = TwoByteString::New(length, space);
}
String::Copy(result, 0, str, begin_index, length);
return result.raw();
@@ -11272,7 +11272,7 @@
intptr_t strings_len = strings.Length();
intptr_t pos = 0;
for (intptr_t i = 0; i < strings_len; i++) {
- str |= strings.At(i);
+ str ^= strings.At(i);
intptr_t str_len = str.Length();
String::Copy(result, pos, str, 0, str_len);
pos += str_len;
@@ -11441,7 +11441,7 @@
intptr_t strings_len = strings.Length();
intptr_t pos = 0;
for (intptr_t i = 0; i < strings_len; i++) {
- str |= strings.At(i);
+ str ^= strings.At(i);
intptr_t str_len = str.Length();
String::Copy(result, pos, str, 0, str_len);
pos += str_len;
@@ -12625,7 +12625,7 @@
RawJSRegExp* JSRegExp::FromDataStartAddress(void* data) {
JSRegExp& regexp = JSRegExp::Handle();
intptr_t addr = reinterpret_cast<intptr_t>(data) - sizeof(RawJSRegExp);
- regexp |= RawObject::FromAddr(addr);
+ regexp ^= RawObject::FromAddr(addr);
return regexp.raw();
}
« no previous file with comments | « vm/object.h ('k') | vm/parser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698