Refactorings only: More uses of "To" template and comment fixes.

Review URL: https://chromiumcodereview.appspot.com/9594018

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10932 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent b9d29ca8
......@@ -5764,9 +5764,8 @@ MaybeObject* DescriptorArray::CopyInsert(Descriptor* descriptor,
ASSERT(descriptor->GetDetails().type() != NULL_DESCRIPTOR);
// Ensure the key is a symbol.
Object* result;
{ MaybeObject* maybe_result = descriptor->KeyToSymbol();
if (!maybe_result->ToObject(&result)) return maybe_result;
if (maybe_result->IsFailure()) return maybe_result;
}
int new_size = 0;
......@@ -5801,9 +5800,7 @@ MaybeObject* DescriptorArray::CopyInsert(Descriptor* descriptor,
DescriptorArray* new_descriptors;
{ MaybeObject* maybe_result = Allocate(new_size);
if (!maybe_result->To<DescriptorArray>(&new_descriptors)) {
return maybe_result;
}
if (!maybe_result->To(&new_descriptors)) return maybe_result;
}
DescriptorArray::WhitenessWitness witness(new_descriptors);
......@@ -5853,27 +5850,18 @@ MaybeObject* DescriptorArray::CopyInsert(Descriptor* descriptor,
MaybeObject* DescriptorArray::RemoveTransitions() {
// Remove all transitions and null descriptors. Return a copy of the array
// with all transitions removed, or a Failure object if the new array could
// not be allocated.
// Compute the size of the map transition entries to be removed.
// Allocate the new descriptor array.
int new_number_of_descriptors = 0;
for (int i = 0; i < number_of_descriptors(); i++) {
if (IsProperty(i)) new_number_of_descriptors++;
}
// Allocate the new descriptor array.
DescriptorArray* new_descriptors;
{ MaybeObject* maybe_result = Allocate(new_number_of_descriptors);
if (!maybe_result->To<DescriptorArray>(&new_descriptors)) {
return maybe_result;
}
if (!maybe_result->To(&new_descriptors)) return maybe_result;
}
DescriptorArray::WhitenessWitness witness(new_descriptors);
// Copy the content.
DescriptorArray::WhitenessWitness witness(new_descriptors);
int next_descriptor = 0;
for (int i = 0; i < number_of_descriptors(); i++) {
if (IsProperty(i)) {
......@@ -7574,11 +7562,10 @@ MaybeObject* JSFunction::SetPrototype(Object* value) {
// Copy the map so this does not affect unrelated functions.
// Remove map transitions because they point to maps with a
// different prototype.
Object* new_object;
Map* new_map;
{ MaybeObject* maybe_new_map = map()->CopyDropTransitions();
if (!maybe_new_map->ToObject(&new_object)) return maybe_new_map;
if (!maybe_new_map->To(&new_map)) return maybe_new_map;
}
Map* new_map = Map::cast(new_object);
Heap* heap = new_map->GetHeap();
set_map(new_map);
new_map->set_constructor(value);
......@@ -7635,12 +7622,12 @@ Context* JSFunction::GlobalContextFromLiterals(FixedArray* literals) {
MaybeObject* Oddball::Initialize(const char* to_string,
Object* to_number,
byte kind) {
Object* symbol;
String* symbol;
{ MaybeObject* maybe_symbol =
Isolate::Current()->heap()->LookupAsciiSymbol(to_string);
if (!maybe_symbol->ToObject(&symbol)) return maybe_symbol;
if (!maybe_symbol->To(&symbol)) return maybe_symbol;
}
set_to_string(String::cast(symbol));
set_to_string(symbol);
set_to_number(to_number);
set_kind(kind);
return this;
......@@ -8552,17 +8539,14 @@ MaybeObject* JSObject::SetFastElementsCapacityAndLength(
ASSERT(!HasExternalArrayElements());
// Allocate a new fast elements backing store.
FixedArray* new_elements = NULL;
{ Object* object;
MaybeObject* maybe = heap->AllocateFixedArrayWithHoles(capacity);
if (!maybe->ToObject(&object)) return maybe;
new_elements = FixedArray::cast(object);
FixedArray* new_elements;
{ MaybeObject* maybe = heap->AllocateFixedArrayWithHoles(capacity);
if (!maybe->To(&new_elements)) return maybe;
}
// Find the new map to use for this object if there is a map change.
Map* new_map = NULL;
if (elements()->map() != heap->non_strict_arguments_elements_map()) {
Object* object;
// The resized array has FAST_SMI_ONLY_ELEMENTS if the capacity mode forces
// it, or if it's allowed and the old elements array contained only SMIs.
bool has_fast_smi_only_elements =
......@@ -8574,8 +8558,7 @@ MaybeObject* JSObject::SetFastElementsCapacityAndLength(
? FAST_SMI_ONLY_ELEMENTS
: FAST_ELEMENTS;
MaybeObject* maybe = GetElementsTransitionMap(GetIsolate(), elements_kind);
if (!maybe->ToObject(&object)) return maybe;
new_map = Map::cast(object);
if (!maybe->To(&new_map)) return maybe;
}
FixedArrayBase* old_elements_raw = elements();
......@@ -8630,7 +8613,7 @@ MaybeObject* JSObject::SetFastElementsCapacityAndLength(
MaybeObject* maybe_value_object =
GetHeap()->AllocateHeapNumber(old_elements->get_scalar(i),
TENURED);
if (!maybe_value_object->ToObject(&obj)) return maybe_value_object;
if (!maybe_value_object->To(&obj)) return maybe_value_object;
// Force write barrier. It's not worth trying to exploit
// elems->GetWriteBarrierMode(), since it requires an
// AssertNoAllocation stack object that would have to be positioned
......@@ -8676,18 +8659,17 @@ MaybeObject* JSObject::SetFastDoubleElementsCapacityAndLength(
// We should never end in here with a pixel or external array.
ASSERT(!HasExternalArrayElements());
Object* obj;
FixedDoubleArray* elems;
{ MaybeObject* maybe_obj =
heap->AllocateUninitializedFixedDoubleArray(capacity);
if (!maybe_obj->ToObject(&obj)) return maybe_obj;
if (!maybe_obj->To(&elems)) return maybe_obj;
}
FixedDoubleArray* elems = FixedDoubleArray::cast(obj);
Map* new_map;
{ MaybeObject* maybe_obj =
GetElementsTransitionMap(heap->isolate(), FAST_DOUBLE_ELEMENTS);
if (!maybe_obj->ToObject(&obj)) return maybe_obj;
if (!maybe_obj->To(&new_map)) return maybe_obj;
}
Map* new_map = Map::cast(obj);
FixedArrayBase* old_elements = elements();
ElementsKind elements_kind(GetElementsKind());
......@@ -8739,11 +8721,8 @@ MaybeObject* JSArray::Initialize(int capacity) {
if (capacity == 0) {
new_elements = heap->empty_fixed_array();
} else {
Object* obj;
{ MaybeObject* maybe_obj = heap->AllocateFixedArrayWithHoles(capacity);
if (!maybe_obj->ToObject(&obj)) return maybe_obj;
}
new_elements = FixedArray::cast(obj);
MaybeObject* maybe_obj = heap->AllocateFixedArrayWithHoles(capacity);
if (!maybe_obj->To(&new_elements)) return maybe_obj;
}
set_elements(new_elements);
return this;
......@@ -8803,7 +8782,7 @@ MaybeObject* Map::PutPrototypeTransition(Object* prototype, Map* map) {
// Grow array by factor 2 over and above what we need.
{ MaybeObject* maybe_cache =
GetHeap()->AllocateFixedArray(transitions * 2 * step + header);
if (!maybe_cache->To<FixedArray>(&new_cache)) return maybe_cache;
if (!maybe_cache->To(&new_cache)) return maybe_cache;
}
for (int i = 0; i < capacity * step; i++) {
......@@ -9306,10 +9285,8 @@ MaybeObject* JSObject::SetFastElement(uint32_t index,
if (backing_store->map() == GetHeap()->non_strict_arguments_elements_map()) {
backing_store = FixedArray::cast(backing_store->get(1));
} else {
Object* writable;
MaybeObject* maybe = EnsureWritableFastElements();
if (!maybe->ToObject(&writable)) return maybe;
backing_store = FixedArray::cast(writable);
if (!maybe->To(&backing_store)) return maybe;
}
uint32_t capacity = static_cast<uint32_t>(backing_store->length());
......@@ -9362,10 +9339,11 @@ MaybeObject* JSObject::SetFastElement(uint32_t index,
}
// Change elements kind from SMI_ONLY to generic FAST if necessary.
if (HasFastSmiOnlyElements() && !value->IsSmi()) {
MaybeObject* maybe_new_map = GetElementsTransitionMap(GetIsolate(),
FAST_ELEMENTS);
Map* new_map;
if (!maybe_new_map->To<Map>(&new_map)) return maybe_new_map;
{ MaybeObject* maybe_new_map = GetElementsTransitionMap(GetIsolate(),
FAST_ELEMENTS);
if (!maybe_new_map->To(&new_map)) return maybe_new_map;
}
set_map(new_map);
if (FLAG_trace_elements_transitions) {
PrintElementsTransition(stdout, FAST_SMI_ONLY_ELEMENTS, elements(),
......@@ -9374,17 +9352,18 @@ MaybeObject* JSObject::SetFastElement(uint32_t index,
}
// Increase backing store capacity if that's been decided previously.
if (new_capacity != capacity) {
Object* new_elements;
FixedArray* new_elements;
SetFastElementsCapacityMode set_capacity_mode =
value->IsSmi() && HasFastSmiOnlyElements()
? kAllowSmiOnlyElements
: kDontAllowSmiOnlyElements;
MaybeObject* maybe =
SetFastElementsCapacityAndLength(new_capacity,
array_length,
set_capacity_mode);
if (!maybe->ToObject(&new_elements)) return maybe;
FixedArray::cast(new_elements)->set(index, value);
{ MaybeObject* maybe =
SetFastElementsCapacityAndLength(new_capacity,
array_length,
set_capacity_mode);
if (!maybe->To(&new_elements)) return maybe;
}
new_elements->set(index, value);
return value;
}
// Finally, set the new element and length.
......@@ -9484,7 +9463,7 @@ MaybeObject* JSObject::SetDictionaryElement(uint32_t index,
FixedArrayBase* new_dictionary;
PropertyDetails details = PropertyDetails(attributes, NORMAL);
MaybeObject* maybe = dictionary->AddNumberEntry(index, value, details);
if (!maybe->To<FixedArrayBase>(&new_dictionary)) return maybe;
if (!maybe->To(&new_dictionary)) return maybe;
if (dictionary != SeededNumberDictionary::cast(new_dictionary)) {
if (is_arguments) {
elements->set(1, new_dictionary);
......
......@@ -2506,8 +2506,8 @@ class DescriptorArray: public FixedArray {
MUST_USE_RESULT MaybeObject* CopyInsert(Descriptor* descriptor,
TransitionFlag transition_flag);
// Remove all transitions. Return a copy of the array with all transitions
// removed, or a Failure object if the new array could not be allocated.
// Return a copy of the array with all transitions and null descriptors
// removed. Return a Failure object in case of an allocation failure.
MUST_USE_RESULT MaybeObject* RemoveTransitions();
// Sort the instance descriptors by the hash codes of their keys.
......
......@@ -49,11 +49,8 @@ class Descriptor BASE_EMBEDDED {
MUST_USE_RESULT MaybeObject* KeyToSymbol() {
if (!StringShape(key_).IsSymbol()) {
Object* result;
{ MaybeObject* maybe_result = HEAP->LookupSymbol(key_);
if (!maybe_result->ToObject(&result)) return maybe_result;
}
key_ = String::cast(result);
MaybeObject* maybe_result = HEAP->LookupSymbol(key_);
if (!maybe_result->To(&key_)) return maybe_result;
}
return key_;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment