Index: runtime/vm/object.cc |
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc |
index 86d461ac28b466c3ba800752a4cfa955947de53c..f3400162d8a368d882430ff6daad1cc22cac9fdb 100644 |
--- a/runtime/vm/object.cc |
+++ b/runtime/vm/object.cc |
@@ -2120,7 +2120,8 @@ void Class::SetFunctions(const Array& value) const { |
void Class::AddFunction(const Function& function) const { |
const Array& arr = Array::Handle(functions()); |
- const Array& new_arr = Array::Handle(Array::Grow(arr, arr.Length() + 1)); |
+ const Array& new_arr = |
+ Array::Handle(Array::Grow(arr, arr.Length() + 1, Heap::kOld)); |
new_arr.SetAt(arr.Length(), function); |
StorePointer(&raw_ptr()->functions_, new_arr.raw()); |
// Add to hash table, if any. |
@@ -7182,7 +7183,7 @@ void RedirectionData::PrintJSONImpl(JSONStream* stream, bool ref) const { |
RawString* Field::GetterName(const String& field_name) { |
- return Field::GetterSymbol(field_name); |
+ return String::Concat(Symbols::GetterPrefix(), field_name); |
} |
@@ -7191,6 +7192,11 @@ RawString* Field::GetterSymbol(const String& field_name) { |
} |
+RawString* Field::LookupGetterSymbol(const String& field_name) { |
+ return Symbols::LookupFromConcat(Symbols::GetterPrefix(), field_name); |
+} |
+ |
+ |
RawString* Field::SetterName(const String& field_name) { |
return String::Concat(Symbols::SetterPrefix(), field_name); |
} |
@@ -7201,6 +7207,11 @@ RawString* Field::SetterSymbol(const String& field_name) { |
} |
+RawString* Field::LookupSetterSymbol(const String& field_name) { |
+ return Symbols::LookupFromConcat(Symbols::SetterPrefix(), field_name); |
+} |
+ |
+ |
RawString* Field::NameFromGetter(const String& getter_name) { |
return Symbols::New(getter_name, kGetterPrefixLength, |
getter_name.Length() - kGetterPrefixLength); |
@@ -10709,9 +10720,16 @@ RawObject* Namespace::Lookup(const String& name) const { |
if (!Field::IsGetterName(name) && |
!Field::IsSetterName(name) && |
(obj.IsNull() || obj.IsLibraryPrefix())) { |
- obj = lib.LookupEntry(String::Handle(Field::GetterName(name)), &ignore); |
+ const String& getter_name = String::Handle(Field::LookupGetterSymbol(name)); |
+ if (!getter_name.IsNull()) { |
+ obj = lib.LookupEntry(getter_name, &ignore); |
+ } |
if (obj.IsNull()) { |
- obj = lib.LookupEntry(String::Handle(Field::SetterName(name)), &ignore); |
+ const String& setter_name = |
+ String::Handle(Field::LookupSetterSymbol(name)); |
+ if (!setter_name.IsNull()) { |
+ obj = lib.LookupEntry(setter_name, &ignore); |
+ } |
} |
} |
@@ -16973,7 +16991,8 @@ static bool Are64bitOperands(const Integer& op1, const Integer& op2) { |
} |
-RawInteger* Integer::BitOp(Token::Kind kind, const Integer& other) const { |
+RawInteger* Integer::BitOp( |
+ Token::Kind kind, const Integer& other, Heap::Space space) const { |
if (IsSmi() && other.IsSmi()) { |
intptr_t op1_value = Smi::Value(Smi::RawCast(raw())); |
intptr_t op2_value = Smi::Value(Smi::RawCast(other.raw())); |
@@ -16998,11 +17017,11 @@ RawInteger* Integer::BitOp(Token::Kind kind, const Integer& other) const { |
int64_t b = other.AsInt64Value(); |
switch (kind) { |
case Token::kBIT_AND: |
- return Integer::New(a & b); |
+ return Integer::New(a & b, space); |
case Token::kBIT_OR: |
- return Integer::New(a | b); |
+ return Integer::New(a | b, space); |
case Token::kBIT_XOR: |
- return Integer::New(a ^ b); |
+ return Integer::New(a ^ b, space); |
default: |
UNIMPLEMENTED(); |
} |
@@ -17014,6 +17033,7 @@ RawInteger* Integer::BitOp(Token::Kind kind, const Integer& other) const { |
// TODO(srdjan): Clarify handling of negative right operand in a shift op. |
RawInteger* Smi::ShiftOp(Token::Kind kind, |
const Smi& other, |
+ Heap::Space space, |
const bool silent) const { |
intptr_t result = 0; |
const intptr_t left_value = Value(); |
@@ -17028,10 +17048,10 @@ RawInteger* Smi::ShiftOp(Token::Kind kind, |
int cnt = Utils::BitLength(left_value); |
if ((cnt + right_value) > Smi::kBits) { |
if ((cnt + right_value) > Mint::kBits) { |
- return Bigint::NewFromShiftedInt64(left_value, right_value); |
+ return Bigint::NewFromShiftedInt64(left_value, right_value, space); |
} else { |
int64_t left_64 = left_value; |
- return Integer::New(left_64 << right_value, Heap::kNew, silent); |
+ return Integer::New(left_64 << right_value, space, silent); |
} |
} |
} |