Index: src/date.js |
diff --git a/src/date.js b/src/date.js |
index ff24e9cc19af5e0037f45c1ee29c4f7a484d1188..eafe79850049efac1b5146f75d353de6bfd26fd5 100644 |
--- a/src/date.js |
+++ b/src/date.js |
@@ -2,16 +2,22 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-"use strict"; |
- |
// This file relies on the fact that the following declarations have been made |
// in v8natives.js: |
// var $isFinite = GlobalIsFinite; |
-var $Date = global.Date; |
+var $createDate; |
// ------------------------------------------------------------------- |
+(function() { |
+ |
+"use strict"; |
+ |
+%CheckIsBootstrapping(); |
+ |
+var GlobalDate = global.Date; |
+ |
// This file contains date support implemented in JavaScript. |
// Helper function to throw error. |
@@ -19,7 +25,6 @@ function ThrowDateTypeError() { |
throw new $TypeError('this is not a Date object.'); |
} |
- |
var timezone_cache_time = NAN; |
var timezone_cache_timezone; |
@@ -121,7 +126,7 @@ var Date_cache = { |
function DateConstructor(year, month, date, hours, minutes, seconds, ms) { |
if (!%_IsConstructCall()) { |
// ECMA 262 - 15.9.2 |
- return (new $Date()).toString(); |
+ return (new GlobalDate()).toString(); |
} |
// ECMA 262 - 15.9.3 |
@@ -749,79 +754,78 @@ function CheckDateCacheCurrent() { |
function CreateDate(time) { |
- var date = new $Date(); |
+ var date = new GlobalDate(); |
date.setTime(time); |
return date; |
} |
// ------------------------------------------------------------------- |
-function SetUpDate() { |
- %CheckIsBootstrapping(); |
- |
- %SetCode($Date, DateConstructor); |
- %FunctionSetPrototype($Date, new $Date(NAN)); |
- |
- // Set up non-enumerable properties of the Date object itself. |
- InstallFunctions($Date, DONT_ENUM, $Array( |
- "UTC", DateUTC, |
- "parse", DateParse, |
- "now", DateNow |
- )); |
- |
- // Set up non-enumerable constructor property of the Date prototype object. |
- %AddNamedProperty($Date.prototype, "constructor", $Date, DONT_ENUM); |
- |
- // Set up non-enumerable functions of the Date prototype object and |
- // set their names. |
- InstallFunctions($Date.prototype, DONT_ENUM, $Array( |
- "toString", DateToString, |
- "toDateString", DateToDateString, |
- "toTimeString", DateToTimeString, |
- "toLocaleString", DateToLocaleString, |
- "toLocaleDateString", DateToLocaleDateString, |
- "toLocaleTimeString", DateToLocaleTimeString, |
- "valueOf", DateValueOf, |
- "getTime", DateGetTime, |
- "getFullYear", DateGetFullYear, |
- "getUTCFullYear", DateGetUTCFullYear, |
- "getMonth", DateGetMonth, |
- "getUTCMonth", DateGetUTCMonth, |
- "getDate", DateGetDate, |
- "getUTCDate", DateGetUTCDate, |
- "getDay", DateGetDay, |
- "getUTCDay", DateGetUTCDay, |
- "getHours", DateGetHours, |
- "getUTCHours", DateGetUTCHours, |
- "getMinutes", DateGetMinutes, |
- "getUTCMinutes", DateGetUTCMinutes, |
- "getSeconds", DateGetSeconds, |
- "getUTCSeconds", DateGetUTCSeconds, |
- "getMilliseconds", DateGetMilliseconds, |
- "getUTCMilliseconds", DateGetUTCMilliseconds, |
- "getTimezoneOffset", DateGetTimezoneOffset, |
- "setTime", DateSetTime, |
- "setMilliseconds", DateSetMilliseconds, |
- "setUTCMilliseconds", DateSetUTCMilliseconds, |
- "setSeconds", DateSetSeconds, |
- "setUTCSeconds", DateSetUTCSeconds, |
- "setMinutes", DateSetMinutes, |
- "setUTCMinutes", DateSetUTCMinutes, |
- "setHours", DateSetHours, |
- "setUTCHours", DateSetUTCHours, |
- "setDate", DateSetDate, |
- "setUTCDate", DateSetUTCDate, |
- "setMonth", DateSetMonth, |
- "setUTCMonth", DateSetUTCMonth, |
- "setFullYear", DateSetFullYear, |
- "setUTCFullYear", DateSetUTCFullYear, |
- "toGMTString", DateToGMTString, |
- "toUTCString", DateToUTCString, |
- "getYear", DateGetYear, |
- "setYear", DateSetYear, |
- "toISOString", DateToISOString, |
- "toJSON", DateToJSON |
- )); |
-} |
- |
-SetUpDate(); |
+%SetCode(GlobalDate, DateConstructor); |
+%FunctionSetPrototype(GlobalDate, new GlobalDate(NAN)); |
+ |
+// Set up non-enumerable properties of the Date object itself. |
+InstallFunctions(GlobalDate, DONT_ENUM, $Array( |
+ "UTC", DateUTC, |
+ "parse", DateParse, |
+ "now", DateNow |
+)); |
+ |
+// Set up non-enumerable constructor property of the Date prototype object. |
+%AddNamedProperty(GlobalDate.prototype, "constructor", GlobalDate, DONT_ENUM); |
+ |
+// Set up non-enumerable functions of the Date prototype object and |
+// set their names. |
+InstallFunctions(GlobalDate.prototype, DONT_ENUM, $Array( |
+ "toString", DateToString, |
+ "toDateString", DateToDateString, |
+ "toTimeString", DateToTimeString, |
+ "toLocaleString", DateToLocaleString, |
+ "toLocaleDateString", DateToLocaleDateString, |
+ "toLocaleTimeString", DateToLocaleTimeString, |
+ "valueOf", DateValueOf, |
+ "getTime", DateGetTime, |
+ "getFullYear", DateGetFullYear, |
+ "getUTCFullYear", DateGetUTCFullYear, |
+ "getMonth", DateGetMonth, |
+ "getUTCMonth", DateGetUTCMonth, |
+ "getDate", DateGetDate, |
+ "getUTCDate", DateGetUTCDate, |
+ "getDay", DateGetDay, |
+ "getUTCDay", DateGetUTCDay, |
+ "getHours", DateGetHours, |
+ "getUTCHours", DateGetUTCHours, |
+ "getMinutes", DateGetMinutes, |
+ "getUTCMinutes", DateGetUTCMinutes, |
+ "getSeconds", DateGetSeconds, |
+ "getUTCSeconds", DateGetUTCSeconds, |
+ "getMilliseconds", DateGetMilliseconds, |
+ "getUTCMilliseconds", DateGetUTCMilliseconds, |
+ "getTimezoneOffset", DateGetTimezoneOffset, |
+ "setTime", DateSetTime, |
+ "setMilliseconds", DateSetMilliseconds, |
+ "setUTCMilliseconds", DateSetUTCMilliseconds, |
+ "setSeconds", DateSetSeconds, |
+ "setUTCSeconds", DateSetUTCSeconds, |
+ "setMinutes", DateSetMinutes, |
+ "setUTCMinutes", DateSetUTCMinutes, |
+ "setHours", DateSetHours, |
+ "setUTCHours", DateSetUTCHours, |
+ "setDate", DateSetDate, |
+ "setUTCDate", DateSetUTCDate, |
+ "setMonth", DateSetMonth, |
+ "setUTCMonth", DateSetUTCMonth, |
+ "setFullYear", DateSetFullYear, |
+ "setUTCFullYear", DateSetUTCFullYear, |
+ "toGMTString", DateToGMTString, |
+ "toUTCString", DateToUTCString, |
+ "getYear", DateGetYear, |
+ "setYear", DateSetYear, |
+ "toISOString", DateToISOString, |
+ "toJSON", DateToJSON |
+)); |
+ |
+// Expose to the global scope. |
+$createDate = CreateDate; |
+ |
+})(); |