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