Index: src/js/array.js |
diff --git a/src/js/array.js b/src/js/array.js |
index b65167ebde1275992a86ec34520898e51b11db8c..4816dfbdf1c4729f5507f499bb77e21eebe1a2cc 100644 |
--- a/src/js/array.js |
+++ b/src/js/array.js |
@@ -23,9 +23,6 @@ var MinSimple; |
var ObjectDefineProperty; |
var ObjectHasOwnProperty; |
var ObjectToString = utils.ImportNow("object_to_string"); |
-var ObserveBeginPerformSplice; |
-var ObserveEndPerformSplice; |
-var ObserveEnqueueSpliceRecord; |
var iteratorSymbol = utils.ImportNow("iterator_symbol"); |
var unscopablesSymbol = utils.ImportNow("unscopables_symbol"); |
@@ -37,9 +34,6 @@ utils.Import(function(from) { |
MinSimple = from.MinSimple; |
ObjectDefineProperty = from.ObjectDefineProperty; |
ObjectHasOwnProperty = from.ObjectHasOwnProperty; |
- ObserveBeginPerformSplice = from.ObserveBeginPerformSplice; |
- ObserveEndPerformSplice = from.ObserveEndPerformSplice; |
- ObserveEnqueueSpliceRecord = from.ObserveEnqueueSpliceRecord; |
}); |
utils.ImportFromExperimental(function(from) { |
@@ -110,8 +104,7 @@ function UseSparseVariant(array, length, is_array, touched) { |
// Only use the sparse variant on arrays that are likely to be sparse and the |
// number of elements touched in the operation is relatively small compared to |
// the overall size of the array. |
- if (!is_array || length < 1000 || %IsObserved(array) || |
- %HasComplexElements(array)) { |
+ if (!is_array || length < 1000 || %HasComplexElements(array)) { |
return false; |
} |
if (!%_IsSmi(length)) { |
@@ -443,23 +436,6 @@ function ArrayJoin(separator) { |
} |
-function ObservedArrayPop(n) { |
- n--; |
- var value = this[n]; |
- |
- try { |
- ObserveBeginPerformSplice(this); |
- delete this[n]; |
- this.length = n; |
- } finally { |
- ObserveEndPerformSplice(this); |
- ObserveEnqueueSpliceRecord(this, n, [value], 0); |
- } |
- |
- return value; |
-} |
- |
- |
// Removes the last element from the array and returns it. See |
// ECMA-262, section 15.4.4.6. |
function ArrayPop() { |
@@ -472,9 +448,6 @@ function ArrayPop() { |
return; |
} |
- if (%IsObserved(array)) |
- return ObservedArrayPop.call(array, n); |
- |
n--; |
var value = array[n]; |
%DeleteProperty_Strict(array, n); |
@@ -483,34 +456,11 @@ function ArrayPop() { |
} |
-function ObservedArrayPush() { |
- var n = TO_LENGTH(this.length); |
- var m = arguments.length; |
- |
- try { |
- ObserveBeginPerformSplice(this); |
- for (var i = 0; i < m; i++) { |
- this[i+n] = arguments[i]; |
- } |
- var new_length = n + m; |
- this.length = new_length; |
- } finally { |
- ObserveEndPerformSplice(this); |
- ObserveEnqueueSpliceRecord(this, n, [], m); |
- } |
- |
- return new_length; |
-} |
- |
- |
// Appends the arguments to the end of the array and returns the new |
// length of the array. See ECMA-262, section 15.4.4.7. |
function ArrayPush() { |
CHECK_OBJECT_COERCIBLE(this, "Array.prototype.push"); |
- if (%IsObserved(this)) |
- return ObservedArrayPush.apply(this, arguments); |
- |
var array = TO_OBJECT(this); |
var n = TO_LENGTH(array.length); |
var m = arguments.length; |
@@ -633,22 +583,6 @@ function ArrayReverse() { |
} |
-function ObservedArrayShift(len) { |
- var first = this[0]; |
- |
- try { |
- ObserveBeginPerformSplice(this); |
- SimpleMove(this, 0, 1, len, 0); |
- this.length = len - 1; |
- } finally { |
- ObserveEndPerformSplice(this); |
- ObserveEnqueueSpliceRecord(this, 0, [first], 0); |
- } |
- |
- return first; |
-} |
- |
- |
function ArrayShift() { |
CHECK_OBJECT_COERCIBLE(this, "Array.prototype.shift"); |
@@ -662,9 +596,6 @@ function ArrayShift() { |
if (%object_is_sealed(array)) throw MakeTypeError(kArrayFunctionsOnSealed); |
- if (%IsObserved(array)) |
- return ObservedArrayShift.call(array, len); |
- |
var first = array[0]; |
if (UseSparseVariant(array, len, IS_ARRAY(array), len)) { |
@@ -679,33 +610,9 @@ function ArrayShift() { |
} |
-function ObservedArrayUnshift() { |
- var len = TO_LENGTH(this.length); |
- var num_arguments = arguments.length; |
- |
- try { |
- ObserveBeginPerformSplice(this); |
- SimpleMove(this, 0, 0, len, num_arguments); |
- for (var i = 0; i < num_arguments; i++) { |
- this[i] = arguments[i]; |
- } |
- var new_length = len + num_arguments; |
- this.length = new_length; |
- } finally { |
- ObserveEndPerformSplice(this); |
- ObserveEnqueueSpliceRecord(this, 0, [], num_arguments); |
- } |
- |
- return new_length; |
-} |
- |
- |
function ArrayUnshift(arg1) { // length == 1 |
CHECK_OBJECT_COERCIBLE(this, "Array.prototype.unshift"); |
- if (%IsObserved(this)) |
- return ObservedArrayUnshift.apply(this, arguments); |
- |
var array = TO_OBJECT(this); |
var len = TO_LENGTH(array.length); |
var num_arguments = arguments.length; |
@@ -800,53 +707,9 @@ function ComputeSpliceDeleteCount(delete_count, num_arguments, len, start_i) { |
} |
-function ObservedArraySplice(start, delete_count) { |
- var num_arguments = arguments.length; |
- var len = TO_LENGTH(this.length); |
- var start_i = ComputeSpliceStartIndex(TO_INTEGER(start), len); |
- var del_count = ComputeSpliceDeleteCount(delete_count, num_arguments, len, |
- start_i); |
- var deleted_elements = []; |
- deleted_elements.length = del_count; |
- var num_elements_to_add = num_arguments > 2 ? num_arguments - 2 : 0; |
- |
- try { |
- ObserveBeginPerformSplice(this); |
- |
- SimpleSlice(this, start_i, del_count, len, deleted_elements); |
- SimpleMove(this, start_i, del_count, len, num_elements_to_add); |
- |
- // Insert the arguments into the resulting array in |
- // place of the deleted elements. |
- var i = start_i; |
- var arguments_index = 2; |
- var arguments_length = arguments.length; |
- while (arguments_index < arguments_length) { |
- this[i++] = arguments[arguments_index++]; |
- } |
- this.length = len - del_count + num_elements_to_add; |
- |
- } finally { |
- ObserveEndPerformSplice(this); |
- if (deleted_elements.length || num_elements_to_add) { |
- ObserveEnqueueSpliceRecord(this, |
- start_i, |
- deleted_elements.slice(), |
- num_elements_to_add); |
- } |
- } |
- |
- // Return the deleted elements. |
- return deleted_elements; |
-} |
- |
- |
function ArraySplice(start, delete_count) { |
CHECK_OBJECT_COERCIBLE(this, "Array.prototype.splice"); |
- if (%IsObserved(this)) |
- return ObservedArraySplice.apply(this, arguments); |
- |
var num_arguments = arguments.length; |
var array = TO_OBJECT(this); |
var len = TO_LENGTH(array.length); |