Reviewers: adamk, rossberg,
Description:
Remove redudant deleted_count argument from EnqueueSpliceRecord
R=rossberg,adamk
BUG=
Please review this at https://codereview.chromium.org/16438010/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M src/array.js
M src/object-observe.js
M src/objects.cc
M src/v8natives.js
Index: src/array.js
diff --git a/src/array.js b/src/array.js
index
dcfcde51393cbe1d7fc4258c794c73ad01505a21..5f89ebb7a6b6c4cfea2b66df051e918e95a74c0d
100644
--- a/src/array.js
+++ b/src/array.js
@@ -399,7 +399,7 @@ function ObservedArrayPop(n) {
n--;
var value = this[n];
- EnqueueSpliceRecord(this, n, [value], 1, 0);
+ EnqueueSpliceRecord(this, n, [value], 0);
try {
BeginPerformSplice(this);
@@ -441,7 +441,7 @@ function ObservedArrayPush() {
var n = TO_UINT32(this.length);
var m = %_ArgumentsLength();
- EnqueueSpliceRecord(this, n, [], 0, m);
+ EnqueueSpliceRecord(this, n, [], m);
try {
BeginPerformSplice(this);
@@ -581,7 +581,7 @@ function ArrayReverse() {
function ObservedArrayShift(len) {
var first = this[0];
- EnqueueSpliceRecord(this, 0, [first], 1, 0);
+ EnqueueSpliceRecord(this, 0, [first], 0);
try {
BeginPerformSplice(this);
@@ -627,7 +627,7 @@ function ObservedArrayUnshift() {
var len = TO_UINT32(this.length);
var num_arguments = %_ArgumentsLength();
- EnqueueSpliceRecord(this, 0, [], 0, num_arguments);
+ EnqueueSpliceRecord(this, 0, [], num_arguments);
try {
BeginPerformSplice(this);
@@ -779,7 +779,6 @@ function ObservedArraySplice(start, delete_count) {
EnqueueSpliceRecord(this,
start_i,
deleted_elements.slice(),
- deleted_elements.length,
num_elements_to_add);
}
}
Index: src/object-observe.js
diff --git a/src/object-observe.js b/src/object-observe.js
index
5ca70bcff565c8daf8fc15d8343aee3bbd0b59c8..ada7919d6dd215f6d49470f30dca230d14f02d83
100644
--- a/src/object-observe.js
+++ b/src/object-observe.js
@@ -294,7 +294,7 @@ function EndPerformSplice(array) {
EndPerformChange(objectInfo, 'splice');
}
-function EnqueueSpliceRecord(array, index, removed, deleteCount,
addedCount) {
+function EnqueueSpliceRecord(array, index, removed, addedCount) {
var objectInfo = objectInfoMap.get(array);
if (IS_UNDEFINED(objectInfo) || objectInfo.changeObservers.length === 0)
return;
@@ -307,7 +307,6 @@ function EnqueueSpliceRecord(array, index, removed,
deleteCount, addedCount) {
addedCount: addedCount
};
- changeRecord.removed.length = deleteCount;
ObjectFreeze(changeRecord);
ObjectFreeze(changeRecord.removed);
EnqueueChangeRecord(changeRecord, objectInfo.changeObservers);
Index: src/objects.cc
diff --git a/src/objects.cc b/src/objects.cc
index
ca1c65065085d084378cde64d4a7d76550af67da..5b9c37278c13f92c731c640fd3950ffdb8a95566
100644
--- a/src/objects.cc
+++ b/src/objects.cc
@@ -10845,24 +10845,18 @@ static bool GetOldValue(Isolate* isolate,
return true;
}
-
-// TODO(rafaelw): Remove |delete_count| argument and rely on the length of
-// of |deleted|.
static void EnqueueSpliceRecord(Handle<JSArray> object,
uint32_t index,
Handle<JSArray> deleted,
- uint32_t delete_count,
uint32_t add_count) {
Isolate* isolate = object->GetIsolate();
HandleScope scope(isolate);
Handle<Object> index_object =
isolate->factory()->NewNumberFromUint(index);
- Handle<Object> delete_count_object =
- isolate->factory()->NewNumberFromUint(delete_count);
Handle<Object> add_count_object =
isolate->factory()->NewNumberFromUint(add_count);
Handle<Object> args[] =
- { object, index_object, deleted, delete_count_object,
add_count_object };
+ { object, index_object, deleted, add_count_object };
bool threw;
Execution::Call(Handle<JSFunction>(isolate->observers_enqueue_splice()),
@@ -10973,7 +10967,10 @@ MaybeObject* JSArray::SetElementsLength(Object*
len) {
}
}
- EnqueueSpliceRecord(self, index, deleted, delete_count, add_count);
+ SetProperty(deleted, isolate->factory()->length_string(),
+ isolate->factory()->NewNumberFromUint(delete_count),
+ NONE, kNonStrictMode);
+ EnqueueSpliceRecord(self, index, deleted, add_count);
return *hresult;
}
@@ -12039,7 +12036,7 @@ MaybeObject* JSObject::SetElement(uint32_t index,
old_length_handle);
EndPerformSplice(Handle<JSArray>::cast(self));
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);
} else {
EnqueueChangeRecord(self, "new", name, old_value);
Index: src/v8natives.js
diff --git a/src/v8natives.js b/src/v8natives.js
index
d444613f3a8ad0422aeae6d84c0f7cf7636bc2e8..e168b71abc0de9f65620ccd22cb116d0330a3d74
100644
--- a/src/v8natives.js
+++ b/src/v8natives.js
@@ -928,7 +928,6 @@ function DefineArrayProperty(obj, p, desc,
should_throw) {
EnqueueSpliceRecord(obj,
new_length < old_length ? new_length : old_length,
removed,
- removed.length,
new_length > old_length ? new_length - old_length : 0);
}
if (threw) {
@@ -967,7 +966,7 @@ function DefineArrayProperty(obj, p, desc,
should_throw) {
}
if (emit_splice) {
EndPerformSplice(obj);
- EnqueueSpliceRecord(obj, length, [], 0, index + 1 - length);
+ EnqueueSpliceRecord(obj, length, [], index + 1 - length);
}
return true;
}
--
--
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/groups/opt_out.