Skip to content

Commit

Permalink
Revert of Revert of Hook up more import/exports in natives. (patchset…
Browse files Browse the repository at this point in the history
… #1 id:1 of https://codereview.chromium.org/1154743003/)

Reason for revert:
Unrelated failure that was uncovered by this CL has been fixed (https://codereview.chromium.org/1152243002/)

Original issue's description:
> Revert of Hook up more import/exports in natives. (patchset v8#3 id:40001 of https://codereview.chromium.org/1154483002/)
>
> Reason for revert:
> [Sheriff] Speculative revert for gc stress failures:
> http://build.chromium.org/p/client.v8/builders/V8%20Linux64%20GC%20Stress%20-%20custom%20snapshot/builds/481
>
> Original issue's description:
> > Hook up more import/exports in natives.
> >
> > R=jkummerow@chromium.org
> >
> > Committed: https://crrev.com/7a918ac9658d11778f39593bfcc19d7c506defd9
> > Cr-Commit-Position: refs/heads/master@{#28573}
> >
> > Committed: https://crrev.com/e13a39dd7f4062898709d7c68900677df0513995
> > Cr-Commit-Position: refs/heads/master@{#28578}
>
> TBR=jkummerow@chromium.org,erik.corry@gmail.com,yangguo@chromium.org
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
>
> Committed: https://crrev.com/eb0024d1dbdda5f51b006dd54887404ee6c5cbfc
> Cr-Commit-Position: refs/heads/master@{#28584}

TBR=jkummerow@chromium.org,erik.corry@gmail.com,machenbach@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#28608}
  • Loading branch information
hashseed authored and Commit bot committed May 26, 2015
1 parent 61a5962 commit 5cb925e
Show file tree
Hide file tree
Showing 34 changed files with 705 additions and 511 deletions.
15 changes: 10 additions & 5 deletions src/array-iterator.js
Expand Up @@ -2,7 +2,6 @@
// 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(global, utils) {
Expand Down Expand Up @@ -124,16 +123,16 @@ function ArrayKeys() {
%FunctionSetPrototype(ArrayIterator, {__proto__: $iteratorPrototype});
%FunctionSetInstanceClassName(ArrayIterator, 'Array Iterator');

$installFunctions(ArrayIterator.prototype, DONT_ENUM, [
utils.InstallFunctions(ArrayIterator.prototype, DONT_ENUM, [
'next', ArrayIteratorNext
]);
$setFunctionName(ArrayIteratorIterator, symbolIterator);
utils.SetFunctionName(ArrayIteratorIterator, symbolIterator);
%AddNamedProperty(ArrayIterator.prototype, symbolIterator,
ArrayIteratorIterator, DONT_ENUM);
%AddNamedProperty(ArrayIterator.prototype, symbolToStringTag,
"Array Iterator", READ_ONLY | DONT_ENUM);

$installFunctions(GlobalArray.prototype, DONT_ENUM, [
utils.InstallFunctions(GlobalArray.prototype, DONT_ENUM, [
// No 'values' since it breaks webcompat: http://crbug.com/409858
'entries', ArrayEntries,
'keys', ArrayKeys
Expand All @@ -152,7 +151,13 @@ endmacro

TYPED_ARRAYS(EXTEND_TYPED_ARRAY)

$iteratorCreateResultObject = CreateIteratorResultObject;
// -------------------------------------------------------------------
// Exports

utils.Export(function(to) {
to.ArrayIteratorCreateResultObject = CreateIteratorResultObject;
});

$arrayValues = ArrayValues;

})
67 changes: 36 additions & 31 deletions src/array.js
Expand Up @@ -3,22 +3,12 @@
// found in the LICENSE file.

var $arrayConcat;
var $arrayJoin;
var $arrayPush;
var $arrayPop;
var $arrayShift;
var $arraySlice;
var $arraySplice;
var $arrayUnshift;
var $innerArrayForEach;
var $innerArrayEvery;
var $innerArrayFilter;
var $innerArrayIndexOf;
var $innerArrayLastIndexOf;
var $innerArrayMap;
var $innerArrayReverse;
var $innerArraySome;
var $innerArraySort;

(function(global, utils) {

Expand All @@ -33,10 +23,20 @@ var GlobalArray = global.Array;
var InternalArray = utils.InternalArray;
var InternalPackedArray = utils.InternalPackedArray;

var Delete;
var MathMin;
var ObjectHasOwnProperty;
var ObjectIsFrozen;
var ObjectIsSealed;
var ObjectToString;

utils.Import(function(from) {
Delete = from.Delete;
MathMin = from.MathMin;
ObjectHasOwnProperty = from.ObjectHasOwnProperty;
ObjectIsFrozen = from.ObjectIsFrozen;
ObjectIsSealed = from.ObjectIsSealed;
ObjectToString = from.ObjectToString;
});

// -------------------------------------------------------------------
Expand Down Expand Up @@ -392,7 +392,7 @@ function ArrayToString() {
func = array.join;
}
if (!IS_SPEC_FUNCTION(func)) {
return %_CallFunction(array, $objectToString);
return %_CallFunction(array, ObjectToString);
}
return %_CallFunction(array, func);
}
Expand Down Expand Up @@ -467,7 +467,7 @@ function ArrayPop() {

n--;
var value = array[n];
$delete(array, $toName(n), true);
Delete(array, $toName(n), true);
array.length = n;
return value;
}
Expand Down Expand Up @@ -645,7 +645,7 @@ function ArrayShift() {
return;
}

if ($objectIsSealed(array)) throw MakeTypeError(kArrayFunctionsOnSealed);
if (ObjectIsSealed(array)) throw MakeTypeError(kArrayFunctionsOnSealed);

if (%IsObserved(array))
return ObservedArrayShift.call(array, len);
Expand Down Expand Up @@ -696,7 +696,7 @@ function ArrayUnshift(arg1) { // length == 1
var num_arguments = %_ArgumentsLength();

if (len > 0 && UseSparseVariant(array, len, IS_ARRAY(array), len) &&
!$objectIsSealed(array)) {
!ObjectIsSealed(array)) {
SparseMove(array, 0, 0, len, num_arguments);
} else {
SimpleMove(array, 0, 0, len, num_arguments);
Expand Down Expand Up @@ -842,9 +842,9 @@ function ArraySplice(start, delete_count) {
deleted_elements.length = del_count;
var num_elements_to_add = num_arguments > 2 ? num_arguments - 2 : 0;

if (del_count != num_elements_to_add && $objectIsSealed(array)) {
if (del_count != num_elements_to_add && ObjectIsSealed(array)) {
throw MakeTypeError(kArrayFunctionsOnSealed);
} else if (del_count > 0 && $objectIsFrozen(array)) {
} else if (del_count > 0 && ObjectIsFrozen(array)) {
throw MakeTypeError(kArrayFunctionsOnFrozen);
}

Expand Down Expand Up @@ -1582,7 +1582,7 @@ var unscopables = {
DONT_ENUM | READ_ONLY);

// Set up non-enumerable functions on the Array object.
$installFunctions(GlobalArray, DONT_ENUM, [
utils.InstallFunctions(GlobalArray, DONT_ENUM, [
"isArray", ArrayIsArray
]);

Expand All @@ -1603,7 +1603,7 @@ var getFunction = function(name, jsBuiltin, len) {
// set their names.
// Manipulate the length of some of the functions to meet
// expectations set by ECMA-262 or Mozilla.
$installFunctions(GlobalArray.prototype, DONT_ENUM, [
utils.InstallFunctions(GlobalArray.prototype, DONT_ENUM, [
"toString", getFunction("toString", ArrayToString),
"toLocaleString", getFunction("toLocaleString", ArrayToLocaleString),
"join", getFunction("join", ArrayJoin),
Expand Down Expand Up @@ -1632,7 +1632,7 @@ $installFunctions(GlobalArray.prototype, DONT_ENUM, [
// The internal Array prototype doesn't need to be fancy, since it's never
// exposed to user code.
// Adding only the functions that are actually used.
$setUpLockedPrototype(InternalArray, GlobalArray(), [
utils.SetUpLockedPrototype(InternalArray, GlobalArray(), [
"concat", getFunction("concat", ArrayConcatJS),
"indexOf", getFunction("indexOf", ArrayIndexOf),
"join", getFunction("join", ArrayJoin),
Expand All @@ -1642,30 +1642,35 @@ $setUpLockedPrototype(InternalArray, GlobalArray(), [
"splice", getFunction("splice", ArraySplice)
]);

$setUpLockedPrototype(InternalPackedArray, GlobalArray(), [
utils.SetUpLockedPrototype(InternalPackedArray, GlobalArray(), [
"join", getFunction("join", ArrayJoin),
"pop", getFunction("pop", ArrayPop),
"push", getFunction("push", ArrayPush),
"shift", getFunction("shift", ArrayShift)
]);

// -------------------------------------------------------------------
// Exports

utils.Export(function(to) {
to.ArrayJoin = ArrayJoin;
to.InnerArrayEvery = InnerArrayEvery;
to.InnerArrayFilter = InnerArrayFilter;
to.InnerArrayForEach = InnerArrayForEach;
to.InnerArrayIndexOf = InnerArrayIndexOf;
to.InnerArrayLastIndexOf = InnerArrayLastIndexOf;
to.InnerArrayMap = InnerArrayMap;
to.InnerArrayReverse = InnerArrayReverse;
to.InnerArraySome = InnerArraySome;
to.InnerArraySort = InnerArraySort;
});

$arrayConcat = ArrayConcatJS;
$arrayJoin = ArrayJoin;
$arrayPush = ArrayPush;
$arrayPop = ArrayPop;
$arrayShift = ArrayShift;
$arraySlice = ArraySlice;
$arraySplice = ArraySplice;
$arrayUnshift = ArrayUnshift;

$innerArrayEvery = InnerArrayEvery;
$innerArrayFilter = InnerArrayFilter;
$innerArrayForEach = InnerArrayForEach;
$innerArrayIndexOf = InnerArrayIndexOf;
$innerArrayLastIndexOf = InnerArrayLastIndexOf;
$innerArrayMap = InnerArrayMap;
$innerArrayReverse = InnerArrayReverse;
$innerArraySome = InnerArraySome;
$innerArraySort = InnerArraySort;

});
7 changes: 3 additions & 4 deletions src/arraybuffer.js
Expand Up @@ -8,7 +8,6 @@

%CheckIsBootstrapping();


// -------------------------------------------------------------------
// Imports

Expand Down Expand Up @@ -95,13 +94,13 @@ function ArrayBufferIsViewJS(obj) {
%AddNamedProperty(GlobalArrayBuffer.prototype,
symbolToStringTag, "ArrayBuffer", DONT_ENUM | READ_ONLY);

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

$installFunctions(GlobalArrayBuffer, DONT_ENUM, [
utils.InstallFunctions(GlobalArrayBuffer, DONT_ENUM, [
"isView", ArrayBufferIsViewJS
]);

$installFunctions(GlobalArrayBuffer.prototype, DONT_ENUM, [
utils.InstallFunctions(GlobalArrayBuffer.prototype, DONT_ENUM, [
"slice", ArrayBufferSlice
]);

Expand Down
5 changes: 4 additions & 1 deletion src/bootstrapper.cc
Expand Up @@ -1530,7 +1530,8 @@ bool Genesis::CallUtilsFunction(Isolate* isolate, const char* name) {
isolate->factory()->NewStringFromAsciiChecked(name);
Handle<Object> fun = JSObject::GetDataProperty(utils, name_string);
Handle<Object> receiver = isolate->factory()->undefined_value();
return !Execution::Call(isolate, fun, receiver, 0, NULL).is_null();
Handle<Object> args[] = {utils};
return !Execution::Call(isolate, fun, receiver, 1, args).is_null();
}


Expand Down Expand Up @@ -2446,6 +2447,8 @@ bool Genesis::InstallExperimentalNatives() {
#undef INSTALL_EXPERIMENTAL_NATIVES
}

CallUtilsFunction(isolate(), "PostExperimentals");

InstallExperimentalNativeFunctions();
return true;
}
Expand Down
8 changes: 4 additions & 4 deletions src/collection-iterator.js
Expand Up @@ -70,14 +70,14 @@ function SetValues() {
%SetCode(SetIterator, SetIteratorConstructor);
%FunctionSetPrototype(SetIterator, {__proto__: $iteratorPrototype});
%FunctionSetInstanceClassName(SetIterator, 'Set Iterator');
$installFunctions(SetIterator.prototype, DONT_ENUM, [
utils.InstallFunctions(SetIterator.prototype, DONT_ENUM, [
'next', SetIteratorNextJS
]);

%AddNamedProperty(SetIterator.prototype, symbolToStringTag,
"Set Iterator", READ_ONLY | DONT_ENUM);

$installFunctions(GlobalSet.prototype, DONT_ENUM, [
utils.InstallFunctions(GlobalSet.prototype, DONT_ENUM, [
'entries', SetEntries,
'keys', SetValues,
'values', SetValues
Expand Down Expand Up @@ -152,15 +152,15 @@ function MapValues() {
%SetCode(MapIterator, MapIteratorConstructor);
%FunctionSetPrototype(MapIterator, {__proto__: $iteratorPrototype});
%FunctionSetInstanceClassName(MapIterator, 'Map Iterator');
$installFunctions(MapIterator.prototype, DONT_ENUM, [
utils.InstallFunctions(MapIterator.prototype, DONT_ENUM, [
'next', MapIteratorNextJS
]);

%AddNamedProperty(MapIterator.prototype, symbolToStringTag,
"Map Iterator", READ_ONLY | DONT_ENUM);


$installFunctions(GlobalMap.prototype, DONT_ENUM, [
utils.InstallFunctions(GlobalMap.prototype, DONT_ENUM, [
'entries', MapEntries,
'keys', MapKeys,
'values', MapValues
Expand Down
25 changes: 17 additions & 8 deletions src/collection.js
Expand Up @@ -8,10 +8,19 @@

%CheckIsBootstrapping();

// -------------------------------------------------------------------
// Imports

var GlobalMap = global.Map;
var GlobalObject = global.Object;
var GlobalSet = global.Set;

var NumberIsNaN;

utils.Import(function(from) {
NumberIsNaN = from.NumberIsNaN;
});

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

function HashToEntry(table, hash, numBuckets) {
Expand All @@ -22,15 +31,15 @@ function HashToEntry(table, hash, numBuckets) {


function SetFindEntry(table, numBuckets, key, hash) {
var keyIsNaN = $numberIsNaN(key);
var keyIsNaN = NumberIsNaN(key);
for (var entry = HashToEntry(table, hash, numBuckets);
entry !== NOT_FOUND;
entry = ORDERED_HASH_SET_CHAIN_AT(table, entry, numBuckets)) {
var candidate = ORDERED_HASH_SET_KEY_AT(table, entry, numBuckets);
if (key === candidate) {
return entry;
}
if (keyIsNaN && $numberIsNaN(candidate)) {
if (keyIsNaN && NumberIsNaN(candidate)) {
return entry;
}
}
Expand All @@ -40,15 +49,15 @@ function SetFindEntry(table, numBuckets, key, hash) {


function MapFindEntry(table, numBuckets, key, hash) {
var keyIsNaN = $numberIsNaN(key);
var keyIsNaN = NumberIsNaN(key);
for (var entry = HashToEntry(table, hash, numBuckets);
entry !== NOT_FOUND;
entry = ORDERED_HASH_MAP_CHAIN_AT(table, entry, numBuckets)) {
var candidate = ORDERED_HASH_MAP_KEY_AT(table, entry, numBuckets);
if (key === candidate) {
return entry;
}
if (keyIsNaN && $numberIsNaN(candidate)) {
if (keyIsNaN && NumberIsNaN(candidate)) {
return entry;
}
}
Expand Down Expand Up @@ -239,8 +248,8 @@ function SetForEach(f, receiver) {
%FunctionSetLength(SetForEach, 1);

// Set up the non-enumerable functions on the Set prototype object.
$installGetter(GlobalSet.prototype, "size", SetGetSize);
$installFunctions(GlobalSet.prototype, DONT_ENUM, [
utils.InstallGetter(GlobalSet.prototype, "size", SetGetSize);
utils.InstallFunctions(GlobalSet.prototype, DONT_ENUM, [
"add", SetAdd,
"has", SetHas,
"delete", SetDelete,
Expand Down Expand Up @@ -427,8 +436,8 @@ function MapForEach(f, receiver) {
%FunctionSetLength(MapForEach, 1);

// Set up the non-enumerable functions on the Map prototype object.
$installGetter(GlobalMap.prototype, "size", MapGetSize);
$installFunctions(GlobalMap.prototype, DONT_ENUM, [
utils.InstallGetter(GlobalMap.prototype, "size", MapGetSize);
utils.InstallFunctions(GlobalMap.prototype, DONT_ENUM, [
"get", MapGet,
"set", MapSet,
"has", MapHas,
Expand Down

0 comments on commit 5cb925e

Please sign in to comment.