Index: src/d8.cc |
diff --git a/src/d8.cc b/src/d8.cc |
index 25771eed9ba5c28d88d07acace71c1481aa33e9f..1560b09a2b5b77cda7b6592b07be6aa865503f46 100644 |
--- a/src/d8.cc |
+++ b/src/d8.cc |
@@ -159,6 +159,7 @@ i::OS::MemoryMappedFile* Shell::counters_file_ = NULL; |
CounterCollection Shell::local_counters_; |
CounterCollection* Shell::counters_ = &local_counters_; |
i::Mutex Shell::context_mutex_; |
+const i::TimeTicks Shell::kInitialTicks = i::TimeTicks::HighResolutionNow(); |
Persistent<Context> Shell::utility_context_; |
#endif // V8_SHARED |
@@ -287,6 +288,15 @@ int PerIsolateData::RealmFind(Handle<Context> context) { |
} |
+#ifndef V8_SHARED |
+// performance.now() returns a time stamp as double, measured in milliseconds. |
+void Shell::PerformanceNow(const v8::FunctionCallbackInfo<v8::Value>& args) { |
+ i::TimeDelta delta = i::TimeTicks::HighResolutionNow() - kInitialTicks; |
+ args.GetReturnValue().Set(delta.InMillisecondsF()); |
+} |
+#endif // V8_SHARED |
+ |
+ |
// Realm.current() returns the index of the currently active realm. |
void Shell::RealmCurrent(const v8::FunctionCallbackInfo<v8::Value>& args) { |
Isolate* isolate = args.GetIsolate(); |
@@ -886,6 +896,14 @@ Handle<ObjectTemplate> Shell::CreateGlobalTemplate(Isolate* isolate) { |
RealmSharedGet, RealmSharedSet); |
global_template->Set(String::NewFromUtf8(isolate, "Realm"), realm_template); |
+#ifndef V8_SHARED |
+ Handle<ObjectTemplate> performance_template = ObjectTemplate::New(isolate); |
+ performance_template->Set(String::NewFromUtf8(isolate, "now"), |
+ FunctionTemplate::New(isolate, PerformanceNow)); |
+ global_template->Set(String::NewFromUtf8(isolate, "performance"), |
+ performance_template); |
+#endif // V8_SHARED |
+ |
#if !defined(V8_SHARED) && !defined(_WIN32) && !defined(_WIN64) |
Handle<ObjectTemplate> os_templ = ObjectTemplate::New(isolate); |
AddOSMethods(isolate, os_templ); |