Skip to content

Commit

Permalink
Revert of Wrap typed array implementations in functions. (patchset #1
Browse files Browse the repository at this point in the history
…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

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

Cr-Commit-Position: refs/heads/master@{#27789}
  • Loading branch information
mi-ac authored and Commit bot committed Apr 13, 2015
1 parent c8e4d57 commit 8e3fa7a
Show file tree
Hide file tree
Showing 5 changed files with 121 additions and 116 deletions.
106 changes: 53 additions & 53 deletions src/array-iterator.js
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down Expand Up @@ -122,38 +100,60 @@ function ArrayKeys() {
}


%FunctionSetPrototype(ArrayIterator, new GlobalObject());
%FunctionSetInstanceClassName(ArrayIterator, 'Array Iterator');
function SetUpArrayIterator() {
%CheckIsBootstrapping();

InstallFunctions(ArrayIterator.prototype, DONT_ENUM, [
'next', ArrayIteratorNext
]);
%FunctionSetName(ArrayIteratorIterator, '[Symbol.iterator]');
%AddNamedProperty(ArrayIterator.prototype, symbolIterator,
ArrayIteratorIterator, DONT_ENUM);
%AddNamedProperty(ArrayIterator.prototype, symbolToStringTag,
"Array Iterator", READ_ONLY | DONT_ENUM);
%FunctionSetPrototype(ArrayIterator, new $Object());
%FunctionSetInstanceClassName(ArrayIterator, 'Array Iterator');

InstallFunctions(GlobalArray.prototype, DONT_ENUM, [
// No 'values' since it breaks webcompat: http://crbug.com/409858
'entries', ArrayEntries,
'keys', ArrayKeys
]);
InstallFunctions(ArrayIterator.prototype, DONT_ENUM, [
'next', ArrayIteratorNext
]);
%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)
%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
function ExtendArrayPrototype() {
%CheckIsBootstrapping();

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;
$arrayValues = ArrayValues;
%AddNamedProperty($Array.prototype, symbolIterator, ArrayValues, DONT_ENUM);
}
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();
44 changes: 21 additions & 23 deletions src/arraybuffer.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;

// -------------------------------------------------------------------

Expand Down Expand Up @@ -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;
Expand All @@ -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,
symbolToStringTag, "ArrayBuffer", DONT_ENUM | READ_ONLY);
%AddNamedProperty($ArrayBuffer.prototype,
symbolToStringTag, "ArrayBuffer", DONT_ENUM | READ_ONLY);

InstallGetter(GlobalArrayBuffer.prototype, "byteLength", ArrayBufferGetByteLen);
InstallGetter($ArrayBuffer.prototype, "byteLength", ArrayBufferGetByteLen);

InstallFunctions(GlobalArrayBuffer, DONT_ENUM, [
"isView", ArrayBufferIsViewJS
]);
InstallFunctions($ArrayBuffer, DONT_ENUM, [
"isView", ArrayBufferIsViewJS
]);

InstallFunctions(GlobalArrayBuffer.prototype, DONT_ENUM, [
"slice", ArrayBufferSlice
]);
InstallFunctions($ArrayBuffer.prototype, DONT_ENUM, [
"slice", ArrayBufferSlice
]);
}

})();
SetUpArrayBuffer();
2 changes: 1 addition & 1 deletion src/bootstrapper.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}


Expand Down
6 changes: 3 additions & 3 deletions src/string-iterator.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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);
Expand All @@ -74,7 +74,7 @@ function StringIteratorNext() {

SET_PRIVATE(iterator, stringIteratorNextIndexSymbol, position);

return $iteratorCreateResultObject(resultString, false);
return CreateIteratorResultObject(resultString, false);
}


Expand Down
79 changes: 43 additions & 36 deletions src/typedarray.js
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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];
}
Expand Down Expand Up @@ -301,6 +300,7 @@ function TypedArrayGetToStringTag() {

// -------------------------------------------------------------------

function SetupTypedArrays() {
macro SETUP_TYPED_ARRAY(ARRAY_ID, NAME, ELEMENT_SIZE)
%CheckIsBootstrapping();
%SetCode(global.NAME, NAMEConstructor);
Expand Down Expand Up @@ -329,6 +329,9 @@ macro SETUP_TYPED_ARRAY(ARRAY_ID, NAME, ELEMENT_SIZE)
endmacro

TYPED_ARRAYS(SETUP_TYPED_ARRAY)
}

SetupTypedArrays();

// --------------------------- DataView -----------------------------

Expand Down Expand Up @@ -436,43 +439,47 @@ 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(
$DataView.prototype, symbolToStringTag, "DataView", READ_ONLY|DONT_ENUM);
// Setup the DataView constructor.
%SetCode($DataView, DataViewConstructor);
%FunctionSetPrototype($DataView, new $Object);

InstallGetter($DataView.prototype, "buffer", DataViewGetBufferJS);
InstallGetter($DataView.prototype, "byteOffset", DataViewGetByteOffset);
InstallGetter($DataView.prototype, "byteLength", DataViewGetByteLength);
// Set up constructor property on the DataView prototype.
%AddNamedProperty($DataView.prototype, "constructor", $DataView, DONT_ENUM);
%AddNamedProperty(
$DataView.prototype, symbolToStringTag, "DataView", READ_ONLY|DONT_ENUM);

InstallFunctions($DataView.prototype, DONT_ENUM, [
"getInt8", DataViewGetInt8JS,
"setInt8", DataViewSetInt8JS,
InstallGetter($DataView.prototype, "buffer", DataViewGetBufferJS);
InstallGetter($DataView.prototype, "byteOffset", DataViewGetByteOffset);
InstallGetter($DataView.prototype, "byteLength", DataViewGetByteLength);

"getUint8", DataViewGetUint8JS,
"setUint8", DataViewSetUint8JS,
InstallFunctions($DataView.prototype, DONT_ENUM, [
"getInt8", DataViewGetInt8JS,
"setInt8", DataViewSetInt8JS,

"getInt16", DataViewGetInt16JS,
"setInt16", DataViewSetInt16JS,
"getUint8", DataViewGetUint8JS,
"setUint8", DataViewSetUint8JS,

"getUint16", DataViewGetUint16JS,
"setUint16", DataViewSetUint16JS,
"getInt16", DataViewGetInt16JS,
"setInt16", DataViewSetInt16JS,

"getInt32", DataViewGetInt32JS,
"setInt32", DataViewSetInt32JS,
"getUint16", DataViewGetUint16JS,
"setUint16", DataViewSetUint16JS,

"getUint32", DataViewGetUint32JS,
"setUint32", DataViewSetUint32JS,
"getInt32", DataViewGetInt32JS,
"setInt32", DataViewSetInt32JS,

"getFloat32", DataViewGetFloat32JS,
"setFloat32", DataViewSetFloat32JS,
"getUint32", DataViewGetUint32JS,
"setUint32", DataViewSetUint32JS,

"getFloat64", DataViewGetFloat64JS,
"setFloat64", DataViewSetFloat64JS
]);
"getFloat32", DataViewGetFloat32JS,
"setFloat32", DataViewSetFloat32JS,

"getFloat64", DataViewGetFloat64JS,
"setFloat64", DataViewSetFloat64JS
]);
}

})();
SetupDataView();

0 comments on commit 8e3fa7a

Please sign in to comment.