Revert of Wrap v8natives.js into a function. (patchset #2 id:20001 of https://coderev...
authormachenbach <machenbach@chromium.org>
Thu, 30 Apr 2015 17:33:13 +0000 (10:33 -0700)
committerCommit bot <commit-bot@chromium.org>
Thu, 30 Apr 2015 17:33:19 +0000 (17:33 +0000)
Reason for revert:
[Sheriff] Speculative revert for breaking layout tests, e.g.:
http://build.chromium.org/p/client.v8/builders/V8-Blink%20Linux%2064%20%28dbg%29/builds/2682

See. e.g.:
https://storage.googleapis.com/chromium-layout-test-archives/V8-Blink_Win/3130/layout-test-results/http/tests/websocket/workers/worker-reload-diff.txt

Original issue's description:
> Wrap v8natives.js into a function.
>
> R=jkummerow@chromium.org
>
> Committed: https://crrev.com/ee1b39b4303829e6c6805fe8b2f2602b13f6463a
> Cr-Commit-Position: refs/heads/master@{#28174}

TBR=jkummerow@chromium.org,yangguo@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#28182}

36 files changed:
src/api.cc
src/array-iterator.js
src/array.js
src/arraybuffer.js
src/bootstrapper.cc
src/collection-iterator.js
src/collection.js
src/date.js
src/generator.js
src/harmony-array-includes.js
src/harmony-array.js
src/harmony-reflect.js
src/harmony-tostring.js
src/harmony-typedarray.js
src/i18n.js
src/isolate.cc
src/isolate.h
src/json.js
src/macros.py
src/math.js
src/messages.js
src/mirror-debugger.js
src/object-observe.js
src/promise.js
src/proxy.js
src/regexp.js
src/string-iterator.js
src/string.js
src/symbol.js
src/third_party/fdlibm/fdlibm.js
src/typedarray.js
src/uri.js
src/v8natives.js
src/weak-collection.js
test/mjsunit/compiler/jsnatives.js
tools/jsmin.py

index 9986df8..46b8a52 100644 (file)
@@ -3589,7 +3589,7 @@ MaybeLocal<Value> v8::Object::GetOwnPropertyDescriptor(Local<Context> context,
   i::Handle<i::Object> args[] = { obj, key_name };
   i::Handle<i::Object> result;
   has_pending_exception =
-      !CallV8HeapFunction(isolate, "$objectGetOwnPropertyDescriptor",
+      !CallV8HeapFunction(isolate, "ObjectGetOwnPropertyDescriptor",
                           isolate->factory()->undefined_value(),
                           arraysize(args), args).ToHandle(&result);
   RETURN_ON_FAILED_EXECUTION(Value);
index 45a432e..0c7cda3 100644 (file)
@@ -125,16 +125,16 @@ function ArrayKeys() {
 %FunctionSetPrototype(ArrayIterator, new GlobalObject());
 %FunctionSetInstanceClassName(ArrayIterator, 'Array Iterator');
 
-$installFunctions(ArrayIterator.prototype, DONT_ENUM, [
+InstallFunctions(ArrayIterator.prototype, DONT_ENUM, [
   'next', ArrayIteratorNext
 ]);
-$setFunctionName(ArrayIteratorIterator, symbolIterator);
+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, [
+InstallFunctions(GlobalArray.prototype, DONT_ENUM, [
   // No 'values' since it breaks webcompat: http://crbug.com/409858
   'entries', ArrayEntries,
   'keys', ArrayKeys
index 201691a..db364be 100644 (file)
@@ -372,7 +372,7 @@ function ArrayToString() {
     func = array.join;
   }
   if (!IS_SPEC_FUNCTION(func)) {
-    return %_CallFunction(array, $objectToString);
+    return %_CallFunction(array, ObjectToString);
   }
   return %_CallFunction(array, func);
 }
@@ -447,7 +447,7 @@ function ArrayPop() {
 
   n--;
   var value = array[n];
-  $delete(array, ToName(n), true);
+  Delete(array, ToName(n), true);
   array.length = n;
   return value;
 }
@@ -620,7 +620,7 @@ function ArrayShift() {
     return;
   }
 
-  if ($objectIsSealed(array)) throw MakeTypeError(kArrayFunctionsOnSealed);
+  if (ObjectIsSealed(array)) throw MakeTypeError(kArrayFunctionsOnSealed);
 
   if (%IsObserved(array))
     return ObservedArrayShift.call(array, len);
@@ -671,7 +671,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);
@@ -817,9 +817,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);
   }
 
@@ -1523,7 +1523,7 @@ var unscopables = {
                   DONT_ENUM | READ_ONLY);
 
 // Set up non-enumerable functions on the Array object.
-$installFunctions(GlobalArray, DONT_ENUM, [
+InstallFunctions(GlobalArray, DONT_ENUM, [
   "isArray", ArrayIsArray
 ]);
 
@@ -1544,7 +1544,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, [
+InstallFunctions(GlobalArray.prototype, DONT_ENUM, [
   "toString", getFunction("toString", ArrayToString),
   "toLocaleString", getFunction("toLocaleString", ArrayToLocaleString),
   "join", getFunction("join", ArrayJoin),
@@ -1573,7 +1573,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(), [
+SetUpLockedPrototype(InternalArray, GlobalArray(), [
   "concat", getFunction("concat", ArrayConcatJS),
   "indexOf", getFunction("indexOf", ArrayIndexOf),
   "join", getFunction("join", ArrayJoin),
@@ -1583,7 +1583,7 @@ $setUpLockedPrototype(InternalArray, GlobalArray(), [
   "splice", getFunction("splice", ArraySplice)
 ]);
 
-$setUpLockedPrototype(InternalPackedArray, GlobalArray(), [
+SetUpLockedPrototype(InternalPackedArray, GlobalArray(), [
   "join", getFunction("join", ArrayJoin),
   "pop", getFunction("pop", ArrayPop),
   "push", getFunction("push", ArrayPush),
index 774b1cf..2a6ef80 100644 (file)
@@ -83,13 +83,13 @@ function ArrayBufferIsViewJS(obj) {
 %AddNamedProperty(GlobalArrayBuffer.prototype,
     symbolToStringTag, "ArrayBuffer", DONT_ENUM | READ_ONLY);
 
-$installGetter(GlobalArrayBuffer.prototype, "byteLength", ArrayBufferGetByteLen);
+InstallGetter(GlobalArrayBuffer.prototype, "byteLength", ArrayBufferGetByteLen);
 
-$installFunctions(GlobalArrayBuffer, DONT_ENUM, [
+InstallFunctions(GlobalArrayBuffer, DONT_ENUM, [
   "isView", ArrayBufferIsViewJS
 ]);
 
-$installFunctions(GlobalArrayBuffer.prototype, DONT_ENUM, [
+InstallFunctions(GlobalArrayBuffer.prototype, DONT_ENUM, [
   "slice", ArrayBufferSlice
 ]);
 
index 23ffc86..01c2b6d 100644 (file)
@@ -1573,9 +1573,9 @@ void Genesis::InstallNativeFunctions() {
   INSTALL_NATIVE(JSFunction, "ToInt32", to_int32_fun);
   INSTALL_NATIVE(JSFunction, "ToLength", to_length_fun);
 
-  INSTALL_NATIVE(JSFunction, "$globalEval", global_eval_fun);
+  INSTALL_NATIVE(JSFunction, "GlobalEval", global_eval_fun);
   INSTALL_NATIVE(JSFunction, "$getStackTraceLine", get_stack_trace_line_fun);
-  INSTALL_NATIVE(JSFunction, "$toCompletePropertyDescriptor",
+  INSTALL_NATIVE(JSFunction, "ToCompletePropertyDescriptor",
                  to_complete_property_descriptor);
 
   INSTALL_NATIVE(Symbol, "$promiseStatus", promise_status);
index 464703c..d2e0af9 100644 (file)
@@ -76,17 +76,17 @@ function SetValues() {
 %SetCode(SetIterator, SetIteratorConstructor);
 %FunctionSetPrototype(SetIterator, new GlobalObject());
 %FunctionSetInstanceClassName(SetIterator, 'Set Iterator');
-$installFunctions(SetIterator.prototype, DONT_ENUM, [
+InstallFunctions(SetIterator.prototype, DONT_ENUM, [
   'next', SetIteratorNextJS
 ]);
 
-$setFunctionName(SetIteratorSymbolIterator, symbolIterator);
+SetFunctionName(SetIteratorSymbolIterator, symbolIterator);
 %AddNamedProperty(SetIterator.prototype, symbolIterator,
     SetIteratorSymbolIterator, DONT_ENUM);
 %AddNamedProperty(SetIterator.prototype, symbolToStringTag,
     "Set Iterator", READ_ONLY | DONT_ENUM);
 
-$installFunctions(GlobalSet.prototype, DONT_ENUM, [
+InstallFunctions(GlobalSet.prototype, DONT_ENUM, [
   'entries', SetEntries,
   'keys', SetValues,
   'values', SetValues
@@ -166,18 +166,18 @@ function MapValues() {
 %SetCode(MapIterator, MapIteratorConstructor);
 %FunctionSetPrototype(MapIterator, new GlobalObject());
 %FunctionSetInstanceClassName(MapIterator, 'Map Iterator');
-$installFunctions(MapIterator.prototype, DONT_ENUM, [
+InstallFunctions(MapIterator.prototype, DONT_ENUM, [
   'next', MapIteratorNextJS
 ]);
 
-$setFunctionName(MapIteratorSymbolIterator, symbolIterator);
+SetFunctionName(MapIteratorSymbolIterator, symbolIterator);
 %AddNamedProperty(MapIterator.prototype, symbolIterator,
     MapIteratorSymbolIterator, DONT_ENUM);
 %AddNamedProperty(MapIterator.prototype, symbolToStringTag,
     "Map Iterator", READ_ONLY | DONT_ENUM);
 
 
-$installFunctions(GlobalMap.prototype, DONT_ENUM, [
+InstallFunctions(GlobalMap.prototype, DONT_ENUM, [
   'entries', MapEntries,
   'keys', MapKeys,
   'values', MapValues
index de862cb..206aaa7 100644 (file)
@@ -22,7 +22,7 @@ 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)) {
@@ -30,7 +30,7 @@ function SetFindEntry(table, numBuckets, key, hash) {
     if (key === candidate) {
       return entry;
     }
-    if (keyIsNaN && $numberIsNaN(candidate)) {
+    if (keyIsNaN && NumberIsNaN(candidate)) {
       return entry;
     }
   }
@@ -40,7 +40,7 @@ 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)) {
@@ -48,7 +48,7 @@ function MapFindEntry(table, numBuckets, key, hash) {
     if (key === candidate) {
       return entry;
     }
-    if (keyIsNaN && $numberIsNaN(candidate)) {
+    if (keyIsNaN && NumberIsNaN(candidate)) {
       return entry;
     }
   }
@@ -239,8 +239,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, [
+InstallGetter(GlobalSet.prototype, "size", SetGetSize);
+InstallFunctions(GlobalSet.prototype, DONT_ENUM, [
   "add", SetAdd,
   "has", SetHas,
   "delete", SetDelete,
@@ -427,8 +427,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, [
+InstallGetter(GlobalMap.prototype, "size", MapGetSize);
+InstallFunctions(GlobalMap.prototype, DONT_ENUM, [
   "get", MapGet,
   "set", MapSet,
   "has", MapHas,
index 4bf5340..81246cf 100644 (file)
@@ -760,7 +760,7 @@ function CreateDate(time) {
 %FunctionSetPrototype(GlobalDate, new GlobalDate(NAN));
 
 // Set up non-enumerable properties of the Date object itself.
-$installFunctions(GlobalDate, DONT_ENUM, [
+InstallFunctions(GlobalDate, DONT_ENUM, [
   "UTC", DateUTC,
   "parse", DateParse,
   "now", DateNow
@@ -771,7 +771,7 @@ $installFunctions(GlobalDate, DONT_ENUM, [
 
 // Set up non-enumerable functions of the Date prototype object and
 // set their names.
-$installFunctions(GlobalDate.prototype, DONT_ENUM, [
+InstallFunctions(GlobalDate.prototype, DONT_ENUM, [
   "toString", DateToString,
   "toDateString", DateToDateString,
   "toTimeString", DateToTimeString,
index 3c925cc..2b0bcbd 100644 (file)
@@ -72,7 +72,7 @@ function GeneratorObjectIterator() {
 
 
 function GeneratorFunctionConstructor(arg1) {  // length == 1
-  var source = $newFunctionString(arguments, 'function*');
+  var source = NewFunctionString(arguments, 'function*');
   var global_proxy = %GlobalProxy(global);
   // Compile the string in the constructor and not a helper so that errors
   // appear to come from here.
@@ -90,12 +90,12 @@ function GeneratorFunctionConstructor(arg1) {  // length == 1
 
 // Set up non-enumerable functions on the generator prototype object.
 var GeneratorObjectPrototype = GeneratorFunctionPrototype.prototype;
-$installFunctions(GeneratorObjectPrototype,
+InstallFunctions(GeneratorObjectPrototype,
                  DONT_ENUM,
                  ["next", GeneratorObjectNext,
                   "throw", GeneratorObjectThrow]);
 
-$setFunctionName(GeneratorObjectIterator, symbolIterator);
+SetFunctionName(GeneratorObjectIterator, symbolIterator);
 %AddNamedProperty(GeneratorObjectPrototype, symbolIterator,
     GeneratorObjectIterator, DONT_ENUM | DONT_DELETE | READ_ONLY);
 %AddNamedProperty(GeneratorObjectPrototype, "constructor",
index c8cf788..0276875 100644 (file)
@@ -52,7 +52,7 @@ function ArrayIncludes(searchElement, fromIndex) {
 %FunctionSetLength(ArrayIncludes, 1);
 
 // Set up the non-enumerable functions on the Array prototype object.
-$installFunctions(GlobalArray.prototype, DONT_ENUM, [
+InstallFunctions(GlobalArray.prototype, DONT_ENUM, [
   "includes", ArrayIncludes
 ]);
 
index 2e87d5f..b24caff 100644 (file)
@@ -173,7 +173,7 @@ function ArrayFill(value /* [, start [, end ] ] */) {  // length == 1
     if (end > length) end = length;
   }
 
-  if ((end - i) > 0 && $objectIsFrozen(array)) {
+  if ((end - i) > 0 && ObjectIsFrozen(array)) {
     throw MakeTypeError(kArrayFunctionsOnFrozen);
   }
 
@@ -197,7 +197,7 @@ function ArrayFrom(arrayLike, mapfn, receiver) {
     }
   }
 
-  var iterable = $getMethod(items, symbolIterator);
+  var iterable = GetMethod(items, symbolIterator);
   var k;
   var result;
   var mappedValue;
@@ -206,7 +206,7 @@ function ArrayFrom(arrayLike, mapfn, receiver) {
   if (!IS_UNDEFINED(iterable)) {
     result = %IsConstructor(this) ? new this() : [];
 
-    var iterator = $getIterator(items, iterable);
+    var iterator = GetIterator(items, iterable);
 
     k = 0;
     while (true) {
@@ -263,7 +263,7 @@ function ArrayOf() {
 
 // -------------------------------------------------------------------
 
-$installConstants(GlobalSymbol, [
+InstallConstants(GlobalSymbol, [
   // TODO(dslomov, caitp): Move to symbol.js when shipping
   "isConcatSpreadable", symbolIsConcatSpreadable
 ]);
@@ -272,13 +272,13 @@ $installConstants(GlobalSymbol, [
 %FunctionSetLength(ArrayFrom, 1);
 
 // Set up non-enumerable functions on the Array object.
-$installFunctions(GlobalArray, DONT_ENUM, [
+InstallFunctions(GlobalArray, DONT_ENUM, [
   "from", ArrayFrom,
   "of", ArrayOf
 ]);
 
 // Set up the non-enumerable functions on the Array prototype object.
-$installFunctions(GlobalArray.prototype, DONT_ENUM, [
+InstallFunctions(GlobalArray.prototype, DONT_ENUM, [
   "copyWithin", ArrayCopyWithin,
   "find", ArrayFind,
   "findIndex", ArrayFindIndex,
index 5ac41a2..8cb0d71 100644 (file)
@@ -10,7 +10,7 @@
 
 var GlobalReflect = global.Reflect;
 
-$installFunctions(GlobalReflect, DONT_ENUM, [
+InstallFunctions(GlobalReflect, DONT_ENUM, [
   "apply", $reflectApply,
   "construct", $reflectConstruct
 ]);
index 2fc4308..1ecfb26 100644 (file)
@@ -10,7 +10,7 @@
 
 var GlobalSymbol = global.Symbol;
 
-$installConstants(GlobalSymbol, [
+InstallConstants(GlobalSymbol, [
    // TODO(dslomov, caitp): Move to symbol.js when shipping
    "toStringTag", symbolToStringTag
 ]);
index a6cba2e..7fc01cb 100644 (file)
@@ -8,6 +8,8 @@
 
 %CheckIsBootstrapping();
 
+// -------------------------------------------------------------------
+
 macro TYPED_ARRAYS(FUNCTION)
 // arrayIds below should be synchronized with Runtime_TypedArrayInitialize.
 FUNCTION(1, Uint8Array, 1)
@@ -21,13 +23,6 @@ FUNCTION(8, Float64Array, 8)
 FUNCTION(9, Uint8ClampedArray, 1)
 endmacro
 
-macro DECLARE_GLOBALS(INDEX, NAME, SIZE)
-var GlobalNAME = global.NAME;
-endmacro
-
-TYPED_ARRAYS(DECLARE_GLOBALS)
-
-// -------------------------------------------------------------------
 
 macro TYPED_ARRAY_HARMONY_ADDITIONS(ARRAY_ID, NAME, ELEMENT_SIZE)
 
@@ -79,12 +74,12 @@ TYPED_ARRAYS(TYPED_ARRAY_HARMONY_ADDITIONS)
 
 macro EXTEND_TYPED_ARRAY(ARRAY_ID, NAME, ELEMENT_SIZE)
   // Set up non-enumerable functions on the object.
-  $installFunctions(GlobalNAME, DONT_ENUM | DONT_DELETE | READ_ONLY, [
+  InstallFunctions(global.NAME, DONT_ENUM | DONT_DELETE | READ_ONLY, [
     "of", NAMEOf
   ]);
 
   // Set up non-enumerable functions on the prototype object.
-  $installFunctions(GlobalNAME.prototype, DONT_ENUM, [
+  InstallFunctions(global.NAME.prototype, DONT_ENUM, [
     "forEach", NAMEForEach
   ]);
 endmacro
index ec6518a..46e8bb8 100644 (file)
@@ -254,7 +254,7 @@ function addBoundMethod(obj, methodName, implementation, length) {
           }
         }
       }
-      $setFunctionName(boundMethod, internalName);
+      SetFunctionName(boundMethod, internalName);
       %FunctionRemovePrototype(boundMethod);
       %SetNativeFlag(boundMethod);
       this[internalName] = boundMethod;
@@ -262,11 +262,11 @@ function addBoundMethod(obj, methodName, implementation, length) {
     return this[internalName];
   }
 
-  $setFunctionName(getter, methodName);
+  SetFunctionName(getter, methodName);
   %FunctionRemovePrototype(getter);
   %SetNativeFlag(getter);
 
-  $objectDefineProperty(obj.prototype, methodName, {
+  ObjectDefineProperty(obj.prototype, methodName, {
     get: getter,
     enumerable: false,
     configurable: true
@@ -585,14 +585,14 @@ function setOptions(inOptions, extensionMap, keyValues, getOption, outOptions) {
  */
 function freezeArray(array) {
   array.forEach(function(element, index) {
-    $objectDefineProperty(array, index, {value: element,
-                                         configurable: false,
-                                         writable: false,
-                                         enumerable: true});
+    ObjectDefineProperty(array, index, {value: element,
+                                          configurable: false,
+                                          writable: false,
+                                          enumerable: true});
   });
 
-  $objectDefineProperty(array, 'length', {value: array.length,
-                                          writable: false});
+  ObjectDefineProperty(array, 'length', {value: array.length,
+                                         writable: false});
   return array;
 }
 
@@ -653,8 +653,8 @@ function getAvailableLocalesOf(service) {
  * Configurable is false by default.
  */
 function defineWEProperty(object, property, value) {
-  $objectDefineProperty(object, property,
-                        {value: value, writable: true, enumerable: true});
+  ObjectDefineProperty(object, property,
+                       {value: value, writable: true, enumerable: true});
 }
 
 
@@ -673,10 +673,11 @@ function addWEPropertyIfDefined(object, property, value) {
  * Defines a property and sets writable, enumerable and configurable to true.
  */
 function defineWECProperty(object, property, value) {
-  $objectDefineProperty(object, property, {value: value,
-                                           writable: true,
-                                           enumerable: true,
-                                           configurable: true});
+  ObjectDefineProperty(object, property,
+                       {value: value,
+                        writable: true,
+                        enumerable: true,
+                        configurable: true});
 }
 
 
@@ -916,7 +917,7 @@ function initializeCollator(collator, locales, options) {
   // problems. If malicious user decides to redefine Object.prototype.locale
   // we can't just use plain x.locale = 'us' or in C++ Set("locale", "us").
   // ObjectDefineProperties will either succeed defining or throw an error.
-  var resolved = $objectDefineProperties({}, {
+  var resolved = ObjectDefineProperties({}, {
     caseFirst: {writable: true},
     collation: {value: internalOptions.collation, writable: true},
     ignorePunctuation: {writable: true},
@@ -934,7 +935,7 @@ function initializeCollator(collator, locales, options) {
 
   // Writable, configurable and enumerable are set to false by default.
   %MarkAsInitializedIntlObjectOfType(collator, 'collator', internalCollator);
-  $objectDefineProperty(collator, 'resolved', {value: resolved});
+  ObjectDefineProperty(collator, 'resolved', {value: resolved});
 
   return collator;
 }
@@ -989,7 +990,7 @@ function initializeCollator(collator, locales, options) {
   },
   DONT_ENUM
 );
-$setFunctionName(Intl.Collator.prototype.resolvedOptions, 'resolvedOptions');
+SetFunctionName(Intl.Collator.prototype.resolvedOptions, 'resolvedOptions');
 %FunctionRemovePrototype(Intl.Collator.prototype.resolvedOptions);
 %SetNativeFlag(Intl.Collator.prototype.resolvedOptions);
 
@@ -1009,7 +1010,7 @@ $setFunctionName(Intl.Collator.prototype.resolvedOptions, 'resolvedOptions');
   },
   DONT_ENUM
 );
-$setFunctionName(Intl.Collator.supportedLocalesOf, 'supportedLocalesOf');
+SetFunctionName(Intl.Collator.supportedLocalesOf, 'supportedLocalesOf');
 %FunctionRemovePrototype(Intl.Collator.supportedLocalesOf);
 %SetNativeFlag(Intl.Collator.supportedLocalesOf);
 
@@ -1130,7 +1131,7 @@ function initializeNumberFormat(numberFormat, locales, options) {
                              getOption, internalOptions);
 
   var requestedLocale = locale.locale + extension;
-  var resolved = $objectDefineProperties({}, {
+  var resolved = ObjectDefineProperties({}, {
     currency: {writable: true},
     currencyDisplay: {writable: true},
     locale: {writable: true},
@@ -1155,12 +1156,12 @@ function initializeNumberFormat(numberFormat, locales, options) {
   // We can't get information about number or currency style from ICU, so we
   // assume user request was fulfilled.
   if (internalOptions.style === 'currency') {
-    $objectDefineProperty(resolved, 'currencyDisplay', {value: currencyDisplay,
-                                                        writable: true});
+    ObjectDefineProperty(resolved, 'currencyDisplay', {value: currencyDisplay,
+                                                       writable: true});
   }
 
   %MarkAsInitializedIntlObjectOfType(numberFormat, 'numberformat', formatter);
-  $objectDefineProperty(numberFormat, 'resolved', {value: resolved});
+  ObjectDefineProperty(numberFormat, 'resolved', {value: resolved});
 
   return numberFormat;
 }
@@ -1233,7 +1234,7 @@ function initializeNumberFormat(numberFormat, locales, options) {
   },
   DONT_ENUM
 );
-$setFunctionName(Intl.NumberFormat.prototype.resolvedOptions,
+SetFunctionName(Intl.NumberFormat.prototype.resolvedOptions,
                  'resolvedOptions');
 %FunctionRemovePrototype(Intl.NumberFormat.prototype.resolvedOptions);
 %SetNativeFlag(Intl.NumberFormat.prototype.resolvedOptions);
@@ -1254,7 +1255,7 @@ $setFunctionName(Intl.NumberFormat.prototype.resolvedOptions,
   },
   DONT_ENUM
 );
-$setFunctionName(Intl.NumberFormat.supportedLocalesOf, 'supportedLocalesOf');
+SetFunctionName(Intl.NumberFormat.supportedLocalesOf, 'supportedLocalesOf');
 %FunctionRemovePrototype(Intl.NumberFormat.supportedLocalesOf);
 %SetNativeFlag(Intl.NumberFormat.supportedLocalesOf);
 
@@ -1450,33 +1451,33 @@ function toDateTimeOptions(options, required, defaults) {
   }
 
   if (needsDefault && (defaults === 'date' || defaults === 'all')) {
-    $objectDefineProperty(options, 'year', {value: 'numeric',
-                                            writable: true,
-                                            enumerable: true,
-                                            configurable: true});
-    $objectDefineProperty(options, 'month', {value: 'numeric',
-                                             writable: true,
-                                             enumerable: true,
-                                             configurable: true});
-    $objectDefineProperty(options, 'day', {value: 'numeric',
+    ObjectDefineProperty(options, 'year', {value: 'numeric',
                                            writable: true,
                                            enumerable: true,
                                            configurable: true});
-  }
-
-  if (needsDefault && (defaults === 'time' || defaults === 'all')) {
-    $objectDefineProperty(options, 'hour', {value: 'numeric',
+    ObjectDefineProperty(options, 'month', {value: 'numeric',
                                             writable: true,
                                             enumerable: true,
                                             configurable: true});
-    $objectDefineProperty(options, 'minute', {value: 'numeric',
-                                              writable: true,
-                                              enumerable: true,
-                                              configurable: true});
-    $objectDefineProperty(options, 'second', {value: 'numeric',
-                                              writable: true,
-                                              enumerable: true,
-                                              configurable: true});
+    ObjectDefineProperty(options, 'day', {value: 'numeric',
+                                          writable: true,
+                                          enumerable: true,
+                                          configurable: true});
+  }
+
+  if (needsDefault && (defaults === 'time' || defaults === 'all')) {
+    ObjectDefineProperty(options, 'hour', {value: 'numeric',
+                                             writable: true,
+                                             enumerable: true,
+                                             configurable: true});
+    ObjectDefineProperty(options, 'minute', {value: 'numeric',
+                                               writable: true,
+                                               enumerable: true,
+                                               configurable: true});
+    ObjectDefineProperty(options, 'second', {value: 'numeric',
+                                               writable: true,
+                                               enumerable: true,
+                                               configurable: true});
   }
 
   return options;
@@ -1524,7 +1525,7 @@ function initializeDateTimeFormat(dateFormat, locales, options) {
                              getOption, internalOptions);
 
   var requestedLocale = locale.locale + extension;
-  var resolved = $objectDefineProperties({}, {
+  var resolved = ObjectDefineProperties({}, {
     calendar: {writable: true},
     day: {writable: true},
     era: {writable: true},
@@ -1552,7 +1553,7 @@ function initializeDateTimeFormat(dateFormat, locales, options) {
   }
 
   %MarkAsInitializedIntlObjectOfType(dateFormat, 'dateformat', formatter);
-  $objectDefineProperty(dateFormat, 'resolved', {value: resolved});
+  ObjectDefineProperty(dateFormat, 'resolved', {value: resolved});
 
   return dateFormat;
 }
@@ -1625,7 +1626,7 @@ function initializeDateTimeFormat(dateFormat, locales, options) {
   },
   DONT_ENUM
 );
-$setFunctionName(Intl.DateTimeFormat.prototype.resolvedOptions,
+SetFunctionName(Intl.DateTimeFormat.prototype.resolvedOptions,
                 'resolvedOptions');
 %FunctionRemovePrototype(Intl.DateTimeFormat.prototype.resolvedOptions);
 %SetNativeFlag(Intl.DateTimeFormat.prototype.resolvedOptions);
@@ -1646,7 +1647,7 @@ $setFunctionName(Intl.DateTimeFormat.prototype.resolvedOptions,
   },
   DONT_ENUM
 );
-$setFunctionName(Intl.DateTimeFormat.supportedLocalesOf, 'supportedLocalesOf');
+SetFunctionName(Intl.DateTimeFormat.supportedLocalesOf, 'supportedLocalesOf');
 %FunctionRemovePrototype(Intl.DateTimeFormat.supportedLocalesOf);
 %SetNativeFlag(Intl.DateTimeFormat.supportedLocalesOf);
 
@@ -1741,7 +1742,7 @@ function initializeBreakIterator(iterator, locales, options) {
     'type', 'string', ['character', 'word', 'sentence', 'line'], 'word'));
 
   var locale = resolveLocale('breakiterator', locales, options);
-  var resolved = $objectDefineProperties({}, {
+  var resolved = ObjectDefineProperties({}, {
     requestedLocale: {value: locale.locale, writable: true},
     type: {value: internalOptions.type, writable: true},
     locale: {writable: true}
@@ -1753,7 +1754,7 @@ function initializeBreakIterator(iterator, locales, options) {
 
   %MarkAsInitializedIntlObjectOfType(iterator, 'breakiterator',
                                      internalIterator);
-  $objectDefineProperty(iterator, 'resolved', {value: resolved});
+  ObjectDefineProperty(iterator, 'resolved', {value: resolved});
 
   return iterator;
 }
@@ -1804,7 +1805,7 @@ function initializeBreakIterator(iterator, locales, options) {
   },
   DONT_ENUM
 );
-$setFunctionName(Intl.v8BreakIterator.prototype.resolvedOptions,
+SetFunctionName(Intl.v8BreakIterator.prototype.resolvedOptions,
                 'resolvedOptions');
 %FunctionRemovePrototype(Intl.v8BreakIterator.prototype.resolvedOptions);
 %SetNativeFlag(Intl.v8BreakIterator.prototype.resolvedOptions);
@@ -1826,7 +1827,7 @@ $setFunctionName(Intl.v8BreakIterator.prototype.resolvedOptions,
   },
   DONT_ENUM
 );
-$setFunctionName(Intl.v8BreakIterator.supportedLocalesOf, 'supportedLocalesOf');
+SetFunctionName(Intl.v8BreakIterator.supportedLocalesOf, 'supportedLocalesOf');
 %FunctionRemovePrototype(Intl.v8BreakIterator.supportedLocalesOf);
 %SetNativeFlag(Intl.v8BreakIterator.supportedLocalesOf);
 
@@ -1920,7 +1921,7 @@ function cachedOrNewService(service, locales, options, defaults) {
  * Compares this and that, and returns less than 0, 0 or greater than 0 value.
  * Overrides the built-in method.
  */
-$overrideFunction(GlobalString.prototype, 'localeCompare', function(that) {
+OverrideFunction(GlobalString.prototype, 'localeCompare', function(that) {
     if (%_IsConstructCall()) {
       throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor);
     }
@@ -1944,7 +1945,7 @@ $overrideFunction(GlobalString.prototype, 'localeCompare', function(that) {
  * If the form is not one of "NFC", "NFD", "NFKC", or "NFKD", then throw
  * a RangeError Exception.
  */
-$overrideFunction(GlobalString.prototype, 'normalize', function(that) {
+OverrideFunction(GlobalString.prototype, 'normalize', function(that) {
     if (%_IsConstructCall()) {
       throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor);
     }
@@ -1967,7 +1968,7 @@ $overrideFunction(GlobalString.prototype, 'normalize', function(that) {
  * Formats a Number object (this) using locale and options values.
  * If locale or options are omitted, defaults are used.
  */
-$overrideFunction(GlobalNumber.prototype, 'toLocaleString', function() {
+OverrideFunction(GlobalNumber.prototype, 'toLocaleString', function() {
     if (%_IsConstructCall()) {
       throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor);
     }
@@ -2010,7 +2011,7 @@ function toLocaleDateTime(date, locales, options, required, defaults, service) {
  * If locale or options are omitted, defaults are used - both date and time are
  * present in the output.
  */
-$overrideFunction(GlobalDate.prototype, 'toLocaleString', function() {
+OverrideFunction(GlobalDate.prototype, 'toLocaleString', function() {
     if (%_IsConstructCall()) {
       throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor);
     }
@@ -2028,7 +2029,7 @@ $overrideFunction(GlobalDate.prototype, 'toLocaleString', function() {
  * If locale or options are omitted, defaults are used - only date is present
  * in the output.
  */
-$overrideFunction(GlobalDate.prototype, 'toLocaleDateString', function() {
+OverrideFunction(GlobalDate.prototype, 'toLocaleDateString', function() {
     if (%_IsConstructCall()) {
       throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor);
     }
@@ -2046,7 +2047,7 @@ $overrideFunction(GlobalDate.prototype, 'toLocaleDateString', function() {
  * If locale or options are omitted, defaults are used - only time is present
  * in the output.
  */
-$overrideFunction(GlobalDate.prototype, 'toLocaleTimeString', function() {
+OverrideFunction(GlobalDate.prototype, 'toLocaleTimeString', function() {
     if (%_IsConstructCall()) {
       throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor);
     }
index 88ac792..f359648 100644 (file)
@@ -905,14 +905,10 @@ void Isolate::InvokeApiInterruptCallbacks() {
 }
 
 
-void Isolate::ReportBootstrappingException(Handle<Object> exception,
-                                           MessageLocation* location) {
+void ReportBootstrappingException(Handle<Object> exception,
+                                  MessageLocation* location) {
   base::OS::PrintError("Exception thrown during bootstrapping\n");
-  if (location == NULL || location->script().is_null()) {
-    exception->Print();
-    PrintStack(stdout);
-    return;
-  }
+  if (location == NULL || location->script().is_null()) return;
   // We are bootstrapping and caught an error where the location is set
   // and we have a script for the location.
   // In this case we could have an extension (or an internal error
@@ -981,12 +977,8 @@ Object* Isolate::Throw(Object* exception, MessageLocation* location) {
     debug()->OnThrow(exception_handle);
   }
 
-  if (bootstrapper()->IsActive()) {
-    // It's not safe to try to make message objects or collect stack traces
-    // while the bootstrapper is active since the infrastructure may not have
-    // been properly initialized.
-    ReportBootstrappingException(exception_handle, location);
-  } else if (requires_message && !rethrowing_message) {
+  // Generate the message if required.
+  if (requires_message && !rethrowing_message) {
     MessageLocation potential_computed_location;
     if (location == NULL) {
       // If no location was specified we use a computed one instead.
@@ -994,20 +986,27 @@ Object* Isolate::Throw(Object* exception, MessageLocation* location) {
       location = &potential_computed_location;
     }
 
-    Handle<Object> message_obj = CreateMessage(exception_handle, location);
-    thread_local_top()->pending_message_obj_ = *message_obj;
-
-    // If the abort-on-uncaught-exception flag is specified, abort on any
-    // exception not caught by JavaScript, even when an external handler is
-    // present.  This flag is intended for use by JavaScript developers, so
-    // print a user-friendly stack trace (not an internal one).
-    if (FLAG_abort_on_uncaught_exception &&
-        PredictExceptionCatcher() != CAUGHT_BY_JAVASCRIPT) {
-      FLAG_abort_on_uncaught_exception = false;  // Prevent endless recursion.
-      PrintF(stderr, "%s\n\nFROM\n",
-             MessageHandler::GetLocalizedMessage(this, message_obj).get());
-      PrintCurrentStackTrace(stderr);
-      base::OS::Abort();
+    if (bootstrapper()->IsActive()) {
+      // It's not safe to try to make message objects or collect stack traces
+      // while the bootstrapper is active since the infrastructure may not have
+      // been properly initialized.
+      ReportBootstrappingException(exception_handle, location);
+    } else {
+      Handle<Object> message_obj = CreateMessage(exception_handle, location);
+      thread_local_top()->pending_message_obj_ = *message_obj;
+
+      // If the abort-on-uncaught-exception flag is specified, abort on any
+      // exception not caught by JavaScript, even when an external handler is
+      // present.  This flag is intended for use by JavaScript developers, so
+      // print a user-friendly stack trace (not an internal one).
+      if (FLAG_abort_on_uncaught_exception &&
+          PredictExceptionCatcher() != CAUGHT_BY_JAVASCRIPT) {
+        FLAG_abort_on_uncaught_exception = false;  // Prevent endless recursion.
+        PrintF(stderr, "%s\n\nFROM\n",
+               MessageHandler::GetLocalizedMessage(this, message_obj).get());
+        PrintCurrentStackTrace(stderr);
+        base::OS::Abort();
+      }
     }
   }
 
index 46c9300..37d832d 100644 (file)
@@ -751,9 +751,6 @@ class Isolate {
   Object* Throw(Object* exception, MessageLocation* location = NULL);
   Object* ThrowIllegalOperation();
 
-  void ReportBootstrappingException(Handle<Object> exception,
-                                    MessageLocation* location);
-
   template <typename T>
   MUST_USE_RESULT MaybeHandle<T> Throw(Handle<Object> exception,
                                        MessageLocation* location = NULL) {
index 26948fc..a896e29 100644 (file)
@@ -25,7 +25,7 @@ function Revive(holder, name, reviver) {
       }
     } else {
       for (var p in val) {
-        if (%_CallFunction(val, p, $objectHasOwnProperty)) {
+        if (%_CallFunction(val, p, ObjectHasOwnProperty)) {
           var newElement = Revive(val, p, reviver);
           if (IS_UNDEFINED(newElement)) {
             delete val[p];
@@ -91,7 +91,7 @@ function SerializeObject(value, replacer, stack, indent, gap) {
   if (IS_ARRAY(replacer)) {
     var length = replacer.length;
     for (var i = 0; i < length; i++) {
-      if (%_CallFunction(replacer, i, $objectHasOwnProperty)) {
+      if (%_CallFunction(replacer, i, ObjectHasOwnProperty)) {
         var p = replacer[i];
         var strP = JSONSerialize(p, value, replacer, stack, indent, gap);
         if (!IS_UNDEFINED(strP)) {
@@ -104,7 +104,7 @@ function SerializeObject(value, replacer, stack, indent, gap) {
     }
   } else {
     for (var p in value) {
-      if (%_CallFunction(value, p, $objectHasOwnProperty)) {
+      if (%_CallFunction(value, p, ObjectHasOwnProperty)) {
         var strP = JSONSerialize(p, value, replacer, stack, indent, gap);
         if (!IS_UNDEFINED(strP)) {
           var member = %QuoteJSONString(p) + ":";
@@ -224,7 +224,7 @@ function JSONStringify(value, replacer, space) {
 %AddNamedProperty(GlobalJSON, symbolToStringTag, "JSON", READ_ONLY | DONT_ENUM);
 
 // Set up non-enumerable properties of the JSON object.
-$installFunctions(GlobalJSON, DONT_ENUM, [
+InstallFunctions(GlobalJSON, DONT_ENUM, [
   "parse", JSONParse,
   "stringify", JSONStringify
 ]);
index 7f99901..b39cd85 100644 (file)
@@ -152,7 +152,7 @@ macro TO_STRING_INLINE(arg) = (IS_STRING(%IS_VAR(arg)) ? arg : NonStringToString
 macro TO_NUMBER_INLINE(arg) = (IS_NUMBER(%IS_VAR(arg)) ? arg : NonNumberToNumber(arg));
 macro TO_OBJECT_INLINE(arg) = (IS_SPEC_OBJECT(%IS_VAR(arg)) ? arg : ToObject(arg));
 macro JSON_NUMBER_TO_STRING(arg) = ((%_IsSmi(%IS_VAR(arg)) || arg - arg == 0) ? %_NumberToString(arg) : "null");
-macro HAS_OWN_PROPERTY(arg, index) = (%_CallFunction(arg, index, $objectHasOwnProperty));
+macro HAS_OWN_PROPERTY(obj, index) = (%_CallFunction(obj, index, ObjectHasOwnProperty));
 macro SHOULD_CREATE_WRAPPER(functionName, receiver) = (!IS_SPEC_OBJECT(receiver) && %IsSloppyModeFunction(functionName));
 macro HAS_INDEX(array, index, is_array) = ((is_array && %_HasFastPackedElements(%IS_VAR(array))) ? (index < array.length) : (index in array));
 
index 04c27b6..1a5a105 100644 (file)
@@ -294,7 +294,7 @@ var Math = new MathConstructor();
 %AddNamedProperty(Math, symbolToStringTag, "Math", READ_ONLY | DONT_ENUM);
 
 // Set up math constants.
-$installConstants(Math, [
+InstallConstants(Math, [
   // ECMA-262, section 15.8.1.1.
   "E", 2.7182818284590452354,
   // ECMA-262, section 15.8.1.2.
@@ -311,7 +311,7 @@ $installConstants(Math, [
 
 // Set up non-enumerable functions of the Math object and
 // set their names.
-$installFunctions(Math, DONT_ENUM, [
+InstallFunctions(Math, DONT_ENUM, [
   "random", MathRandom,
   "abs", MathAbs,
   "acos", MathAcosJS,
index 71a1325..4d400f2 100644 (file)
@@ -238,13 +238,6 @@ function FormatString(format, args) {
 }
 
 
-function NoSideEffectsObjectToString() {
-  if (IS_UNDEFINED(this) && !IS_UNDETECTABLE(this)) return "[object Undefined]";
-  if (IS_NULL(this)) return "[object Null]";
-  return "[object " + %_ClassOf(TO_OBJECT_INLINE(this)) + "]";
-}
-
-
 function NoSideEffectToString(obj) {
   if (IS_STRING(obj)) return obj;
   if (IS_NUMBER(obj)) return %_NumberToString(obj);
@@ -252,7 +245,7 @@ function NoSideEffectToString(obj) {
   if (IS_UNDEFINED(obj)) return 'undefined';
   if (IS_NULL(obj)) return 'null';
   if (IS_FUNCTION(obj)) {
-    var str = %_CallFunction(obj, obj, $functionSourceString);
+    var str = %_CallFunction(obj, FunctionToString);
     if (str.length > 128) {
       str = %_SubString(str, 0, 111) + "...<omitted>..." +
             %_SubString(str, str.length - 2, str.length);
@@ -261,7 +254,7 @@ function NoSideEffectToString(obj) {
   }
   if (IS_SYMBOL(obj)) return %_CallFunction(obj, $symbolToString);
   if (IS_OBJECT(obj)
-      && %GetDataProperty(obj, "toString") === $objectToString) {
+      && %GetDataProperty(obj, "toString") === ObjectToString) {
     var constructor = %GetDataProperty(obj, "constructor");
     if (typeof constructor == "function") {
       var constructorName = constructor.name;
@@ -313,7 +306,7 @@ function ToStringCheckErrorObject(obj) {
 
 
 function ToDetailString(obj) {
-  if (obj != null && IS_OBJECT(obj) && obj.toString === $objectToString) {
+  if (obj != null && IS_OBJECT(obj) && obj.toString === ObjectToString) {
     var constructor = obj.constructor;
     if (typeof constructor == "function") {
       var constructorName = constructor.name;
@@ -591,7 +584,7 @@ function ScriptNameOrSourceURL() {
 }
 
 
-$setUpLockedPrototype(Script, [
+SetUpLockedPrototype(Script, [
     "source",
     "name",
     "source_url",
@@ -655,7 +648,7 @@ function SourceLocationSourceText() {
 }
 
 
-$setUpLockedPrototype(SourceLocation,
+SetUpLockedPrototype(SourceLocation,
   ["script", "position", "line", "column", "start", "end"],
   ["sourceText", SourceLocationSourceText]
 );
@@ -699,7 +692,7 @@ function SourceSliceSourceText() {
                         $stringSubstring);
 }
 
-$setUpLockedPrototype(SourceSlice,
+SetUpLockedPrototype(SourceSlice,
   ["script", "from_line", "to_line", "from_position", "to_position"],
   ["sourceText", SourceSliceSourceText]
 );
@@ -794,8 +787,8 @@ function CallSiteGetMethodName() {
   var fun = GET_PRIVATE(this, CallSiteFunctionKey);
   var ownName = fun.name;
   if (ownName && receiver &&
-      (%_CallFunction(receiver, ownName, $objectLookupGetter) === fun ||
-       %_CallFunction(receiver, ownName, $objectLookupSetter) === fun ||
+      (%_CallFunction(receiver, ownName, ObjectLookupGetter) === fun ||
+       %_CallFunction(receiver, ownName, ObjectLookupSetter) === fun ||
        (IS_OBJECT(receiver) && %GetDataProperty(receiver, ownName) === fun))) {
     // To handle DontEnum properties we guess that the method has
     // the same name as the function.
@@ -803,8 +796,8 @@ function CallSiteGetMethodName() {
   }
   var name = null;
   for (var prop in receiver) {
-    if (%_CallFunction(receiver, prop, $objectLookupGetter) === fun ||
-        %_CallFunction(receiver, prop, $objectLookupSetter) === fun ||
+    if (%_CallFunction(receiver, prop, ObjectLookupGetter) === fun ||
+        %_CallFunction(receiver, prop, ObjectLookupSetter) === fun ||
         (IS_OBJECT(receiver) && %GetDataProperty(receiver, prop) === fun)) {
       // If we find more than one match bail out to avoid confusion.
       if (name) {
@@ -921,7 +914,7 @@ function CallSiteToString() {
   return line;
 }
 
-$setUpLockedPrototype(CallSite, ["receiver", "fun", "pos"], [
+SetUpLockedPrototype(CallSite, ["receiver", "fun", "pos"], [
   "getThis", CallSiteGetThis,
   "getTypeName", CallSiteGetTypeName,
   "isToplevel", CallSiteIsToplevel,
@@ -1110,9 +1103,9 @@ var StackTraceSetter = function(v) {
 // when constructing the initial Error prototytpes.
 var captureStackTrace = function captureStackTrace(obj, cons_opt) {
   // Define accessors first, as this may fail and throw.
-  $objectDefineProperty(obj, 'stack', { get: StackTraceGetter,
-                                        set: StackTraceSetter,
-                                        configurable: true });
+  ObjectDefineProperty(obj, 'stack', { get: StackTraceGetter,
+                                       set: StackTraceSetter,
+                                       configurable: true });
   %CollectStackTrace(obj, cons_opt ? cons_opt : captureStackTrace);
 }
 
@@ -1236,8 +1229,7 @@ function ErrorToString() {
   }
 }
 
-$installFunctions(GlobalError.prototype, DONT_ENUM,
-                  ['toString', ErrorToString]);
+InstallFunctions(GlobalError.prototype, DONT_ENUM, ['toString', ErrorToString]);
 
 $errorToString = ErrorToString;
 $formatMessage = FormatMessage;
index b293ba0..87a1feb 100644 (file)
@@ -1008,7 +1008,7 @@ FunctionMirror.prototype.source = function() {
   // Return source if function is resolved. Otherwise just fall through to
   // return undefined.
   if (this.resolved()) {
-    return builtins.$functionSourceString(this.value_);
+    return builtins.FunctionSourceString(this.value_);
   }
 };
 
index 9967583..11562cb 100644 (file)
@@ -377,7 +377,7 @@ function ObjectObserve(object, callback, acceptList) {
     throw MakeTypeError("observe_global_proxy", ["observe"]);
   if (!IS_SPEC_FUNCTION(callback))
     throw MakeTypeError("observe_non_function", ["observe"]);
-  if ($objectIsFrozen(callback))
+  if (ObjectIsFrozen(callback))
     throw MakeTypeError("observe_callback_frozen");
 
   var objectObserveFn = %GetObjectContextObjectObserve(object);
@@ -470,7 +470,7 @@ function ObjectInfoEnqueueExternalChangeRecord(objectInfo, changeRecord, type) {
     %DefineDataPropertyUnchecked(
         newRecord, prop, changeRecord[prop], READ_ONLY + DONT_DELETE);
   }
-  $objectFreeze(newRecord);
+  ObjectFreezeJS(newRecord);
 
   ObjectInfoEnqueueInternalChangeRecord(objectInfo, newRecord);
 }
@@ -522,8 +522,8 @@ function EnqueueSpliceRecord(array, index, removed, addedCount) {
     addedCount: addedCount
   };
 
-  $objectFreeze(changeRecord);
-  $objectFreeze(changeRecord.removed);
+  ObjectFreezeJS(changeRecord);
+  ObjectFreezeJS(changeRecord.removed);
   ObjectInfoEnqueueInternalChangeRecord(objectInfo, changeRecord);
 }
 
@@ -547,7 +547,7 @@ function NotifyChange(type, object, name, oldValue) {
     };
   }
 
-  $objectFreeze(changeRecord);
+  ObjectFreezeJS(changeRecord);
   ObjectInfoEnqueueInternalChangeRecord(objectInfo, changeRecord);
 }
 
@@ -604,7 +604,7 @@ function ObjectGetNotifier(object) {
   if (%IsJSGlobalProxy(object))
     throw MakeTypeError("observe_global_proxy", ["getNotifier"]);
 
-  if ($objectIsFrozen(object)) return null;
+  if (ObjectIsFrozen(object)) return null;
 
   if (!%ObjectWasCreatedInCurrentOrigin(object)) return null;
 
@@ -662,17 +662,17 @@ function ObserveMicrotaskRunner() {
 
 // -------------------------------------------------------------------
 
-$installFunctions(GlobalObject, DONT_ENUM, [
+InstallFunctions(GlobalObject, DONT_ENUM, [
   "deliverChangeRecords", ObjectDeliverChangeRecords,
   "getNotifier", ObjectGetNotifier,
   "observe", ObjectObserve,
   "unobserve", ObjectUnobserve
 ]);
-$installFunctions(GlobalArray, DONT_ENUM, [
+InstallFunctions(GlobalArray, DONT_ENUM, [
   "observe", ArrayObserve,
   "unobserve", ArrayUnobserve
 ]);
-$installFunctions(notifierPrototype, DONT_ENUM, [
+InstallFunctions(notifierPrototype, DONT_ENUM, [
   "notify", ObjectNotifierNotify,
   "performChange", ObjectNotifierPerformChange
 ]);
index b798fb9..6fc7c73 100644 (file)
@@ -366,7 +366,7 @@ function PromiseHasUserDefinedRejectHandler() {
 %AddNamedProperty(GlobalPromise.prototype, symbolToStringTag, "Promise",
                   DONT_ENUM | READ_ONLY);
 
-$installFunctions(GlobalPromise, DONT_ENUM, [
+InstallFunctions(GlobalPromise, DONT_ENUM, [
   "defer", PromiseDeferred,
   "accept", PromiseResolved,
   "reject", PromiseRejected,
@@ -375,7 +375,7 @@ $installFunctions(GlobalPromise, DONT_ENUM, [
   "resolve", PromiseCast
 ]);
 
-$installFunctions(GlobalPromise.prototype, DONT_ENUM, [
+InstallFunctions(GlobalPromise.prototype, DONT_ENUM, [
   "chain", PromiseChain,
   "then", PromiseThen,
   "catch", PromiseCatch
index 44939f6..03f4cde 100644 (file)
@@ -176,7 +176,7 @@ function ProxyEnumerate(proxy) {
   if (IS_UNDEFINED(handler.enumerate)) {
     return %Apply(DerivedEnumerateTrap, handler, [], 0, 0)
   } else {
-    return $toNameArray(handler.enumerate(), "enumerate", false)
+    return ToNameArray(handler.enumerate(), "enumerate", false)
   }
 }
 
@@ -186,7 +186,7 @@ var Proxy = new GlobalObject();
 %AddNamedProperty(global, "Proxy", Proxy, DONT_ENUM);
 
 //Set up non-enumerable properties of the Proxy object.
-$installFunctions(Proxy, DONT_ENUM, [
+InstallFunctions(Proxy, DONT_ENUM, [
   "create", ProxyCreate,
   "createFunction", ProxyCreateFunction
 ])
index 9f89a6a..9db8e99 100644 (file)
@@ -363,7 +363,7 @@ function RegExpMakeCaptureGetter(n) {
     GlobalRegExp.prototype, 'constructor', GlobalRegExp, DONT_ENUM);
 %SetCode(GlobalRegExp, RegExpConstructor);
 
-$installFunctions(GlobalRegExp.prototype, DONT_ENUM, [
+InstallFunctions(GlobalRegExp.prototype, DONT_ENUM, [
   "exec", RegExpExecJS,
   "test", RegExpTest,
   "toString", RegExpToString,
index 0eaaffb..b28c63b 100644 (file)
@@ -88,16 +88,16 @@ function StringPrototypeIterator() {
 %FunctionSetPrototype(StringIterator, new GlobalObject());
 %FunctionSetInstanceClassName(StringIterator, 'String Iterator');
 
-$installFunctions(StringIterator.prototype, DONT_ENUM, [
+InstallFunctions(StringIterator.prototype, DONT_ENUM, [
   'next', StringIteratorNext
 ]);
-$setFunctionName(StringIteratorIterator, symbolIterator);
+SetFunctionName(StringIteratorIterator, symbolIterator);
 %AddNamedProperty(StringIterator.prototype, symbolIterator,
                   StringIteratorIterator, DONT_ENUM);
 %AddNamedProperty(StringIterator.prototype, symbolToStringTag,
                   "String Iterator", READ_ONLY | DONT_ENUM);
 
-$setFunctionName(StringPrototypeIterator, symbolIterator);
+SetFunctionName(StringPrototypeIterator, symbolIterator);
 %AddNamedProperty(GlobalString.prototype, symbolIterator,
                   StringPrototypeIterator, DONT_ENUM);
 
index fa57b9a..1435073 100644 (file)
@@ -1118,14 +1118,14 @@ function StringRaw(callSite) {
     GlobalString.prototype, "constructor", GlobalString, DONT_ENUM);
 
 // Set up the non-enumerable functions on the String object.
-$installFunctions(GlobalString, DONT_ENUM, [
+InstallFunctions(GlobalString, DONT_ENUM, [
   "fromCharCode", StringFromCharCode,
   "fromCodePoint", StringFromCodePoint,
   "raw", StringRaw
 ]);
 
 // Set up the non-enumerable functions on the String prototype object.
-$installFunctions(GlobalString.prototype, DONT_ENUM, [
+InstallFunctions(GlobalString.prototype, DONT_ENUM, [
   "valueOf", StringValueOf,
   "toString", StringToString,
   "charAt", StringCharAtJS,
index 72aa4d6..3a582f8 100644 (file)
@@ -73,7 +73,7 @@ function ObjectGetOwnPropertySymbols(obj) {
 
   // TODO(arv): Proxies use a shared trap for String and Symbol keys.
 
-  return $objectGetOwnPropertyKeys(obj, PROPERTY_ATTRIBUTES_STRING);
+  return ObjectGetOwnPropertyKeys(obj, PROPERTY_ATTRIBUTES_STRING);
 }
 
 //-------------------------------------------------------------------
@@ -81,7 +81,7 @@ function ObjectGetOwnPropertySymbols(obj) {
 %SetCode(GlobalSymbol, SymbolConstructor);
 %FunctionSetPrototype(GlobalSymbol, new GlobalObject());
 
-$installConstants(GlobalSymbol, [
+InstallConstants(GlobalSymbol, [
   // TODO(rossberg): expose when implemented.
   // "hasInstance", symbolHasInstance,
   // "isConcatSpreadable", symbolIsConcatSpreadable,
@@ -93,7 +93,7 @@ $installConstants(GlobalSymbol, [
   "unscopables", symbolUnscopables
 ]);
 
-$installFunctions(GlobalSymbol, DONT_ENUM, [
+InstallFunctions(GlobalSymbol, DONT_ENUM, [
   "for", SymbolFor,
   "keyFor", SymbolKeyFor
 ]);
@@ -103,12 +103,12 @@ $installFunctions(GlobalSymbol, DONT_ENUM, [
 %AddNamedProperty(
     GlobalSymbol.prototype, symbolToStringTag, "Symbol", DONT_ENUM | READ_ONLY);
 
-$installFunctions(GlobalSymbol.prototype, DONT_ENUM, [
+InstallFunctions(GlobalSymbol.prototype, DONT_ENUM, [
   "toString", SymbolToString,
   "valueOf", SymbolValueOf
 ]);
 
-$installFunctions(GlobalObject, DONT_ENUM, [
+InstallFunctions(GlobalObject, DONT_ENUM, [
   "getOwnPropertySymbols", ObjectGetOwnPropertySymbols
 ]);
 
index b1bb07e..5717392 100644 (file)
@@ -1012,7 +1012,7 @@ function MathLog2(x) {
 
 //-------------------------------------------------------------------
 
-$installFunctions(GlobalMath, DONT_ENUM, [
+InstallFunctions(GlobalMath, DONT_ENUM, [
   "cos", MathCos,
   "sin", MathSin,
   "tan", MathTan,
index 7979151..4e3b938 100644 (file)
@@ -10,9 +10,8 @@
 
 var GlobalArray = global.Array;
 var GlobalArrayBuffer = global.ArrayBuffer;
-var GlobalDataView = global.DataView;
-var GlobalObject = global.Object;
 
+// --------------- Typed Arrays ---------------------
 macro TYPED_ARRAYS(FUNCTION)
 // arrayIds below should be synchronized with Runtime_TypedArrayInitialize.
 FUNCTION(1, Uint8Array, 1)
@@ -26,14 +25,6 @@ FUNCTION(8, Float64Array, 8)
 FUNCTION(9, Uint8ClampedArray, 1)
 endmacro
 
-macro DECLARE_GLOBALS(INDEX, NAME, SIZE)
-var GlobalNAME = global.NAME;
-endmacro
-
-TYPED_ARRAYS(DECLARE_GLOBALS)
-
-// --------------- Typed Arrays ---------------------
-
 macro TYPED_ARRAY_CONSTRUCTOR(ARRAY_ID, NAME, ELEMENT_SIZE)
 function NAMEConstructByArrayBuffer(obj, buffer, byteOffset, length) {
   if (!IS_UNDEFINED(byteOffset)) {
@@ -154,6 +145,8 @@ function NAME_GetLength() {
   return %_TypedArrayGetLength(this);
 }
 
+var $NAME = global.NAME;
+
 function NAMESubArray(begin, end) {
   if (!(%_ClassOf(this) === 'NAME')) {
     throw MakeTypeError(kIncompatibleMethodReceiver, "NAME.subarray", this);
@@ -182,8 +175,8 @@ function NAMESubArray(begin, end) {
   var newLength = endInt - beginInt;
   var beginByteOffset =
       %_ArrayBufferViewGetByteOffset(this) + beginInt * ELEMENT_SIZE;
-  return new GlobalNAME(%TypedArrayGetBuffer(this),
-                        beginByteOffset, newLength);
+  return new $NAME(%TypedArrayGetBuffer(this),
+                   beginByteOffset, newLength);
 }
 endmacro
 
@@ -304,26 +297,26 @@ function TypedArrayGetToStringTag() {
 // -------------------------------------------------------------------
 
 macro SETUP_TYPED_ARRAY(ARRAY_ID, NAME, ELEMENT_SIZE)
-  %SetCode(GlobalNAME, NAMEConstructor);
-  %FunctionSetPrototype(GlobalNAME, new GlobalObject());
+  %SetCode(global.NAME, NAMEConstructor);
+  %FunctionSetPrototype(global.NAME, new $Object());
 
-  %AddNamedProperty(GlobalNAME, "BYTES_PER_ELEMENT", ELEMENT_SIZE,
+  %AddNamedProperty(global.NAME, "BYTES_PER_ELEMENT", ELEMENT_SIZE,
                     READ_ONLY | DONT_ENUM | DONT_DELETE);
-  %AddNamedProperty(GlobalNAME.prototype,
+  %AddNamedProperty(global.NAME.prototype,
                     "constructor", global.NAME, DONT_ENUM);
-  %AddNamedProperty(GlobalNAME.prototype,
+  %AddNamedProperty(global.NAME.prototype,
                     "BYTES_PER_ELEMENT", ELEMENT_SIZE,
                     READ_ONLY | DONT_ENUM | DONT_DELETE);
-  $installGetter(GlobalNAME.prototype, "buffer", NAME_GetBuffer);
-  $installGetter(GlobalNAME.prototype, "byteOffset", NAME_GetByteOffset,
-                 DONT_ENUM | DONT_DELETE);
-  $installGetter(GlobalNAME.prototype, "byteLength", NAME_GetByteLength,
-                 DONT_ENUM | DONT_DELETE);
-  $installGetter(GlobalNAME.prototype, "length", NAME_GetLength,
-                 DONT_ENUM | DONT_DELETE);
-  $installGetter(GlobalNAME.prototype, symbolToStringTag,
-                 TypedArrayGetToStringTag);
-  $installFunctions(GlobalNAME.prototype, DONT_ENUM, [
+  InstallGetter(global.NAME.prototype, "buffer", NAME_GetBuffer);
+  InstallGetter(global.NAME.prototype, "byteOffset", NAME_GetByteOffset,
+      DONT_ENUM | DONT_DELETE);
+  InstallGetter(global.NAME.prototype, "byteLength", NAME_GetByteLength,
+      DONT_ENUM | DONT_DELETE);
+  InstallGetter(global.NAME.prototype, "length", NAME_GetLength,
+      DONT_ENUM | DONT_DELETE);
+  InstallGetter(global.NAME.prototype, symbolToStringTag,
+                TypedArrayGetToStringTag);
+  InstallFunctions(global.NAME.prototype, DONT_ENUM, [
     "subarray", NAMESubArray,
     "set", TypedArraySet
   ]);
@@ -333,6 +326,8 @@ TYPED_ARRAYS(SETUP_TYPED_ARRAY)
 
 // --------------------------- DataView -----------------------------
 
+var $DataView = global.DataView;
+
 function DataViewConstructor(buffer, byteOffset, byteLength) { // length = 3
   if (%_IsConstructCall()) {
     if (!IS_ARRAYBUFFER(buffer)) {
@@ -435,20 +430,19 @@ endmacro
 DATA_VIEW_TYPES(DATA_VIEW_GETTER_SETTER)
 
 // Setup the DataView constructor.
-%SetCode(GlobalDataView, DataViewConstructor);
-%FunctionSetPrototype(GlobalDataView, new GlobalObject);
+%SetCode($DataView, DataViewConstructor);
+%FunctionSetPrototype($DataView, new $Object);
 
 // Set up constructor property on the DataView prototype.
-%AddNamedProperty(GlobalDataView.prototype, "constructor", GlobalDataView,
-                  DONT_ENUM);
-%AddNamedProperty(GlobalDataView.prototype, symbolToStringTag, "DataView",
-                  READ_ONLY|DONT_ENUM);
+%AddNamedProperty($DataView.prototype, "constructor", $DataView, DONT_ENUM);
+%AddNamedProperty(
+    $DataView.prototype, symbolToStringTag, "DataView", READ_ONLY|DONT_ENUM);
 
-$installGetter(GlobalDataView.prototype, "buffer", DataViewGetBufferJS);
-$installGetter(GlobalDataView.prototype, "byteOffset", DataViewGetByteOffset);
-$installGetter(GlobalDataView.prototype, "byteLength", DataViewGetByteLength);
+InstallGetter($DataView.prototype, "buffer", DataViewGetBufferJS);
+InstallGetter($DataView.prototype, "byteOffset", DataViewGetByteOffset);
+InstallGetter($DataView.prototype, "byteLength", DataViewGetByteLength);
 
-$installFunctions(GlobalDataView.prototype, DONT_ENUM, [
+InstallFunctions($DataView.prototype, DONT_ENUM, [
   "getInt8", DataViewGetInt8JS,
   "setInt8", DataViewSetInt8JS,
 
index fdbd07e..b7dd050 100644 (file)
@@ -356,7 +356,7 @@ function URIEncodeComponent(component) {
 
 // Set up non-enumerable URI functions on the global object and set
 // their names.
-$installFunctions(global, DONT_ENUM, [
+InstallFunctions(global, DONT_ENUM, [
   "escape", URIEscapeJS,
   "unescape", URIUnescapeJS,
   "decodeURI", URIDecode,
index 9c822b2..d163f5e 100644 (file)
@@ -2,44 +2,16 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-var $delete;
-var $functionSourceString;
-var $getIterator;
-var $getMethod;
-var $globalEval;
-var $installConstants;
-var $installFunctions;
-var $installGetter;
-var $isFinite;
-var $isNaN;
-var $newFunctionString;
-var $numberIsNaN;
-var $objectDefineProperties;
-var $objectDefineProperty;
-var $objectFreeze;
-var $objectGetOwnPropertyDescriptor;
-var $objectGetOwnPropertyKeys;
-var $objectHasOwnProperty;
-var $objectIsFrozen;
-var $objectIsSealed;
-var $objectLookupGetter;
-var $objectLookupSetter;
-var $objectToString;
-var $overrideFunction;
-var $setFunctionName;
-var $setUpLockedPrototype;
-var $toCompletePropertyDescriptor;
-var $toNameArray;
-
-(function() {
-
-%CheckIsBootstrapping();
-
-var GlobalArray = global.Array;
-var GlobalBoolean = global.Boolean;
-var GlobalFunction = global.Function;
-var GlobalNumber = global.Number;
-var GlobalObject = global.Object;
+// This file relies on the fact that the following declarations have been made
+// in runtime.js:
+// var $Object = global.Object;
+// var $Boolean = global.Boolean;
+// var $Number = global.Number;
+// var $Function = global.Function;
+// var $Array = global.Array;
+
+var $isNaN = GlobalIsNaN;
+var $isFinite = GlobalIsFinite;
 
 // ----------------------------------------------------------------------------
 
@@ -223,31 +195,44 @@ function GlobalEval(x) {
 // ----------------------------------------------------------------------------
 
 // Set up global object.
-var attributes = DONT_ENUM | DONT_DELETE | READ_ONLY;
+function SetUpGlobal() {
+  %CheckIsBootstrapping();
+
+  var attributes = DONT_ENUM | DONT_DELETE | READ_ONLY;
 
-InstallConstants(global, [
   // ECMA 262 - 15.1.1.1.
-  "NaN", NAN,
-  // ECMA-262 - 15.1.1.2.
-  "Infinity", INFINITY,
+  %AddNamedProperty(global, "NaN", NAN, attributes);
+
   // ECMA-262 - 15.1.1.2.
-  "undefined", UNDEFINED,
-]);
+  %AddNamedProperty(global, "Infinity", INFINITY, attributes);
 
-// Set up non-enumerable function on the global object.
-InstallFunctions(global, DONT_ENUM, [
-  "isNaN", GlobalIsNaN,
-  "isFinite", GlobalIsFinite,
-  "parseInt", GlobalParseInt,
-  "parseFloat", GlobalParseFloat,
-  "eval", GlobalEval
-]);
+  // ECMA-262 - 15.1.1.3.
+  %AddNamedProperty(global, "undefined", UNDEFINED, attributes);
+
+  // Set up non-enumerable function on the global object.
+  InstallFunctions(global, DONT_ENUM, [
+    "isNaN", GlobalIsNaN,
+    "isFinite", GlobalIsFinite,
+    "parseInt", GlobalParseInt,
+    "parseFloat", GlobalParseFloat,
+    "eval", GlobalEval
+  ]);
+}
+
+SetUpGlobal();
 
 
 // ----------------------------------------------------------------------------
 // Object
 
 // ECMA-262 - 15.2.4.2
+function NoSideEffectsObjectToString() {
+  if (IS_UNDEFINED(this) && !IS_UNDETECTABLE(this)) return "[object Undefined]";
+  if (IS_NULL(this)) return "[object Null]";
+  return "[object " + %_ClassOf(TO_OBJECT_INLINE(this)) + "]";
+}
+
+
 function ObjectToString() {
   if (IS_UNDEFINED(this) && !IS_UNDETECTABLE(this)) return "[object Undefined]";
   if (IS_NULL(this)) return "[object Null]";
@@ -257,7 +242,7 @@ function ObjectToString() {
 
   // TODO(caitp): cannot wait to get rid of this flag :>
   if (harmony_tostring) {
-    tag = O[symbolToStringTag];
+    var tag = O[symbolToStringTag];
     if (!IS_STRING(tag)) {
       tag = builtinTag;
     }
@@ -426,7 +411,7 @@ function FromPropertyDescriptor(desc) {
 // Harmony Proxies
 function FromGenericPropertyDescriptor(desc) {
   if (IS_UNDEFINED(desc)) return desc;
-  var obj = new GlobalObject();
+  var obj = new $Object();
 
   if (desc.hasValue()) {
     %AddNamedProperty(obj, "value", desc.getValue(), NONE);
@@ -1055,7 +1040,7 @@ function ToNameArray(obj, trap, includeSymbols) {
     throw MakeTypeError(kProxyNonObjectPropNames, trap, obj);
   }
   var n = ToUint32(obj.length);
-  var array = new GlobalArray(n);
+  var array = new $Array(n);
   var realLength = 0;
   var names = { __proto__: null };  // TODO(rossberg): use sets once ready.
   for (var index = 0; index < n; index++) {
@@ -1264,8 +1249,8 @@ function ProxyFix(obj) {
     %SetCode(obj, code);
     // TODO(rossberg): What about length and other properties? Not specified.
     // We just put in some half-reasonable defaults for now.
-    var prototype = new GlobalObject();
-    ObjectDefineProperty(prototype, "constructor",
+    var prototype = new $Object();
+    $Object.defineProperty(prototype, "constructor",
       {value: obj, writable: true, enumerable: false, configurable: true});
     // TODO(v8:1530): defineProperty does not handle prototype and length.
     %FunctionSetPrototype(obj, prototype);
@@ -1430,49 +1415,54 @@ function ObjectConstructor(x) {
 // ----------------------------------------------------------------------------
 // Object
 
-%SetNativeFlag(GlobalObject);
-%SetCode(GlobalObject, ObjectConstructor);
-
-%AddNamedProperty(GlobalObject.prototype, "constructor", GlobalObject,
-                  DONT_ENUM);
-
-// Set up non-enumerable functions on the Object.prototype object.
-InstallFunctions(GlobalObject.prototype, DONT_ENUM, [
-  "toString", ObjectToString,
-  "toLocaleString", ObjectToLocaleString,
-  "valueOf", ObjectValueOf,
-  "hasOwnProperty", ObjectHasOwnProperty,
-  "isPrototypeOf", ObjectIsPrototypeOf,
-  "propertyIsEnumerable", ObjectPropertyIsEnumerable,
-  "__defineGetter__", ObjectDefineGetter,
-  "__lookupGetter__", ObjectLookupGetter,
-  "__defineSetter__", ObjectDefineSetter,
-  "__lookupSetter__", ObjectLookupSetter
-]);
-InstallGetterSetter(GlobalObject.prototype, "__proto__", ObjectGetProto,
-                    ObjectSetProto);
-
-// Set up non-enumerable functions in the Object object.
-InstallFunctions(GlobalObject, DONT_ENUM, [
-  "keys", ObjectKeys,
-  "create", ObjectCreate,
-  "defineProperty", ObjectDefineProperty,
-  "defineProperties", ObjectDefineProperties,
-  "freeze", ObjectFreezeJS,
-  "getPrototypeOf", ObjectGetPrototypeOf,
-  "setPrototypeOf", ObjectSetPrototypeOf,
-  "getOwnPropertyDescriptor", ObjectGetOwnPropertyDescriptor,
-  "getOwnPropertyNames", ObjectGetOwnPropertyNames,
-  // getOwnPropertySymbols is added in symbol.js.
-  "is", ObjectIs,
-  "isExtensible", ObjectIsExtensible,
-  "isFrozen", ObjectIsFrozen,
-  "isSealed", ObjectIsSealed,
-  "preventExtensions", ObjectPreventExtension,
-  "seal", ObjectSealJS
-  // deliverChangeRecords, getNotifier, observe and unobserve are added
-  // in object-observe.js.
-]);
+function SetUpObject() {
+  %CheckIsBootstrapping();
+
+  %SetNativeFlag($Object);
+  %SetCode($Object, ObjectConstructor);
+
+  %AddNamedProperty($Object.prototype, "constructor", $Object, DONT_ENUM);
+
+  // Set up non-enumerable functions on the Object.prototype object.
+  InstallFunctions($Object.prototype, DONT_ENUM, [
+    "toString", ObjectToString,
+    "toLocaleString", ObjectToLocaleString,
+    "valueOf", ObjectValueOf,
+    "hasOwnProperty", ObjectHasOwnProperty,
+    "isPrototypeOf", ObjectIsPrototypeOf,
+    "propertyIsEnumerable", ObjectPropertyIsEnumerable,
+    "__defineGetter__", ObjectDefineGetter,
+    "__lookupGetter__", ObjectLookupGetter,
+    "__defineSetter__", ObjectDefineSetter,
+    "__lookupSetter__", ObjectLookupSetter
+  ]);
+  InstallGetterSetter($Object.prototype, "__proto__",
+                      ObjectGetProto, ObjectSetProto);
+
+  // Set up non-enumerable functions in the Object object.
+  InstallFunctions($Object, DONT_ENUM, [
+    "keys", ObjectKeys,
+    "create", ObjectCreate,
+    "defineProperty", ObjectDefineProperty,
+    "defineProperties", ObjectDefineProperties,
+    "freeze", ObjectFreezeJS,
+    "getPrototypeOf", ObjectGetPrototypeOf,
+    "setPrototypeOf", ObjectSetPrototypeOf,
+    "getOwnPropertyDescriptor", ObjectGetOwnPropertyDescriptor,
+    "getOwnPropertyNames", ObjectGetOwnPropertyNames,
+    // getOwnPropertySymbols is added in symbol.js.
+    "is", ObjectIs,
+    "isExtensible", ObjectIsExtensible,
+    "isFrozen", ObjectIsFrozen,
+    "isSealed", ObjectIsSealed,
+    "preventExtensions", ObjectPreventExtension,
+    "seal", ObjectSealJS
+    // deliverChangeRecords, getNotifier, observe and unobserve are added
+    // in object-observe.js.
+  ]);
+}
+
+SetUpObject();
 
 
 // ----------------------------------------------------------------------------
@@ -1513,15 +1503,20 @@ function BooleanValueOf() {
 
 // ----------------------------------------------------------------------------
 
-%SetCode(GlobalBoolean, BooleanConstructor);
-%FunctionSetPrototype(GlobalBoolean, new GlobalBoolean(false));
-%AddNamedProperty(GlobalBoolean.prototype, "constructor", GlobalBoolean,
-                  DONT_ENUM);
+function SetUpBoolean () {
+  %CheckIsBootstrapping();
 
-InstallFunctions(GlobalBoolean.prototype, DONT_ENUM, [
-  "toString", BooleanToString,
-  "valueOf", BooleanValueOf
-]);
+  %SetCode($Boolean, BooleanConstructor);
+  %FunctionSetPrototype($Boolean, new $Boolean(false));
+  %AddNamedProperty($Boolean.prototype, "constructor", $Boolean, DONT_ENUM);
+
+  InstallFunctions($Boolean.prototype, DONT_ENUM, [
+    "toString", BooleanToString,
+    "valueOf", BooleanValueOf
+  ]);
+}
+
+SetUpBoolean();
 
 
 // ----------------------------------------------------------------------------
@@ -1677,9 +1672,7 @@ function NumberIsNaN(number) {
 function NumberIsSafeInteger(number) {
   if (NumberIsFinite(number)) {
     var integral = TO_INTEGER(number);
-    if (integral == number) {
-      return $abs(integral) <= GlobalNumber.MAX_SAFE_INTEGER;
-    }
+    if (integral == number) return $abs(integral) <= $Number.MAX_SAFE_INTEGER;
   }
   return false;
 }
@@ -1687,54 +1680,59 @@ function NumberIsSafeInteger(number) {
 
 // ----------------------------------------------------------------------------
 
-%SetCode(GlobalNumber, NumberConstructor);
-%FunctionSetPrototype(GlobalNumber, new GlobalNumber(0));
-
-%OptimizeObjectForAddingMultipleProperties(GlobalNumber.prototype, 8);
-// Set up the constructor property on the Number prototype object.
-%AddNamedProperty(GlobalNumber.prototype, "constructor", GlobalNumber,
-                  DONT_ENUM);
-
-InstallConstants(GlobalNumber, [
-  // ECMA-262 section 15.7.3.1.
-  "MAX_VALUE", 1.7976931348623157e+308,
-  // ECMA-262 section 15.7.3.2.
-  "MIN_VALUE", 5e-324,
-  // ECMA-262 section 15.7.3.3.
-  "NaN", NAN,
-  // ECMA-262 section 15.7.3.4.
-  "NEGATIVE_INFINITY", -INFINITY,
-  // ECMA-262 section 15.7.3.5.
-  "POSITIVE_INFINITY", INFINITY,
-
-  // --- Harmony constants (no spec refs until settled.)
-
-  "MAX_SAFE_INTEGER", %_MathPow(2, 53) - 1,
-  "MIN_SAFE_INTEGER", -%_MathPow(2, 53) + 1,
-  "EPSILON", %_MathPow(2, -52)
-]);
-
-// Set up non-enumerable functions on the Number prototype object.
-InstallFunctions(GlobalNumber.prototype, DONT_ENUM, [
-  "toString", NumberToStringJS,
-  "toLocaleString", NumberToLocaleString,
-  "valueOf", NumberValueOf,
-  "toFixed", NumberToFixedJS,
-  "toExponential", NumberToExponentialJS,
-  "toPrecision", NumberToPrecisionJS
-]);
-
-// Harmony Number constructor additions
-InstallFunctions(GlobalNumber, DONT_ENUM, [
-  "isFinite", NumberIsFinite,
-  "isInteger", NumberIsInteger,
-  "isNaN", NumberIsNaN,
-  "isSafeInteger", NumberIsSafeInteger,
-  "parseInt", GlobalParseInt,
-  "parseFloat", GlobalParseFloat
-]);
+function SetUpNumber() {
+  %CheckIsBootstrapping();
 
-%SetInlineBuiltinFlag(NumberIsNaN);
+  %SetCode($Number, NumberConstructor);
+  %FunctionSetPrototype($Number, new $Number(0));
+
+  %OptimizeObjectForAddingMultipleProperties($Number.prototype, 8);
+  // Set up the constructor property on the Number prototype object.
+  %AddNamedProperty($Number.prototype, "constructor", $Number, DONT_ENUM);
+
+  InstallConstants($Number, [
+    // ECMA-262 section 15.7.3.1.
+    "MAX_VALUE", 1.7976931348623157e+308,
+    // ECMA-262 section 15.7.3.2.
+    "MIN_VALUE", 5e-324,
+    // ECMA-262 section 15.7.3.3.
+    "NaN", NAN,
+    // ECMA-262 section 15.7.3.4.
+    "NEGATIVE_INFINITY", -INFINITY,
+    // ECMA-262 section 15.7.3.5.
+    "POSITIVE_INFINITY", INFINITY,
+
+    // --- Harmony constants (no spec refs until settled.)
+
+    "MAX_SAFE_INTEGER", %_MathPow(2, 53) - 1,
+    "MIN_SAFE_INTEGER", -%_MathPow(2, 53) + 1,
+    "EPSILON", %_MathPow(2, -52)
+  ]);
+
+  // Set up non-enumerable functions on the Number prototype object.
+  InstallFunctions($Number.prototype, DONT_ENUM, [
+    "toString", NumberToStringJS,
+    "toLocaleString", NumberToLocaleString,
+    "valueOf", NumberValueOf,
+    "toFixed", NumberToFixedJS,
+    "toExponential", NumberToExponentialJS,
+    "toPrecision", NumberToPrecisionJS
+  ]);
+
+  // Harmony Number constructor additions
+  InstallFunctions($Number, DONT_ENUM, [
+    "isFinite", NumberIsFinite,
+    "isInteger", NumberIsInteger,
+    "isNaN", NumberIsNaN,
+    "isSafeInteger", NumberIsSafeInteger,
+    "parseInt", GlobalParseInt,
+    "parseFloat", GlobalParseFloat
+  ]);
+
+  %SetInlineBuiltinFlag(NumberIsNaN);
+}
+
+SetUpNumber();
 
 
 // ----------------------------------------------------------------------------
@@ -1852,13 +1850,13 @@ function FunctionBind(this_arg) { // Length is 1.
 }
 
 
-function NewFunctionString(args, function_token) {
-  var n = args.length;
+function NewFunctionString(arguments, function_token) {
+  var n = arguments.length;
   var p = '';
   if (n > 1) {
-    p = ToString(args[0]);
+    p = ToString(arguments[0]);
     for (var i = 1; i < n - 1; i++) {
-      p += ',' + ToString(args[i]);
+      p += ',' + ToString(arguments[i]);
     }
     // If the formal parameters string include ) - an illegal
     // character - it may make the combined function expression
@@ -1871,7 +1869,7 @@ function NewFunctionString(args, function_token) {
     // comments we can include a trailing block comment to catch this.
     p += '\n/' + '**/';
   }
-  var body = (n > 0) ? ToString(args[n - 1]) : '';
+  var body = (n > 0) ? ToString(arguments[n - 1]) : '';
   return '(' + function_token + '(' + p + ') {\n' + body + '\n})';
 }
 
@@ -1889,14 +1887,20 @@ function FunctionConstructor(arg1) {  // length == 1
 
 // ----------------------------------------------------------------------------
 
-%SetCode(GlobalFunction, FunctionConstructor);
-%AddNamedProperty(GlobalFunction.prototype, "constructor", GlobalFunction,
-                  DONT_ENUM);
+function SetUpFunction() {
+  %CheckIsBootstrapping();
+
+  %SetCode($Function, FunctionConstructor);
+  %AddNamedProperty($Function.prototype, "constructor", $Function, DONT_ENUM);
+
+  InstallFunctions($Function.prototype, DONT_ENUM, [
+    "bind", FunctionBind,
+    "toString", FunctionToString
+  ]);
+}
+
+SetUpFunction();
 
-InstallFunctions(GlobalFunction.prototype, DONT_ENUM, [
-  "bind", FunctionBind,
-  "toString", FunctionToString
-]);
 
 // ----------------------------------------------------------------------------
 // Iterator related spec functions.
@@ -1916,36 +1920,3 @@ function GetIterator(obj, method) {
   }
   return iterator;
 }
-
-//----------------------------------------------------------------------------
-
-$delete = Delete;
-$functionSourceString = FunctionSourceString;
-$getIterator = GetIterator;
-$getMethod = GetMethod;
-$globalEval = GlobalEval;
-$installConstants = InstallConstants;
-$installFunctions = InstallFunctions;
-$installGetter = InstallGetter;
-$isFinite = GlobalIsFinite;
-$isNaN = GlobalIsNaN;
-$newFunctionString = NewFunctionString;
-$numberIsNaN = NumberIsNaN;
-$objectDefineProperties = ObjectDefineProperties;
-$objectDefineProperty = ObjectDefineProperty;
-$objectFreeze = ObjectFreezeJS;
-$objectGetOwnPropertyDescriptor = ObjectGetOwnPropertyDescriptor;
-$objectGetOwnPropertyKeys = ObjectGetOwnPropertyKeys;
-$objectHasOwnProperty = ObjectHasOwnProperty;
-$objectIsFrozen = ObjectIsFrozen;
-$objectIsSealed = ObjectIsSealed;
-$objectLookupGetter = ObjectLookupGetter;
-$objectLookupSetter = ObjectLookupSetter;
-$objectToString = ObjectToString;
-$overrideFunction = OverrideFunction;
-$setFunctionName = SetFunctionName;
-$setUpLockedPrototype = SetUpLockedPrototype;
-$toCompletePropertyDescriptor = ToCompletePropertyDescriptor;
-$toNameArray = ToNameArray;
-
-})();
index f7c3e29..02804af 100644 (file)
@@ -90,7 +90,7 @@ function WeakMapDelete(key) {
                   DONT_ENUM | READ_ONLY);
 
 // Set up the non-enumerable functions on the WeakMap prototype object.
-$installFunctions(GlobalWeakMap.prototype, DONT_ENUM, [
+InstallFunctions(GlobalWeakMap.prototype, DONT_ENUM, [
   "get", WeakMapGet,
   "set", WeakMapSet,
   "has", WeakMapHas,
@@ -162,7 +162,7 @@ function WeakSetDelete(value) {
                   DONT_ENUM | READ_ONLY);
 
 // Set up the non-enumerable functions on the WeakSet prototype object.
-$installFunctions(GlobalWeakSet.prototype, DONT_ENUM, [
+InstallFunctions(GlobalWeakSet.prototype, DONT_ENUM, [
   "add", WeakSetAdd,
   "has", WeakSetHas,
   "delete", WeakSetDelete
index ea2ecd2..f5d6ac4 100644 (file)
@@ -29,5 +29,5 @@
 
 // Test call of JS runtime functions.
 
-var a = %$isNaN(0/0);
-assertEquals(true, a);
+var a = %GlobalParseInt("21", 16);
+assertEquals(33, a);
index cadc98b..250dea9 100644 (file)
@@ -100,12 +100,6 @@ class JavaScriptMinifier(object):
       The string that should replace the match in the rewritten program.
     """
     matched_text = m.group(0)
-
-    if matched_text.startswith("`") and matched_text.endswith("`"):
-      return re.sub(r"\$\{([\w$%]+)\}",
-                    lambda m: '${' + self.FindNewName(m.group(1)) + '}',
-                    matched_text)
-
     if matched_text == "{":
       self.Push()
       return matched_text
@@ -158,9 +152,6 @@ class JavaScriptMinifier(object):
       return self.map[var_name]
     if self.nesting == 0:
       return var_name
-    # Do not rename arguments object.
-    if var_name == 'arguments':
-      return 'arguments'
     while True:
       identifier_first_char = self.identifier_counter % 52
       identifier_second_char = self.identifier_counter // 52
@@ -193,8 +184,6 @@ class JavaScriptMinifier(object):
       return entire_match
     if re.match(r'".*"$', entire_match):
       return entire_match
-    if re.match(r"`.*`$", entire_match):
-      return entire_match
     if re.match(r"/.+/$", entire_match):
       return entire_match
     return replacement
@@ -238,10 +227,8 @@ class JavaScriptMinifier(object):
       # This regexp can handle embedded backslash-escaped characters including
       # embedded backslash-escaped double quotes.
       double_quoted_string = r'"(?:[^"\\]|\\.)*"'
-      # A regexp that matches a literal string surrounded by 'single quotes'.
+      # A regexp that matches a literal string surrounded by 'double quotes'.
       single_quoted_string = r"'(?:[^'\\]|\\.)*'"
-      # A regexp that matches a template string
-      template_string = r"`(?:[^'\\]|\\.)*`"
       # A regexp that matches a regexp literal surrounded by /slashes/.
       # Don't allow a regexp to have a ) before the first ( since that's a
       # syntax error and it's probably just two unrelated slashes.
@@ -251,7 +238,6 @@ class JavaScriptMinifier(object):
       # Replace multiple spaces with a single space.
       line = re.sub("|".join([double_quoted_string,
                               single_quoted_string,
-                              template_string,
                               slash_quoted_regexp,
                               "( )+"]),
                     self.RemoveSpaces,
@@ -260,7 +246,6 @@ class JavaScriptMinifier(object):
       # and after the space.  % and $ are counted as identifier characters.
       line = re.sub("|".join([double_quoted_string,
                               single_quoted_string,
-                              template_string,
                               slash_quoted_regexp,
                               r"(?<![a-zA-Z_0-9$%]) | (?![a-zA-Z_0-9$%])()"]),
                     self.RemoveSpaces,
@@ -284,7 +269,6 @@ class JavaScriptMinifier(object):
       variable_use_regexp = r"(?<![.\w$%])[\w$%]+" + block_trailing_colon
       line = re.sub("|".join([double_quoted_string,
                               single_quoted_string,
-                              template_string,
                               slash_quoted_regexp,
                               r"\{",                  # Curly braces.
                               r"\}",