Commit 691de97b authored by verwaest's avatar verwaest Committed by Commit bot

Cleanup typed array setters, the property is guaranteed to be there.

BUG=v8:4137
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#29129}
parent ed01b6b0
......@@ -613,18 +613,14 @@ class ElementsAccessorBase : public ElementsAccessor {
}
}
virtual void Set(Handle<JSObject> holder, uint32_t key,
Handle<FixedArrayBase> backing_store,
virtual void Set(Handle<FixedArrayBase> backing_store, uint32_t key,
Handle<Object> value) final {
ElementsAccessorSubclass::SetImpl(holder, key, backing_store, value);
ElementsAccessorSubclass::SetImpl(backing_store, key, value);
}
static void SetImpl(Handle<JSObject> obj, uint32_t key,
Handle<FixedArrayBase> backing_store,
static void SetImpl(Handle<FixedArrayBase> backing_store, uint32_t key,
Handle<Object> value) {
CHECK(key <
ElementsAccessorSubclass::GetCapacityImpl(*obj, *backing_store));
BackingStore::SetValue(obj, Handle<BackingStore>::cast(backing_store), key,
BackingStore::SetValue(Handle<BackingStore>::cast(backing_store), key,
value);
}
......@@ -1447,8 +1443,8 @@ class DictionaryElementsAccessor
return isolate->factory()->the_hole_value();
}
static void SetImpl(Handle<JSObject> obj, uint32_t key,
Handle<FixedArrayBase> store, Handle<Object> value) {
static void SetImpl(Handle<FixedArrayBase> store, uint32_t key,
Handle<Object> value) {
Handle<SeededNumberDictionary> backing_store =
Handle<SeededNumberDictionary>::cast(store);
int entry = backing_store->FindEntry(key);
......@@ -1544,8 +1540,8 @@ class SloppyArgumentsElementsAccessor : public ElementsAccessorBase<
}
}
static void SetImpl(Handle<JSObject> obj, uint32_t key,
Handle<FixedArrayBase> store, Handle<Object> value) {
static void SetImpl(Handle<FixedArrayBase> store, uint32_t key,
Handle<Object> value) {
Handle<FixedArray> parameter_map = Handle<FixedArray>::cast(store);
Object* probe = GetParameterMapArg(*parameter_map, key);
if (!probe->IsTheHole()) {
......@@ -1555,7 +1551,7 @@ class SloppyArgumentsElementsAccessor : public ElementsAccessorBase<
context->set(context_index, *value);
} else {
Handle<FixedArray> arguments(FixedArray::cast(parameter_map->get(1)));
ElementsAccessor::ForArray(arguments)->Set(obj, key, arguments, value);
ElementsAccessor::ForArray(arguments)->Set(arguments, key, value);
}
}
......
......@@ -43,10 +43,6 @@ class ElementsAccessor {
return HasElement(holder, key, handle(holder->elements()));
}
inline void Set(Handle<JSObject> holder, uint32_t key, Handle<Object> value) {
Set(holder, key, handle(holder->elements()), value);
}
// Returns the element with the specified key or undefined if there is no such
// element. This method doesn't iterate up the prototype chain. The caller
// can optionally pass in the backing store to use for the check, which must
......@@ -179,8 +175,7 @@ class ElementsAccessor {
uint32_t index) = 0;
virtual bool HasIndex(FixedArrayBase* backing_store, uint32_t key) = 0;
virtual void Set(Handle<JSObject> holder, uint32_t key,
Handle<FixedArrayBase> backing_store,
virtual void Set(Handle<FixedArrayBase> backing_store, uint32_t key,
Handle<Object> value) = 0;
private:
......
......@@ -420,7 +420,7 @@ void LookupIterator::WriteDataValue(Handle<Object> value) {
Handle<JSObject> holder = GetHolder<JSObject>();
if (IsElement()) {
ElementsAccessor* accessor = holder->GetElementsAccessor();
accessor->Set(holder, index_, value);
accessor->Set(handle(holder->elements()), index_, value);
} else if (holder->IsGlobalObject()) {
Handle<GlobalDictionary> property_dictionary =
handle(holder->global_dictionary());
......
......@@ -4002,27 +4002,21 @@ Handle<Object> FixedTypedArray<Traits>::get(
template <class Traits>
void FixedTypedArray<Traits>::SetValue(Handle<JSObject> holder,
Handle<FixedTypedArray<Traits> > array,
void FixedTypedArray<Traits>::SetValue(Handle<FixedTypedArray<Traits> > array,
uint32_t index, Handle<Object> value) {
ElementType cast_value = Traits::defaultValue();
Handle<JSArrayBufferView> view = Handle<JSArrayBufferView>::cast(holder);
if (!view->WasNeutered()) {
if (index < static_cast<uint32_t>(array->length())) {
if (value->IsSmi()) {
int int_value = Handle<Smi>::cast(value)->value();
cast_value = from_int(int_value);
} else if (value->IsHeapNumber()) {
double double_value = Handle<HeapNumber>::cast(value)->value();
cast_value = from_double(double_value);
} else {
// Clamp undefined to the default value. All other types have been
// converted to a number type further up in the call chain.
DCHECK(value->IsUndefined());
}
array->set(index, cast_value);
}
if (value->IsSmi()) {
int int_value = Handle<Smi>::cast(value)->value();
cast_value = from_int(int_value);
} else if (value->IsHeapNumber()) {
double double_value = Handle<HeapNumber>::cast(value)->value();
cast_value = from_double(double_value);
} else {
// Clamp undefined to the default value. All other types have been
// converted to a number type further up in the call chain.
DCHECK(value->IsUndefined());
}
array->set(index, cast_value);
}
......
This diff is collapsed.
......@@ -2439,8 +2439,8 @@ class FixedArray: public FixedArrayBase {
public:
// Setter and getter for elements.
inline Object* get(int index) const;
static void SetValue(Handle<JSObject> holder, Handle<FixedArray> array,
uint32_t index, Handle<Object> value);
static void SetValue(Handle<FixedArray> array, uint32_t index,
Handle<Object> value);
static inline Handle<Object> get(Handle<FixedArray> array, int index);
// Setter that uses write barrier.
inline void set(int index, Object* value);
......@@ -2563,8 +2563,8 @@ class FixedDoubleArray: public FixedArrayBase {
inline uint64_t get_representation(int index);
static inline Handle<Object> get(Handle<FixedDoubleArray> array, int index);
// This accessor has to get a Number as |value|.
static void SetValue(Handle<JSObject> holder, Handle<FixedDoubleArray> array,
uint32_t index, Handle<Object> value);
static void SetValue(Handle<FixedDoubleArray> array, uint32_t index,
Handle<Object> value);
inline void set(int index, double value);
inline void set_the_hole(int index);
......@@ -4399,8 +4399,7 @@ class ExternalUint8ClampedArray: public ExternalArray {
// This accessor applies the correct conversion from Smi, HeapNumber
// and undefined and clamps the converted value between 0 and 255.
static void SetValue(Handle<JSObject> holder,
Handle<ExternalUint8ClampedArray> array, uint32_t index,
static void SetValue(Handle<ExternalUint8ClampedArray> array, uint32_t index,
Handle<Object> value);
DECLARE_CAST(ExternalUint8ClampedArray)
......@@ -4423,8 +4422,8 @@ class ExternalInt8Array: public ExternalArray {
// This accessor applies the correct conversion from Smi, HeapNumber
// and undefined.
static void SetValue(Handle<JSObject> holder, Handle<ExternalInt8Array> array,
uint32_t index, Handle<Object> value);
static void SetValue(Handle<ExternalInt8Array> array, uint32_t index,
Handle<Object> value);
DECLARE_CAST(ExternalInt8Array)
......@@ -4446,8 +4445,7 @@ class ExternalUint8Array: public ExternalArray {
// This accessor applies the correct conversion from Smi, HeapNumber
// and undefined.
static void SetValue(Handle<JSObject> holder,
Handle<ExternalUint8Array> array, uint32_t index,
static void SetValue(Handle<ExternalUint8Array> array, uint32_t index,
Handle<Object> value);
DECLARE_CAST(ExternalUint8Array)
......@@ -4470,8 +4468,7 @@ class ExternalInt16Array: public ExternalArray {
// This accessor applies the correct conversion from Smi, HeapNumber
// and undefined.
static void SetValue(Handle<JSObject> holder,
Handle<ExternalInt16Array> array, uint32_t index,
static void SetValue(Handle<ExternalInt16Array> array, uint32_t index,
Handle<Object> value);
DECLARE_CAST(ExternalInt16Array)
......@@ -4495,8 +4492,7 @@ class ExternalUint16Array: public ExternalArray {
// This accessor applies the correct conversion from Smi, HeapNumber
// and undefined.
static void SetValue(Handle<JSObject> holder,
Handle<ExternalUint16Array> array, uint32_t index,
static void SetValue(Handle<ExternalUint16Array> array, uint32_t index,
Handle<Object> value);
DECLARE_CAST(ExternalUint16Array)
......@@ -4519,8 +4515,7 @@ class ExternalInt32Array: public ExternalArray {
// This accessor applies the correct conversion from Smi, HeapNumber
// and undefined.
static void SetValue(Handle<JSObject> holder,
Handle<ExternalInt32Array> array, uint32_t index,
static void SetValue(Handle<ExternalInt32Array> array, uint32_t index,
Handle<Object> value);
DECLARE_CAST(ExternalInt32Array)
......@@ -4544,8 +4539,7 @@ class ExternalUint32Array: public ExternalArray {
// This accessor applies the correct conversion from Smi, HeapNumber
// and undefined.
static void SetValue(Handle<JSObject> holder,
Handle<ExternalUint32Array> array, uint32_t index,
static void SetValue(Handle<ExternalUint32Array> array, uint32_t index,
Handle<Object> value);
DECLARE_CAST(ExternalUint32Array)
......@@ -4569,8 +4563,7 @@ class ExternalFloat32Array: public ExternalArray {
// This accessor applies the correct conversion from Smi, HeapNumber
// and undefined.
static void SetValue(Handle<JSObject> holder,
Handle<ExternalFloat32Array> array, uint32_t index,
static void SetValue(Handle<ExternalFloat32Array> array, uint32_t index,
Handle<Object> value);
DECLARE_CAST(ExternalFloat32Array)
......@@ -4594,8 +4587,7 @@ class ExternalFloat64Array: public ExternalArray {
// This accessor applies the correct conversion from Smi, HeapNumber
// and undefined.
static void SetValue(Handle<JSObject> holder,
Handle<ExternalFloat64Array> array, uint32_t index,
static void SetValue(Handle<ExternalFloat64Array> array, uint32_t index,
Handle<Object> value);
DECLARE_CAST(ExternalFloat64Array)
......@@ -4664,8 +4656,7 @@ class FixedTypedArray: public FixedTypedArrayBase {
// This accessor applies the correct conversion from Smi, HeapNumber
// and undefined.
static void SetValue(Handle<JSObject> holder,
Handle<FixedTypedArray<Traits> > array, uint32_t index,
static void SetValue(Handle<FixedTypedArray<Traits> > array, uint32_t index,
Handle<Object> value);
DECLARE_PRINTER(FixedTypedArray)
......
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