Commit 0a9aa174 authored by yangguo's avatar yangguo Committed by Commit bot

Revert of Revert of Revert of Wrap typed array implementations in functions....

Revert of Revert of Revert of Wrap typed array implementations in functions. (patchset #1 id:1 of https://codereview.chromium.org/1083013002/)

Reason for revert:
Seems to still break those tests.

Original issue's description:
> Revert of Revert of Wrap typed array implementations in functions. (patchset #1 id:1 of https://codereview.chromium.org/1086683002/)
>
> Reason for revert:
> I don't think this is the cause.
>
> Original issue's description:
> > Revert of Wrap typed array implementations in functions. (patchset #1 id:1 of https://codereview.chromium.org/1082703003/)
> >
> > Reason for revert:
> > [Sheriff] Flaky nosnap failures:
> > http://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20arm64%20-%20sim%20-%20nosnap%20-%20debug%20-%201/builds/1720
> > http://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20nosnap%20-%20debug/builds/3312
> > http://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20nosnap%20-%20debug/builds/3313
> >
> > Original issue's description:
> > > Wrap typed array implementations in functions.
> > >
> > > R=mvstanton@chromium.org
> > >
> > > Committed: https://crrev.com/6fc394a15614b74776f9bbeeb0486f430bdc8597
> > > Cr-Commit-Position: refs/heads/master@{#27784}
> >
> > TBR=mvstanton@chromium.org,yangguo@chromium.org
> > NOPRESUBMIT=true
> > NOTREECHECKS=true
> > NOTRY=true
> >
> > Committed: https://crrev.com/8e3fa7adf20f4f9c9125076a878d601eee7c9f35
> > Cr-Commit-Position: refs/heads/master@{#27789}
>
> TBR=mvstanton@chromium.org,machenbach@chromium.org
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
>
> Committed: https://crrev.com/d7fe3b83f5dfa997f0c8a29436a22b999dc49a76
> Cr-Commit-Position: refs/heads/master@{#27803}

TBR=mvstanton@chromium.org,machenbach@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#27810}
parent 219f4a9e
......@@ -2,35 +2,13 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
var $iteratorCreateResultObject;
var $arrayValues;
(function() {
"use strict";
%CheckIsBootstrapping();
var GlobalArray = global.Array;
var GlobalObject = global.Object;
// This file relies on the fact that the following declaration has been made
// in runtime.js:
// var $Array = global.Array;
macro TYPED_ARRAYS(FUNCTION)
FUNCTION(Uint8Array)
FUNCTION(Int8Array)
FUNCTION(Uint16Array)
FUNCTION(Int16Array)
FUNCTION(Uint32Array)
FUNCTION(Int32Array)
FUNCTION(Float32Array)
FUNCTION(Float64Array)
FUNCTION(Uint8ClampedArray)
endmacro
macro COPY_FROM_GLOBAL(NAME)
var GlobalNAME = global.NAME;
endmacro
TYPED_ARRAYS(COPY_FROM_GLOBAL)
var arrayIteratorObjectSymbol = GLOBAL_PRIVATE("ArrayIterator#object");
var arrayIteratorNextIndexSymbol = GLOBAL_PRIVATE("ArrayIterator#next");
......@@ -122,38 +100,60 @@ function ArrayKeys() {
}
%FunctionSetPrototype(ArrayIterator, new GlobalObject());
%FunctionSetInstanceClassName(ArrayIterator, 'Array Iterator');
function SetUpArrayIterator() {
%CheckIsBootstrapping();
%FunctionSetPrototype(ArrayIterator, new $Object());
%FunctionSetInstanceClassName(ArrayIterator, 'Array Iterator');
InstallFunctions(ArrayIterator.prototype, DONT_ENUM, [
InstallFunctions(ArrayIterator.prototype, DONT_ENUM, [
'next', ArrayIteratorNext
]);
%FunctionSetName(ArrayIteratorIterator, '[Symbol.iterator]');
%AddNamedProperty(ArrayIterator.prototype, symbolIterator,
]);
%FunctionSetName(ArrayIteratorIterator, '[Symbol.iterator]');
%AddNamedProperty(ArrayIterator.prototype, symbolIterator,
ArrayIteratorIterator, DONT_ENUM);
%AddNamedProperty(ArrayIterator.prototype, symbolToStringTag,
%AddNamedProperty(ArrayIterator.prototype, symbolToStringTag,
"Array Iterator", READ_ONLY | DONT_ENUM);
}
SetUpArrayIterator();
InstallFunctions(GlobalArray.prototype, DONT_ENUM, [
function ExtendArrayPrototype() {
%CheckIsBootstrapping();
InstallFunctions($Array.prototype, DONT_ENUM, [
// No 'values' since it breaks webcompat: http://crbug.com/409858
'entries', ArrayEntries,
'keys', ArrayKeys
]);
]);
%AddNamedProperty(GlobalArray.prototype, symbolIterator, ArrayValues,
DONT_ENUM);
%AddNamedProperty($Array.prototype, symbolIterator, ArrayValues, DONT_ENUM);
}
ExtendArrayPrototype();
macro EXTEND_TYPED_ARRAY(NAME)
%AddNamedProperty(GlobalNAME.prototype, 'entries', ArrayEntries, DONT_ENUM);
%AddNamedProperty(GlobalNAME.prototype, 'values', ArrayValues, DONT_ENUM);
%AddNamedProperty(GlobalNAME.prototype, 'keys', ArrayKeys, DONT_ENUM);
%AddNamedProperty(GlobalNAME.prototype, symbolIterator, ArrayValues,
DONT_ENUM);
endmacro
TYPED_ARRAYS(EXTEND_TYPED_ARRAY)
function ExtendTypedArrayPrototypes() {
%CheckIsBootstrapping();
$iteratorCreateResultObject = CreateIteratorResultObject;
$arrayValues = ArrayValues;
macro TYPED_ARRAYS(FUNCTION)
FUNCTION(Uint8Array)
FUNCTION(Int8Array)
FUNCTION(Uint16Array)
FUNCTION(Int16Array)
FUNCTION(Uint32Array)
FUNCTION(Int32Array)
FUNCTION(Float32Array)
FUNCTION(Float64Array)
FUNCTION(Uint8ClampedArray)
endmacro
})();
macro EXTEND_TYPED_ARRAY(NAME)
%AddNamedProperty($NAME.prototype, 'entries', ArrayEntries, DONT_ENUM);
%AddNamedProperty($NAME.prototype, 'values', ArrayValues, DONT_ENUM);
%AddNamedProperty($NAME.prototype, 'keys', ArrayKeys, DONT_ENUM);
%AddNamedProperty($NAME.prototype, symbolIterator, ArrayValues, DONT_ENUM);
endmacro
TYPED_ARRAYS(EXTEND_TYPED_ARRAY)
}
ExtendTypedArrayPrototypes();
......@@ -2,14 +2,9 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
(function() {
"use strict";
%CheckIsBootstrapping();
var GlobalArrayBuffer = global.ArrayBuffer;
var GlobalObject = global.Object;
var $ArrayBuffer = global.ArrayBuffer;
// -------------------------------------------------------------------
......@@ -61,7 +56,7 @@ function ArrayBufferSlice(start, end) {
}
var newLen = fin - first;
// TODO(dslomov): implement inheritance
var result = new GlobalArrayBuffer(newLen);
var result = new $ArrayBuffer(newLen);
%ArrayBufferSliceImpl(this, result, first);
return result;
......@@ -71,26 +66,29 @@ function ArrayBufferIsViewJS(obj) {
return %ArrayBufferIsView(obj);
}
function SetUpArrayBuffer() {
%CheckIsBootstrapping();
// Set up the ArrayBuffer constructor function.
%SetCode(GlobalArrayBuffer, ArrayBufferConstructor);
%FunctionSetPrototype(GlobalArrayBuffer, new GlobalObject());
// Set up the ArrayBuffer constructor function.
%SetCode($ArrayBuffer, ArrayBufferConstructor);
%FunctionSetPrototype($ArrayBuffer, new $Object());
// Set up the constructor property on the ArrayBuffer prototype object.
%AddNamedProperty(
GlobalArrayBuffer.prototype, "constructor", GlobalArrayBuffer, DONT_ENUM);
// Set up the constructor property on the ArrayBuffer prototype object.
%AddNamedProperty(
$ArrayBuffer.prototype, "constructor", $ArrayBuffer, DONT_ENUM);
%AddNamedProperty(GlobalArrayBuffer.prototype,
%AddNamedProperty($ArrayBuffer.prototype,
symbolToStringTag, "ArrayBuffer", DONT_ENUM | READ_ONLY);
InstallGetter(GlobalArrayBuffer.prototype, "byteLength", ArrayBufferGetByteLen);
InstallGetter($ArrayBuffer.prototype, "byteLength", ArrayBufferGetByteLen);
InstallFunctions(GlobalArrayBuffer, DONT_ENUM, [
InstallFunctions($ArrayBuffer, DONT_ENUM, [
"isView", ArrayBufferIsViewJS
]);
]);
InstallFunctions(GlobalArrayBuffer.prototype, DONT_ENUM, [
InstallFunctions($ArrayBuffer.prototype, DONT_ENUM, [
"slice", ArrayBufferSlice
]);
]);
}
})();
SetUpArrayBuffer();
......@@ -1566,7 +1566,7 @@ void Genesis::InstallNativeFunctions() {
native_object_get_notifier);
INSTALL_NATIVE(JSFunction, "NativeObjectNotifierPerformChange",
native_object_notifier_perform_change);
INSTALL_NATIVE(JSFunction, "$arrayValues", array_values_iterator);
INSTALL_NATIVE(JSFunction, "ArrayValues", array_values_iterator);
}
......
......@@ -48,7 +48,7 @@ function StringIteratorNext() {
var s = GET_PRIVATE(iterator, stringIteratorIteratedStringSymbol);
if (IS_UNDEFINED(s)) {
return $iteratorCreateResultObject(UNDEFINED, true);
return CreateIteratorResultObject(UNDEFINED, true);
}
var position = GET_PRIVATE(iterator, stringIteratorNextIndexSymbol);
......@@ -57,7 +57,7 @@ function StringIteratorNext() {
if (position >= length) {
SET_PRIVATE(iterator, stringIteratorIteratedStringSymbol,
UNDEFINED);
return $iteratorCreateResultObject(UNDEFINED, true);
return CreateIteratorResultObject(UNDEFINED, true);
}
var first = %_StringCharCodeAt(s, position);
......@@ -74,7 +74,7 @@ function StringIteratorNext() {
SET_PRIVATE(iterator, stringIteratorNextIndexSymbol, position);
return $iteratorCreateResultObject(resultString, false);
return CreateIteratorResultObject(resultString, false);
}
......
......@@ -2,14 +2,13 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
(function() {
"use strict";
%CheckIsBootstrapping();
// This file relies on the fact that the following declaration has been made
// in runtime.js:
// var $Array = global.Array;
var $ArrayBuffer = global.ArrayBuffer;
var GlobalArray = global.Array;
var GlobalArrayBuffer = global.ArrayBuffer;
// --------------- Typed Arrays ---------------------
macro TYPED_ARRAYS(FUNCTION)
......@@ -79,7 +78,7 @@ function NAMEConstructByLength(obj, length) {
}
var byteLength = l * ELEMENT_SIZE;
if (byteLength > %_TypedArrayMaxSizeInHeap()) {
var buffer = new GlobalArrayBuffer(byteLength);
var buffer = new $ArrayBuffer(byteLength);
%_TypedArrayInitialize(obj, ARRAY_ID, buffer, 0, byteLength);
} else {
%_TypedArrayInitialize(obj, ARRAY_ID, null, 0, byteLength);
......@@ -244,7 +243,7 @@ function TypedArraySetFromOverlappingTypedArray(target, source, offset) {
}
var rightIndex = CopyRightPart();
var temp = new GlobalArray(rightIndex + 1 - leftIndex);
var temp = new $Array(rightIndex + 1 - leftIndex);
for (var i = leftIndex; i <= rightIndex; i++) {
temp[i - leftIndex] = source[i];
}
......@@ -301,6 +300,7 @@ function TypedArrayGetToStringTag() {
// -------------------------------------------------------------------
function SetupTypedArrays() {
macro SETUP_TYPED_ARRAY(ARRAY_ID, NAME, ELEMENT_SIZE)
%CheckIsBootstrapping();
%SetCode(global.NAME, NAMEConstructor);
......@@ -329,6 +329,9 @@ macro SETUP_TYPED_ARRAY(ARRAY_ID, NAME, ELEMENT_SIZE)
endmacro
TYPED_ARRAYS(SETUP_TYPED_ARRAY)
}
SetupTypedArrays();
// --------------------------- DataView -----------------------------
......@@ -436,20 +439,23 @@ endmacro
DATA_VIEW_TYPES(DATA_VIEW_GETTER_SETTER)
// Setup the DataView constructor.
%SetCode($DataView, DataViewConstructor);
%FunctionSetPrototype($DataView, new $Object);
function SetupDataView() {
%CheckIsBootstrapping();
// Set up constructor property on the DataView prototype.
%AddNamedProperty($DataView.prototype, "constructor", $DataView, DONT_ENUM);
%AddNamedProperty(
// Setup the DataView constructor.
%SetCode($DataView, DataViewConstructor);
%FunctionSetPrototype($DataView, new $Object);
// Set up constructor property on the DataView prototype.
%AddNamedProperty($DataView.prototype, "constructor", $DataView, DONT_ENUM);
%AddNamedProperty(
$DataView.prototype, symbolToStringTag, "DataView", READ_ONLY|DONT_ENUM);
InstallGetter($DataView.prototype, "buffer", DataViewGetBufferJS);
InstallGetter($DataView.prototype, "byteOffset", DataViewGetByteOffset);
InstallGetter($DataView.prototype, "byteLength", DataViewGetByteLength);
InstallGetter($DataView.prototype, "buffer", DataViewGetBufferJS);
InstallGetter($DataView.prototype, "byteOffset", DataViewGetByteOffset);
InstallGetter($DataView.prototype, "byteLength", DataViewGetByteLength);
InstallFunctions($DataView.prototype, DONT_ENUM, [
InstallFunctions($DataView.prototype, DONT_ENUM, [
"getInt8", DataViewGetInt8JS,
"setInt8", DataViewSetInt8JS,
......@@ -473,6 +479,7 @@ InstallFunctions($DataView.prototype, DONT_ENUM, [
"getFloat64", DataViewGetFloat64JS,
"setFloat64", DataViewSetFloat64JS
]);
]);
}
})();
SetupDataView();
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