Commit 0df38570 authored by adamk@chromium.org's avatar adamk@chromium.org

Remove redudant deleted_count argument from EnqueueSpliceRecord

R=rossberg@chromium.org
BUG=

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

Patch from Rafael Weinstein <rafaelw@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14989 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 72f7abb4
...@@ -399,7 +399,7 @@ function ObservedArrayPop(n) { ...@@ -399,7 +399,7 @@ function ObservedArrayPop(n) {
n--; n--;
var value = this[n]; var value = this[n];
EnqueueSpliceRecord(this, n, [value], 1, 0); EnqueueSpliceRecord(this, n, [value], 0);
try { try {
BeginPerformSplice(this); BeginPerformSplice(this);
...@@ -441,7 +441,7 @@ function ObservedArrayPush() { ...@@ -441,7 +441,7 @@ function ObservedArrayPush() {
var n = TO_UINT32(this.length); var n = TO_UINT32(this.length);
var m = %_ArgumentsLength(); var m = %_ArgumentsLength();
EnqueueSpliceRecord(this, n, [], 0, m); EnqueueSpliceRecord(this, n, [], m);
try { try {
BeginPerformSplice(this); BeginPerformSplice(this);
...@@ -581,7 +581,7 @@ function ArrayReverse() { ...@@ -581,7 +581,7 @@ function ArrayReverse() {
function ObservedArrayShift(len) { function ObservedArrayShift(len) {
var first = this[0]; var first = this[0];
EnqueueSpliceRecord(this, 0, [first], 1, 0); EnqueueSpliceRecord(this, 0, [first], 0);
try { try {
BeginPerformSplice(this); BeginPerformSplice(this);
...@@ -627,7 +627,7 @@ function ObservedArrayUnshift() { ...@@ -627,7 +627,7 @@ function ObservedArrayUnshift() {
var len = TO_UINT32(this.length); var len = TO_UINT32(this.length);
var num_arguments = %_ArgumentsLength(); var num_arguments = %_ArgumentsLength();
EnqueueSpliceRecord(this, 0, [], 0, num_arguments); EnqueueSpliceRecord(this, 0, [], num_arguments);
try { try {
BeginPerformSplice(this); BeginPerformSplice(this);
...@@ -779,7 +779,6 @@ function ObservedArraySplice(start, delete_count) { ...@@ -779,7 +779,6 @@ function ObservedArraySplice(start, delete_count) {
EnqueueSpliceRecord(this, EnqueueSpliceRecord(this,
start_i, start_i,
deleted_elements.slice(), deleted_elements.slice(),
deleted_elements.length,
num_elements_to_add); num_elements_to_add);
} }
} }
......
...@@ -294,7 +294,7 @@ function EndPerformSplice(array) { ...@@ -294,7 +294,7 @@ function EndPerformSplice(array) {
EndPerformChange(objectInfo, 'splice'); EndPerformChange(objectInfo, 'splice');
} }
function EnqueueSpliceRecord(array, index, removed, deleteCount, addedCount) { function EnqueueSpliceRecord(array, index, removed, addedCount) {
var objectInfo = objectInfoMap.get(array); var objectInfo = objectInfoMap.get(array);
if (IS_UNDEFINED(objectInfo) || objectInfo.changeObservers.length === 0) if (IS_UNDEFINED(objectInfo) || objectInfo.changeObservers.length === 0)
return; return;
...@@ -307,7 +307,6 @@ function EnqueueSpliceRecord(array, index, removed, deleteCount, addedCount) { ...@@ -307,7 +307,6 @@ function EnqueueSpliceRecord(array, index, removed, deleteCount, addedCount) {
addedCount: addedCount addedCount: addedCount
}; };
changeRecord.removed.length = deleteCount;
ObjectFreeze(changeRecord); ObjectFreeze(changeRecord);
ObjectFreeze(changeRecord.removed); ObjectFreeze(changeRecord.removed);
EnqueueChangeRecord(changeRecord, objectInfo.changeObservers); EnqueueChangeRecord(changeRecord, objectInfo.changeObservers);
......
...@@ -10875,24 +10875,18 @@ static bool GetOldValue(Isolate* isolate, ...@@ -10875,24 +10875,18 @@ static bool GetOldValue(Isolate* isolate,
return true; return true;
} }
// TODO(rafaelw): Remove |delete_count| argument and rely on the length of
// of |deleted|.
static void EnqueueSpliceRecord(Handle<JSArray> object, static void EnqueueSpliceRecord(Handle<JSArray> object,
uint32_t index, uint32_t index,
Handle<JSArray> deleted, Handle<JSArray> deleted,
uint32_t delete_count,
uint32_t add_count) { uint32_t add_count) {
Isolate* isolate = object->GetIsolate(); Isolate* isolate = object->GetIsolate();
HandleScope scope(isolate); HandleScope scope(isolate);
Handle<Object> index_object = isolate->factory()->NewNumberFromUint(index); Handle<Object> index_object = isolate->factory()->NewNumberFromUint(index);
Handle<Object> delete_count_object =
isolate->factory()->NewNumberFromUint(delete_count);
Handle<Object> add_count_object = Handle<Object> add_count_object =
isolate->factory()->NewNumberFromUint(add_count); isolate->factory()->NewNumberFromUint(add_count);
Handle<Object> args[] = Handle<Object> args[] =
{ object, index_object, deleted, delete_count_object, add_count_object }; { object, index_object, deleted, add_count_object };
bool threw; bool threw;
Execution::Call(Handle<JSFunction>(isolate->observers_enqueue_splice()), Execution::Call(Handle<JSFunction>(isolate->observers_enqueue_splice()),
...@@ -10996,14 +10990,18 @@ MaybeObject* JSArray::SetElementsLength(Object* len) { ...@@ -10996,14 +10990,18 @@ MaybeObject* JSArray::SetElementsLength(Object* len) {
uint32_t add_count = new_length > old_length ? new_length - old_length : 0; uint32_t add_count = new_length > old_length ? new_length - old_length : 0;
uint32_t delete_count = new_length < old_length ? old_length - new_length : 0; uint32_t delete_count = new_length < old_length ? old_length - new_length : 0;
Handle<JSArray> deleted = isolate->factory()->NewJSArray(0); Handle<JSArray> deleted = isolate->factory()->NewJSArray(0);
if (delete_count) { if (delete_count > 0) {
for (int i = indices.length() - 1; i >= 0; i--) { for (int i = indices.length() - 1; i >= 0; i--) {
JSObject::SetElement(deleted, indices[i] - index, old_values[i], NONE, JSObject::SetElement(deleted, indices[i] - index, old_values[i], NONE,
kNonStrictMode); kNonStrictMode);
} }
SetProperty(deleted, isolate->factory()->length_string(),
isolate->factory()->NewNumberFromUint(delete_count),
NONE, kNonStrictMode);
} }
EnqueueSpliceRecord(self, index, deleted, delete_count, add_count); EnqueueSpliceRecord(self, index, deleted, add_count);
return *hresult; return *hresult;
} }
...@@ -12069,7 +12067,7 @@ MaybeObject* JSObject::SetElement(uint32_t index, ...@@ -12069,7 +12067,7 @@ MaybeObject* JSObject::SetElement(uint32_t index,
old_length_handle); old_length_handle);
EndPerformSplice(Handle<JSArray>::cast(self)); EndPerformSplice(Handle<JSArray>::cast(self));
Handle<JSArray> deleted = isolate->factory()->NewJSArray(0); Handle<JSArray> deleted = isolate->factory()->NewJSArray(0);
EnqueueSpliceRecord(Handle<JSArray>::cast(self), old_length, deleted, 0, EnqueueSpliceRecord(Handle<JSArray>::cast(self), old_length, deleted,
new_length - old_length); new_length - old_length);
} else { } else {
EnqueueChangeRecord(self, "new", name, old_value); EnqueueChangeRecord(self, "new", name, old_value);
......
...@@ -928,7 +928,6 @@ function DefineArrayProperty(obj, p, desc, should_throw) { ...@@ -928,7 +928,6 @@ function DefineArrayProperty(obj, p, desc, should_throw) {
EnqueueSpliceRecord(obj, EnqueueSpliceRecord(obj,
new_length < old_length ? new_length : old_length, new_length < old_length ? new_length : old_length,
removed, removed,
removed.length,
new_length > old_length ? new_length - old_length : 0); new_length > old_length ? new_length - old_length : 0);
} }
if (threw) { if (threw) {
...@@ -967,7 +966,7 @@ function DefineArrayProperty(obj, p, desc, should_throw) { ...@@ -967,7 +966,7 @@ function DefineArrayProperty(obj, p, desc, should_throw) {
} }
if (emit_splice) { if (emit_splice) {
EndPerformSplice(obj); EndPerformSplice(obj);
EnqueueSpliceRecord(obj, length, [], 0, index + 1 - length); EnqueueSpliceRecord(obj, length, [], index + 1 - length);
} }
return true; return true;
} }
......
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