From 401b30877822090f4a97ca7077824dbbf88a27e2 Mon Sep 17 00:00:00 2001 From: "vitalyr@chromium.org" Date: Thu, 24 Mar 2011 19:05:49 +0000 Subject: [PATCH] Allow calling stats API functions before we have an isolate. Review URL: http://codereview.chromium.org/6733030 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7353 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/api.cc | 6 +++--- test/cctest/test-api.cc | 33 ++++++++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/src/api.cc b/src/api.cc index 0a7da7d..af8054f 100644 --- a/src/api.cc +++ b/src/api.cc @@ -4398,19 +4398,19 @@ void V8::SetCaptureStackTraceForUncaughtExceptions( void V8::SetCounterFunction(CounterLookupCallback callback) { - i::Isolate* isolate = i::Isolate::Current(); + i::Isolate* isolate = EnterIsolateIfNeeded(); if (IsDeadCheck(isolate, "v8::V8::SetCounterFunction()")) return; isolate->stats_table()->SetCounterFunction(callback); } void V8::SetCreateHistogramFunction(CreateHistogramCallback callback) { - i::Isolate* isolate = i::Isolate::Current(); + i::Isolate* isolate = EnterIsolateIfNeeded(); if (IsDeadCheck(isolate, "v8::V8::SetCreateHistogramFunction()")) return; isolate->stats_table()->SetCreateHistogramFunction(callback); } void V8::SetAddHistogramSampleFunction(AddHistogramSampleCallback callback) { - i::Isolate* isolate = i::Isolate::Current(); + i::Isolate* isolate = EnterIsolateIfNeeded(); if (IsDeadCheck(isolate, "v8::V8::SetAddHistogramSampleFunction()")) return; isolate->stats_table()-> SetAddHistogramSampleFunction(callback); diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc index 4125b3c..2a4fe13 100644 --- a/test/cctest/test-api.cc +++ b/test/cctest/test-api.cc @@ -13181,7 +13181,14 @@ TEST(MultipleIsolatesOnIndividualThreads) { class InitDefaultIsolateThread : public v8::internal::Thread { public: - enum TestCase { IgnoreOOM, SetResourceConstraints, SetFatalHandler }; + enum TestCase { + IgnoreOOM, + SetResourceConstraints, + SetFatalHandler, + SetCounterFunction, + SetCreateHistogramFunction, + SetAddHistogramSampleFunction + }; explicit InitDefaultIsolateThread(TestCase testCase) : Thread(NULL, "InitDefaultIsolateThread"), @@ -13206,6 +13213,18 @@ class InitDefaultIsolateThread : public v8::internal::Thread { case SetFatalHandler: v8::V8::SetFatalErrorHandler(NULL); break; + + case SetCounterFunction: + v8::V8::SetCounterFunction(NULL); + break; + + case SetCreateHistogramFunction: + v8::V8::SetCreateHistogramFunction(NULL); + break; + + case SetAddHistogramSampleFunction: + v8::V8::SetAddHistogramSampleFunction(NULL); + break; } result_ = true; } @@ -13237,6 +13256,18 @@ TEST(InitializeDefaultIsolateOnSecondaryThread3) { InitializeTestHelper(InitDefaultIsolateThread::SetFatalHandler); } +TEST(InitializeDefaultIsolateOnSecondaryThread4) { + InitializeTestHelper(InitDefaultIsolateThread::SetCounterFunction); +} + +TEST(InitializeDefaultIsolateOnSecondaryThread5) { + InitializeTestHelper(InitDefaultIsolateThread::SetCreateHistogramFunction); +} + +TEST(InitializeDefaultIsolateOnSecondaryThread6) { + InitializeTestHelper(InitDefaultIsolateThread::SetAddHistogramSampleFunction); +} + TEST(StringCheckMultipleContexts) { const char* code = -- 2.7.4