Revision: 20145
Author: [email protected]
Date: Fri Mar 21 08:30:42 2014 UTC
Log: JSArray::SetContent() handlified.
[email protected]
Review URL: https://codereview.chromium.org/206223003
http://code.google.com/p/v8/source/detail?r=20145
Modified:
/branches/bleeding_edge/src/elements.cc
/branches/bleeding_edge/src/factory.cc
/branches/bleeding_edge/src/factory.h
/branches/bleeding_edge/src/objects-inl.h
/branches/bleeding_edge/src/objects.h
/branches/bleeding_edge/src/runtime.cc
=======================================
--- /branches/bleeding_edge/src/elements.cc Thu Mar 20 13:16:19 2014 UTC
+++ /branches/bleeding_edge/src/elements.cc Fri Mar 21 08:30:42 2014 UTC
@@ -1975,12 +1975,11 @@
}
}
- Factory* factory = isolate->factory();
// Fall-back case: The new length is not a number so make the array
// size one and set only element to length.
- Handle<FixedArray> new_backing_store = factory->NewFixedArray(1);
+ Handle<FixedArray> new_backing_store =
isolate->factory()->NewFixedArray(1);
new_backing_store->set(0, *length);
- factory->SetContent(array, new_backing_store);
+ JSArray::SetContent(array, new_backing_store);
return array;
}
=======================================
--- /branches/bleeding_edge/src/factory.cc Thu Mar 20 13:01:08 2014 UTC
+++ /branches/bleeding_edge/src/factory.cc Fri Mar 21 08:30:42 2014 UTC
@@ -1491,14 +1491,6 @@
isolate(),
accessor->SetCapacityAndLength(*array, capacity, length));
}
-
-
-void Factory::SetContent(Handle<JSArray> array,
- Handle<FixedArrayBase> elements) {
- CALL_HEAP_FUNCTION_VOID(
- isolate(),
- array->SetContent(*elements));
-}
Handle<JSGeneratorObject> Factory::NewJSGeneratorObject(
=======================================
--- /branches/bleeding_edge/src/factory.h Thu Mar 20 13:01:08 2014 UTC
+++ /branches/bleeding_edge/src/factory.h Fri Mar 21 08:30:42 2014 UTC
@@ -374,8 +374,6 @@
int capacity,
int length);
- void SetContent(Handle<JSArray> array, Handle<FixedArrayBase> elements);
-
Handle<JSGeneratorObject> NewJSGeneratorObject(Handle<JSFunction>
function);
Handle<JSArrayBuffer> NewJSArrayBuffer();
=======================================
--- /branches/bleeding_edge/src/objects-inl.h Thu Mar 20 16:13:09 2014 UTC
+++ /branches/bleeding_edge/src/objects-inl.h Fri Mar 21 08:30:42 2014 UTC
@@ -1031,7 +1031,6 @@
}
-// static
Handle<Object> Object::ToSmi(Isolate* isolate, Handle<Object> object) {
if (object->IsSmi()) return object;
if (object->IsHeapNumber()) {
@@ -1660,6 +1659,18 @@
}
return this;
}
+
+
+// TODO(ishell): Temporary wrapper until handlified.
+void JSObject::EnsureCanContainElements(Handle<JSObject> object,
+ Handle<FixedArrayBase> elements,
+ uint32_t length,
+ EnsureElementsMode mode) {
+ CALL_HEAP_FUNCTION_VOID(object->GetIsolate(),
+ object->EnsureCanContainElements(*elements,
+ length,
+ mode));
+}
MaybeObject* JSObject::EnsureCanContainElements(FixedArrayBase* elements,
@@ -6569,19 +6580,19 @@
}
-MaybeObject* JSArray::SetContent(FixedArrayBase* storage) {
- MaybeObject* maybe_result = EnsureCanContainElements(
- storage, storage->length(), ALLOW_COPIED_DOUBLE_ELEMENTS);
- if (maybe_result->IsFailure()) return maybe_result;
- ASSERT((storage->map() == GetHeap()->fixed_double_array_map() &&
- IsFastDoubleElementsKind(GetElementsKind())) ||
- ((storage->map() != GetHeap()->fixed_double_array_map()) &&
- (IsFastObjectElementsKind(GetElementsKind()) ||
- (IsFastSmiElementsKind(GetElementsKind()) &&
- FixedArray::cast(storage)->ContainsOnlySmisOrHoles()))));
- set_elements(storage);
- set_length(Smi::FromInt(storage->length()));
- return this;
+void JSArray::SetContent(Handle<JSArray> array,
+ Handle<FixedArrayBase> storage) {
+ EnsureCanContainElements(array, storage, storage->length(),
+ ALLOW_COPIED_DOUBLE_ELEMENTS);
+
+ ASSERT((storage->map() == array->GetHeap()->fixed_double_array_map() &&
+ IsFastDoubleElementsKind(array->GetElementsKind())) ||
+ ((storage->map() != array->GetHeap()->fixed_double_array_map()) &&
+ (IsFastObjectElementsKind(array->GetElementsKind()) ||
+ (IsFastSmiElementsKind(array->GetElementsKind()) &&
+
Handle<FixedArray>::cast(storage)->ContainsOnlySmisOrHoles()))));
+ array->set_elements(*storage);
+ array->set_length(Smi::FromInt(storage->length()));
}
=======================================
--- /branches/bleeding_edge/src/objects.h Thu Mar 20 12:22:13 2014 UTC
+++ /branches/bleeding_edge/src/objects.h Fri Mar 21 08:30:42 2014 UTC
@@ -2423,6 +2423,11 @@
MUST_USE_RESULT inline MaybeObject* EnsureCanContainElements(
Object** elements,
uint32_t count,
+ EnsureElementsMode mode);
+ static inline void EnsureCanContainElements(
+ Handle<JSObject> object,
+ Handle<FixedArrayBase> elements,
+ uint32_t length,
EnsureElementsMode mode);
MUST_USE_RESULT inline MaybeObject* EnsureCanContainElements(
FixedArrayBase* elements,
@@ -10032,7 +10037,8 @@
Handle<Object> length);
// Set the content of the array to the content of storage.
- MUST_USE_RESULT inline MaybeObject* SetContent(FixedArrayBase* storage);
+ static inline void SetContent(Handle<JSArray> array,
+ Handle<FixedArrayBase> storage);
// Casting.
static inline JSArray* cast(Object* obj);
=======================================
--- /branches/bleeding_edge/src/runtime.cc Thu Mar 20 18:14:33 2014 UTC
+++ /branches/bleeding_edge/src/runtime.cc Fri Mar 21 08:30:42 2014 UTC
@@ -3304,8 +3304,7 @@
}
Handle<JSArray> ToJSArray(Handle<JSArray> target_array) {
- Factory* factory = target_array->GetIsolate()->factory();
- factory->SetContent(target_array, array_);
+ JSArray::SetContent(target_array, array_);
target_array->set_length(Smi::FromInt(length_));
return target_array;
}
@@ -4581,7 +4580,7 @@
Handle<FixedArray> cached_fixed_array =
Handle<FixedArray>(FixedArray::cast(*cached_answer));
// The cache FixedArray is a COW-array and can therefore be reused.
- isolate->factory()->SetContent(result_array, cached_fixed_array);
+ JSArray::SetContent(result_array, cached_fixed_array);
// The actual length of the result array is stored in the last
element of
// the backing store (the backing FixedArray may have a larger
capacity).
Object* cached_fixed_array_last_element =
@@ -9699,8 +9698,7 @@
// Return result as a JS array.
Handle<JSObject> result =
isolate->factory()->NewJSObject(isolate->array_function());
- isolate->factory()->SetContent(Handle<JSArray>::cast(result),
- date_cache_version);
+ JSArray::SetContent(Handle<JSArray>::cast(result), date_cache_version);
return *result;
}
@@ -12976,7 +12974,7 @@
// Return result as a JS array.
Handle<JSObject> result =
isolate->factory()->NewJSObject(isolate->array_function());
- isolate->factory()->SetContent(Handle<JSArray>::cast(result), instances);
+ JSArray::SetContent(Handle<JSArray>::cast(result), instances);
return *result;
}
@@ -13106,7 +13104,7 @@
isolate->context()->native_context()->array_function());
Handle<JSObject> result = isolate->factory()->NewJSObject(constructor);
- isolate->factory()->SetContent(Handle<JSArray>::cast(result), instances);
+ JSArray::SetContent(Handle<JSArray>::cast(result), instances);
return *result;
}
@@ -13184,7 +13182,7 @@
Handle<JSFunction> array_function(
isolate->context()->native_context()->array_function());
Handle<JSObject> result =
isolate->factory()->NewJSObject(array_function);
- isolate->factory()->SetContent(Handle<JSArray>::cast(result), instances);
+ JSArray::SetContent(Handle<JSArray>::cast(result), instances);
return *result;
}
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.