Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(54)

Unified Diff: test/cctest/test-api.cc

Issue 101463003: Revert "Introduce API to temporarily interrupt long running JavaScript code." (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/hydrogen-sce.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/cctest/test-api.cc
diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc
index af4eef2adb80c9d7ebfb5f65a6a7da688bc2dc37..9ea8b0d8a38e7bca01e87e359a9bc73cec62b56e 100644
--- a/test/cctest/test-api.cc
+++ b/test/cctest/test-api.cc
@@ -20736,9 +20736,6 @@ THREADED_TEST(SemaphoreInterruption) {
}
-#endif // V8_OS_POSIX
-
-
static bool NamedAccessAlwaysBlocked(Local<v8::Object> global,
Local<Value> name,
v8::AccessType type,
@@ -21025,255 +21022,7 @@ THREADED_TEST(CrankshaftInterceptorFieldWrite) {
}
-class RequestInterruptTestBase {
- public:
- RequestInterruptTestBase()
- : env_(),
- isolate_(env_->GetIsolate()),
- sem_(0),
- warmup_(20000),
- should_continue_(true) {
- }
-
- virtual ~RequestInterruptTestBase() { }
-
- virtual void TestBody() = 0;
-
- void RunTest() {
- InterruptThread i_thread(this);
- i_thread.Start();
-
- v8::HandleScope handle_scope(isolate_);
-
- TestBody();
-
- isolate_->ClearInterrupt();
- }
-
- void WakeUpInterruptor() {
- sem_.Signal();
- }
-
- bool should_continue() const { return should_continue_; }
-
- bool ShouldContinue() {
- if (warmup_ > 0) {
- if (--warmup_ == 0) {
- WakeUpInterruptor();
- }
- }
-
- return should_continue_;
- }
-
- protected:
- static void ShouldContinueCallback(
- const v8::FunctionCallbackInfo<Value>& info) {
- RequestInterruptTestBase* test =
- reinterpret_cast<RequestInterruptTestBase*>(
- info.Data().As<v8::External>()->Value());
- info.GetReturnValue().Set(test->ShouldContinue());
- }
-
- class InterruptThread : public i::Thread {
- public:
- explicit InterruptThread(RequestInterruptTestBase* test)
- : Thread("RequestInterruptTest"), test_(test) {}
-
- virtual void Run() {
- test_->sem_.Wait();
- test_->isolate_->RequestInterrupt(&OnInterrupt, test_);
- }
-
- static void OnInterrupt(v8::Isolate* isolate, void* data) {
- reinterpret_cast<RequestInterruptTestBase*>(data)->
- should_continue_ = false;
- }
-
- private:
- RequestInterruptTestBase* test_;
- };
-
- LocalContext env_;
- v8::Isolate* isolate_;
- i::Semaphore sem_;
- int warmup_;
- bool should_continue_;
-};
-
-
-class RequestInterruptTestWithFunctionCall : public RequestInterruptTestBase {
- public:
- virtual void TestBody() {
- Local<Function> func = Function::New(
- isolate_, ShouldContinueCallback, v8::External::New(isolate_, this));
- env_->Global()->Set(v8_str("ShouldContinue"), func);
-
- CompileRun("while (ShouldContinue()) { }");
- }
-};
-
-
-class RequestInterruptTestWithMethodCall : public RequestInterruptTestBase {
- public:
- virtual void TestBody() {
- v8::Local<v8::FunctionTemplate> t = v8::FunctionTemplate::New(isolate_);
- v8::Local<v8::Template> proto = t->PrototypeTemplate();
- proto->Set(v8_str("shouldContinue"), Function::New(
- isolate_, ShouldContinueCallback, v8::External::New(isolate_, this)));
- env_->Global()->Set(v8_str("Klass"), t->GetFunction());
-
- CompileRun("var obj = new Klass; while (obj.shouldContinue()) { }");
- }
-};
-
-
-class RequestInterruptTestWithAccessor : public RequestInterruptTestBase {
- public:
- virtual void TestBody() {
- v8::Local<v8::FunctionTemplate> t = v8::FunctionTemplate::New(isolate_);
- v8::Local<v8::Template> proto = t->PrototypeTemplate();
- proto->SetAccessorProperty(v8_str("shouldContinue"), FunctionTemplate::New(
- isolate_, ShouldContinueCallback, v8::External::New(isolate_, this)));
- env_->Global()->Set(v8_str("Klass"), t->GetFunction());
-
- CompileRun("var obj = new Klass; while (obj.shouldContinue) { }");
- }
-};
-
-
-class RequestInterruptTestWithNativeAccessor : public RequestInterruptTestBase {
- public:
- virtual void TestBody() {
- v8::Local<v8::FunctionTemplate> t = v8::FunctionTemplate::New(isolate_);
- v8::Local<v8::Template> proto = t->PrototypeTemplate();
- proto->SetNativeDataProperty(v8_str("shouldContinue"),
- &ShouldContinueNativeGetter,
- NULL,
- v8::External::New(isolate_, this));
- env_->Global()->Set(v8_str("Klass"), t->GetFunction());
-
- CompileRun("var obj = new Klass; while (obj.shouldContinue) { }");
- }
-
- private:
- static void ShouldContinueNativeGetter(
- Local<String> property,
- const v8::PropertyCallbackInfo<v8::Value>& info) {
- RequestInterruptTestBase* test =
- reinterpret_cast<RequestInterruptTestBase*>(
- info.Data().As<v8::External>()->Value());
- info.GetReturnValue().Set(test->ShouldContinue());
- }
-};
-
-
-class RequestInterruptTestWithMethodCallAndInterceptor
- : public RequestInterruptTestBase {
- public:
- virtual void TestBody() {
- v8::Local<v8::FunctionTemplate> t = v8::FunctionTemplate::New(isolate_);
- v8::Local<v8::Template> proto = t->PrototypeTemplate();
- proto->Set(v8_str("shouldContinue"), Function::New(
- isolate_, ShouldContinueCallback, v8::External::New(isolate_, this)));
- v8::Local<v8::ObjectTemplate> instance_template = t->InstanceTemplate();
- instance_template->SetNamedPropertyHandler(EmptyInterceptor);
-
- env_->Global()->Set(v8_str("Klass"), t->GetFunction());
-
- CompileRun("var obj = new Klass; while (obj.shouldContinue()) { }");
- }
-
- private:
- static void EmptyInterceptor(
- Local<String> property,
- const v8::PropertyCallbackInfo<v8::Value>& info) {
- }
-};
-
-
-class RequestInterruptTestWithMathAbs : public RequestInterruptTestBase {
- public:
- virtual void TestBody() {
- env_->Global()->Set(v8_str("WakeUpInterruptor"), Function::New(
- isolate_,
- WakeUpInterruptorCallback,
- v8::External::New(isolate_, this)));
-
- env_->Global()->Set(v8_str("ShouldContinue"), Function::New(
- isolate_,
- ShouldContinueCallback,
- v8::External::New(isolate_, this)));
-
- i::FLAG_allow_natives_syntax = true;
- CompileRun("function loopish(o) {"
- " var pre = 10;"
- " while (o.abs(1) > 0) {"
- " if (o.abs(1) >= 0 && !ShouldContinue()) break;"
- " if (pre > 0) {"
- " if (--pre === 0) WakeUpInterruptor(o === Math);"
- " }"
- " }"
- "}"
- "var i = 50;"
- "var obj = {abs: function () { return i-- }, x: null};"
- "delete obj.x;"
- "loopish(obj);"
- "%OptimizeFunctionOnNextCall(loopish);"
- "loopish(Math);");
-
- i::FLAG_allow_natives_syntax = false;
- }
-
- private:
- static void WakeUpInterruptorCallback(
- const v8::FunctionCallbackInfo<Value>& info) {
- if (!info[0]->BooleanValue()) return;
-
- RequestInterruptTestBase* test =
- reinterpret_cast<RequestInterruptTestBase*>(
- info.Data().As<v8::External>()->Value());
- test->WakeUpInterruptor();
- }
-
- static void ShouldContinueCallback(
- const v8::FunctionCallbackInfo<Value>& info) {
- RequestInterruptTestBase* test =
- reinterpret_cast<RequestInterruptTestBase*>(
- info.Data().As<v8::External>()->Value());
- info.GetReturnValue().Set(test->should_continue());
- }
-};
-
-
-THREADED_TEST(RequestInterruptTestWithFunctionCall) {
- RequestInterruptTestWithFunctionCall().RunTest();
-}
-
-
-THREADED_TEST(RequestInterruptTestWithMethodCall) {
- RequestInterruptTestWithMethodCall().RunTest();
-}
-
-
-THREADED_TEST(RequestInterruptTestWithAccessor) {
- RequestInterruptTestWithAccessor().RunTest();
-}
-
-
-THREADED_TEST(RequestInterruptTestWithNativeAccessor) {
- RequestInterruptTestWithNativeAccessor().RunTest();
-}
-
-
-THREADED_TEST(RequestInterruptTestWithMethodCallAndInterceptor) {
- RequestInterruptTestWithMethodCallAndInterceptor().RunTest();
-}
-
-
-THREADED_TEST(RequestInterruptTestWithMathAbs) {
- RequestInterruptTestWithMathAbs().RunTest();
-}
+#endif // V8_OS_POSIX
static Local<Value> function_new_expected_env;
« no previous file with comments | « src/hydrogen-sce.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698