| Index: src/objects.h
|
| diff --git a/src/objects.h b/src/objects.h
|
| index de15a7398d7fd8c86242247e778a724153cef8a7..daace863e12f7c666b63398e86b611e2c9251c11 100644
|
| --- a/src/objects.h
|
| +++ b/src/objects.h
|
| @@ -1540,12 +1540,14 @@ class JSObject: public HeapObject {
|
|
|
| MUST_USE_RESULT MaybeObject* SetFastElement(uint32_t index,
|
| Object* value,
|
| + StrictModeFlag strict_mode,
|
| bool check_prototype = true);
|
|
|
| // Set the index'th array element.
|
| // A Failure object is returned if GC is needed.
|
| MUST_USE_RESULT MaybeObject* SetElement(uint32_t index,
|
| Object* value,
|
| + StrictModeFlag strict_mode,
|
| bool check_prototype = true);
|
|
|
| // Returns the index'th element.
|
| @@ -1805,12 +1807,15 @@ class JSObject: public HeapObject {
|
| uint32_t index,
|
| Object* value,
|
| JSObject* holder);
|
| - MUST_USE_RESULT MaybeObject* SetElementWithInterceptor(uint32_t index,
|
| - Object* value,
|
| - bool check_prototype);
|
| + MUST_USE_RESULT MaybeObject* SetElementWithInterceptor(
|
| + uint32_t index,
|
| + Object* value,
|
| + StrictModeFlag strict_mode,
|
| + bool check_prototype);
|
| MUST_USE_RESULT MaybeObject* SetElementWithoutInterceptor(
|
| uint32_t index,
|
| Object* value,
|
| + StrictModeFlag strict_mode,
|
| bool check_prototype);
|
|
|
| MaybeObject* GetElementPostInterceptor(Object* receiver, uint32_t index);
|
| @@ -2447,13 +2452,18 @@ class Dictionary: public HashTable<Shape, Key> {
|
| }
|
|
|
| // Set the value for entry.
|
| - void ValueAtPut(int entry, Object* value) {
|
| + // Returns false if the put wasn't performed due to property being read only.
|
| + // Returns true on successful put.
|
| + bool ValueAtPut(int entry, Object* value) {
|
| // Check that this value can actually be written.
|
| PropertyDetails details = DetailsAt(entry);
|
| // If a value has not been initilized we allow writing to it even if
|
| // it is read only (a declared const that has not been initialized).
|
| - if (details.IsReadOnly() && !ValueAt(entry)->IsTheHole()) return;
|
| - this->set(HashTable<Shape, Key>::EntryToIndex(entry)+1, value);
|
| + if (details.IsReadOnly() && !ValueAt(entry)->IsTheHole()) {
|
| + return false;
|
| + }
|
| + this->set(HashTable<Shape, Key>::EntryToIndex(entry) + 1, value);
|
| + return true;
|
| }
|
|
|
| // Returns the property details for the property at entry.
|
|
|