| Index: src/objects.h | 
| diff --git a/src/objects.h b/src/objects.h | 
| index fd9e8f49333c6884385c2802606f08d6c1ac534e..b5971305c0e1a13ee640bb23201060b90d7d3b2f 100644 | 
| --- a/src/objects.h | 
| +++ b/src/objects.h | 
| @@ -4650,9 +4650,9 @@ 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 Handle<Object> SetValue(Handle<ExternalUint8ClampedArray> array, | 
| -                                 uint32_t index, | 
| -                                 Handle<Object> value); | 
| +  static Handle<Object> SetValue(Handle<JSObject> holder, | 
| +                                 Handle<ExternalUint8ClampedArray> array, | 
| +                                 uint32_t index, Handle<Object> value); | 
|  | 
| DECLARE_CAST(ExternalUint8ClampedArray) | 
|  | 
| @@ -4674,9 +4674,9 @@ class ExternalInt8Array: public ExternalArray { | 
|  | 
| // This accessor applies the correct conversion from Smi, HeapNumber | 
| // and undefined. | 
| -  static Handle<Object> SetValue(Handle<ExternalInt8Array> array, | 
| -                                 uint32_t index, | 
| -                                 Handle<Object> value); | 
| +  static Handle<Object> SetValue(Handle<JSObject> holder, | 
| +                                 Handle<ExternalInt8Array> array, | 
| +                                 uint32_t index, Handle<Object> value); | 
|  | 
| DECLARE_CAST(ExternalInt8Array) | 
|  | 
| @@ -4698,9 +4698,9 @@ class ExternalUint8Array: public ExternalArray { | 
|  | 
| // This accessor applies the correct conversion from Smi, HeapNumber | 
| // and undefined. | 
| -  static Handle<Object> SetValue(Handle<ExternalUint8Array> array, | 
| -                                 uint32_t index, | 
| -                                 Handle<Object> value); | 
| +  static Handle<Object> SetValue(Handle<JSObject> holder, | 
| +                                 Handle<ExternalUint8Array> array, | 
| +                                 uint32_t index, Handle<Object> value); | 
|  | 
| DECLARE_CAST(ExternalUint8Array) | 
|  | 
| @@ -4722,9 +4722,9 @@ class ExternalInt16Array: public ExternalArray { | 
|  | 
| // This accessor applies the correct conversion from Smi, HeapNumber | 
| // and undefined. | 
| -  static Handle<Object> SetValue(Handle<ExternalInt16Array> array, | 
| -                                 uint32_t index, | 
| -                                 Handle<Object> value); | 
| +  static Handle<Object> SetValue(Handle<JSObject> holder, | 
| +                                 Handle<ExternalInt16Array> array, | 
| +                                 uint32_t index, Handle<Object> value); | 
|  | 
| DECLARE_CAST(ExternalInt16Array) | 
|  | 
| @@ -4747,9 +4747,9 @@ class ExternalUint16Array: public ExternalArray { | 
|  | 
| // This accessor applies the correct conversion from Smi, HeapNumber | 
| // and undefined. | 
| -  static Handle<Object> SetValue(Handle<ExternalUint16Array> array, | 
| -                                 uint32_t index, | 
| -                                 Handle<Object> value); | 
| +  static Handle<Object> SetValue(Handle<JSObject> holder, | 
| +                                 Handle<ExternalUint16Array> array, | 
| +                                 uint32_t index, Handle<Object> value); | 
|  | 
| DECLARE_CAST(ExternalUint16Array) | 
|  | 
| @@ -4771,9 +4771,9 @@ class ExternalInt32Array: public ExternalArray { | 
|  | 
| // This accessor applies the correct conversion from Smi, HeapNumber | 
| // and undefined. | 
| -  static Handle<Object> SetValue(Handle<ExternalInt32Array> array, | 
| -                                 uint32_t index, | 
| -                                 Handle<Object> value); | 
| +  static Handle<Object> SetValue(Handle<JSObject> holder, | 
| +                                 Handle<ExternalInt32Array> array, | 
| +                                 uint32_t index, Handle<Object> value); | 
|  | 
| DECLARE_CAST(ExternalInt32Array) | 
|  | 
| @@ -4796,9 +4796,9 @@ class ExternalUint32Array: public ExternalArray { | 
|  | 
| // This accessor applies the correct conversion from Smi, HeapNumber | 
| // and undefined. | 
| -  static Handle<Object> SetValue(Handle<ExternalUint32Array> array, | 
| -                                 uint32_t index, | 
| -                                 Handle<Object> value); | 
| +  static Handle<Object> SetValue(Handle<JSObject> holder, | 
| +                                 Handle<ExternalUint32Array> array, | 
| +                                 uint32_t index, Handle<Object> value); | 
|  | 
| DECLARE_CAST(ExternalUint32Array) | 
|  | 
| @@ -4821,9 +4821,9 @@ class ExternalFloat32Array: public ExternalArray { | 
|  | 
| // This accessor applies the correct conversion from Smi, HeapNumber | 
| // and undefined. | 
| -  static Handle<Object> SetValue(Handle<ExternalFloat32Array> array, | 
| -                                 uint32_t index, | 
| -                                 Handle<Object> value); | 
| +  static Handle<Object> SetValue(Handle<JSObject> holder, | 
| +                                 Handle<ExternalFloat32Array> array, | 
| +                                 uint32_t index, Handle<Object> value); | 
|  | 
| DECLARE_CAST(ExternalFloat32Array) | 
|  | 
| @@ -4846,9 +4846,9 @@ class ExternalFloat64Array: public ExternalArray { | 
|  | 
| // This accessor applies the correct conversion from Smi, HeapNumber | 
| // and undefined. | 
| -  static Handle<Object> SetValue(Handle<ExternalFloat64Array> array, | 
| -                                 uint32_t index, | 
| -                                 Handle<Object> value); | 
| +  static Handle<Object> SetValue(Handle<JSObject> holder, | 
| +                                 Handle<ExternalFloat64Array> array, | 
| +                                 uint32_t index, Handle<Object> value); | 
|  | 
| DECLARE_CAST(ExternalFloat64Array) | 
|  | 
| @@ -4911,9 +4911,9 @@ class FixedTypedArray: public FixedTypedArrayBase { | 
|  | 
| // This accessor applies the correct conversion from Smi, HeapNumber | 
| // and undefined. | 
| -  static Handle<Object> SetValue(Handle<FixedTypedArray<Traits> > array, | 
| -                                 uint32_t index, | 
| -                                 Handle<Object> value); | 
| +  static Handle<Object> SetValue(Handle<JSObject> holder, | 
| +                                 Handle<FixedTypedArray<Traits> > array, | 
| +                                 uint32_t index, Handle<Object> value); | 
|  | 
| DECLARE_PRINTER(FixedTypedArray) | 
| DECLARE_VERIFIER(FixedTypedArray) | 
| @@ -10234,15 +10234,14 @@ class JSArrayBuffer: public JSObject { | 
| inline bool is_neuterable(); | 
| inline void set_is_neuterable(bool value); | 
|  | 
| +  inline bool was_neutered(); | 
| +  inline void set_was_neutered(bool value); | 
| + | 
| // [weak_next]: linked list of array buffers. | 
| DECL_ACCESSORS(weak_next, Object) | 
|  | 
| -  // [weak_first_array]: weak linked list of views. | 
| -  DECL_ACCESSORS(weak_first_view, Object) | 
| - | 
| DECLARE_CAST(JSArrayBuffer) | 
|  | 
| -  // Neutering. Only neuters the buffer, not associated typed arrays. | 
| void Neuter(); | 
|  | 
| // Dispatched behavior. | 
| @@ -10253,18 +10252,18 @@ class JSArrayBuffer: public JSObject { | 
| static const int kByteLengthOffset = kBackingStoreOffset + kPointerSize; | 
| static const int kFlagOffset = kByteLengthOffset + kPointerSize; | 
| static const int kWeakNextOffset = kFlagOffset + kPointerSize; | 
| -  static const int kWeakFirstViewOffset = kWeakNextOffset + kPointerSize; | 
| -  static const int kSize = kWeakFirstViewOffset + kPointerSize; | 
| +  static const int kSize = kWeakNextOffset + kPointerSize; | 
|  | 
| static const int kSizeWithInternalFields = | 
| kSize + v8::ArrayBuffer::kInternalFieldCount * kPointerSize; | 
|  | 
| - private: | 
| // Bit position in a flag | 
| static const int kIsExternalBit = 0; | 
| static const int kShouldBeFreed = 1; | 
| static const int kIsNeuterableBit = 2; | 
| +  static const int kWasNeuteredBit = 3; | 
|  | 
| + private: | 
| DISALLOW_IMPLICIT_CONSTRUCTORS(JSArrayBuffer); | 
| }; | 
|  | 
| @@ -10280,23 +10279,23 @@ class JSArrayBufferView: public JSObject { | 
| // [byte_length]: length of typed array in bytes. | 
| DECL_ACCESSORS(byte_length, Object) | 
|  | 
| -  // [weak_next]: linked list of typed arrays over the same array buffer. | 
| -  DECL_ACCESSORS(weak_next, Object) | 
| - | 
| DECLARE_CAST(JSArrayBufferView) | 
|  | 
| DECLARE_VERIFIER(JSArrayBufferView) | 
|  | 
| +  inline bool WasNeutered() const; | 
| + | 
| static const int kBufferOffset = JSObject::kHeaderSize; | 
| static const int kByteOffsetOffset = kBufferOffset + kPointerSize; | 
| static const int kByteLengthOffset = kByteOffsetOffset + kPointerSize; | 
| -  static const int kWeakNextOffset = kByteLengthOffset + kPointerSize; | 
| -  static const int kViewSize = kWeakNextOffset + kPointerSize; | 
| - | 
| - protected: | 
| -  void NeuterView(); | 
| +  static const int kViewSize = kByteLengthOffset + kPointerSize; | 
|  | 
| private: | 
| +#ifdef VERIFY_HEAP | 
| +  DECL_ACCESSORS(raw_byte_offset, Object) | 
| +  DECL_ACCESSORS(raw_byte_length, Object) | 
| +#endif | 
| + | 
| DISALLOW_IMPLICIT_CONSTRUCTORS(JSArrayBufferView); | 
| }; | 
|  | 
| @@ -10306,9 +10305,6 @@ class JSTypedArray: public JSArrayBufferView { | 
| // [length]: length of typed array in elements. | 
| DECL_ACCESSORS(length, Object) | 
|  | 
| -  // Neutering. Only neuters this typed array. | 
| -  void Neuter(); | 
| - | 
| DECLARE_CAST(JSTypedArray) | 
|  | 
| ExternalArrayType type(); | 
| @@ -10329,6 +10325,9 @@ class JSTypedArray: public JSArrayBufferView { | 
| private: | 
| static Handle<JSArrayBuffer> MaterializeArrayBuffer( | 
| Handle<JSTypedArray> typed_array); | 
| +#ifdef VERIFY_HEAP | 
| +  DECL_ACCESSORS(raw_length, Object) | 
| +#endif | 
|  | 
| DISALLOW_IMPLICIT_CONSTRUCTORS(JSTypedArray); | 
| }; | 
| @@ -10336,9 +10335,6 @@ class JSTypedArray: public JSArrayBufferView { | 
|  | 
| class JSDataView: public JSArrayBufferView { | 
| public: | 
| -  // Only neuters this DataView | 
| -  void Neuter(); | 
| - | 
| DECLARE_CAST(JSDataView) | 
|  | 
| // Dispatched behavior. | 
|  |