Commit f888aa19 authored by ishell@chromium.org's avatar ishell@chromium.org

Revert "FastElementsAccessor::SetLengthWithoutNormalize() handlified."

This reverts commit r20214 for breaking debug tests on various platforms.

R=vogelheim@chromium.org

Review URL: https://codereview.chromium.org/208313015

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20216 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 3f218038
......@@ -784,16 +784,6 @@ class ElementsAccessorBase : public ElementsAccessor {
return obj;
}
// TODO(ishell): Temporary wrapper until handlified.
MUST_USE_RESULT static Handle<FixedArray> SetFastElementsCapacityAndLength(
Handle<JSObject> obj,
int capacity,
int length) {
CALL_HEAP_FUNCTION(obj->GetIsolate(),
SetFastElementsCapacityAndLength(*obj, capacity, length),
FixedArray);
}
MUST_USE_RESULT virtual Handle<Object> Delete(
Handle<JSObject> obj,
uint32_t key,
......@@ -988,28 +978,28 @@ class FastElementsAccessor
// Adjusts the length of the fast backing store or returns the new length or
// undefined in case conversion to a slow backing store should be performed.
static Handle<Object> SetLengthWithoutNormalize(
Handle<FixedArrayBase> backing_store,
Handle<JSArray> array,
Handle<Object> length_object,
uint32_t length) {
Isolate* isolate = array->GetIsolate();
static MaybeObject* SetLengthWithoutNormalize(FixedArrayBase* backing_store,
JSArray* array,
Object* length_object,
uint32_t length) {
uint32_t old_capacity = backing_store->length();
Handle<Object> old_length(array->length(), isolate);
Object* old_length = array->length();
bool same_or_smaller_size = old_length->IsSmi() &&
static_cast<uint32_t>(Handle<Smi>::cast(old_length)->value()) >= length;
static_cast<uint32_t>(Smi::cast(old_length)->value()) >= length;
ElementsKind kind = array->GetElementsKind();
if (!same_or_smaller_size && IsFastElementsKind(kind) &&
!IsFastHoleyElementsKind(kind)) {
kind = GetHoleyElementsKind(kind);
JSObject::TransitionElementsKind(array, kind);
MaybeObject* maybe_obj = array->TransitionElementsKind(kind);
if (maybe_obj->IsFailure()) return maybe_obj;
}
// Check whether the backing store should be shrunk.
if (length <= old_capacity) {
if (array->HasFastSmiOrObjectElements()) {
backing_store = JSObject::EnsureWritableFastElements(array);
MaybeObject* maybe_obj = array->EnsureWritableFastElements();
if (!maybe_obj->To(&backing_store)) return maybe_obj;
}
if (2 * length <= old_capacity) {
// If more than half the elements won't be used, trim the array.
......@@ -1026,7 +1016,7 @@ class FastElementsAccessor
// Otherwise, fill the unused tail with holes.
int old_length = FastD2IChecked(array->length()->Number());
for (int i = length; i < old_length; i++) {
Handle<BackingStore>::cast(backing_store)->set_the_hole(i);
BackingStore::cast(backing_store)->set_the_hole(i);
}
}
return length_object;
......@@ -1036,14 +1026,27 @@ class FastElementsAccessor
uint32_t min = JSObject::NewElementsCapacity(old_capacity);
uint32_t new_capacity = length > min ? length : min;
if (!array->ShouldConvertToSlowElements(new_capacity)) {
FastElementsAccessorSubclass::
MaybeObject* result = FastElementsAccessorSubclass::
SetFastElementsCapacityAndLength(array, new_capacity, length);
if (result->IsFailure()) return result;
array->ValidateElements();
return length_object;
}
// Request conversion to slow elements.
return isolate->factory()->undefined_value();
return array->GetHeap()->undefined_value();
}
// TODO(ishell): Temporary wrapper until handlified.
static Handle<Object> SetLengthWithoutNormalize(
Handle<FixedArrayBase> backing_store,
Handle<JSArray> array,
Handle<Object> length_object,
uint32_t length) {
CALL_HEAP_FUNCTION(array->GetIsolate(),
SetLengthWithoutNormalize(
*backing_store, *array, *length_object, length),
Object);
}
static Handle<Object> DeleteCommon(Handle<JSObject> obj,
......@@ -1241,16 +1244,6 @@ class FastSmiOrObjectElementsAccessor
length,
set_capacity_mode);
}
// TODO(ishell): Temporary wrapper until handlified.
static Handle<FixedArray> SetFastElementsCapacityAndLength(
Handle<JSObject> obj,
int capacity,
int length) {
CALL_HEAP_FUNCTION(obj->GetIsolate(),
SetFastElementsCapacityAndLength(*obj, capacity, length),
FixedArray);
}
};
......@@ -1321,16 +1314,6 @@ class FastDoubleElementsAccessor
length);
}
// TODO(ishell): Temporary wrapper until handlified.
static Handle<FixedArray> SetFastElementsCapacityAndLength(
Handle<JSObject> obj,
int capacity,
int length) {
CALL_HEAP_FUNCTION(obj->GetIsolate(),
SetFastElementsCapacityAndLength(*obj, capacity, length),
FixedArray);
}
protected:
static MaybeObject* CopyElementsImpl(FixedArrayBase* from,
uint32_t from_start,
......
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