OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "api.h" | 5 #include "api.h" |
6 | 6 |
7 #include <string.h> // For memcpy, strlen. | 7 #include <string.h> // For memcpy, strlen. |
8 #include <cmath> // For isnan. | 8 #include <cmath> // For isnan. |
9 #include "../include/v8-debug.h" | 9 #include "../include/v8-debug.h" |
10 #include "../include/v8-profiler.h" | 10 #include "../include/v8-profiler.h" |
(...skipping 6446 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6457 isolate->EnqueueMicrotask(microtask); | 6457 isolate->EnqueueMicrotask(microtask); |
6458 } | 6458 } |
6459 | 6459 |
6460 | 6460 |
6461 void V8::SetAutorunMicrotasks(Isolate* isolate, bool autorun) { | 6461 void V8::SetAutorunMicrotasks(Isolate* isolate, bool autorun) { |
6462 isolate->SetAutorunMicrotasks(autorun); | 6462 isolate->SetAutorunMicrotasks(autorun); |
6463 } | 6463 } |
6464 | 6464 |
6465 | 6465 |
6466 void V8::TerminateExecution(Isolate* isolate) { | 6466 void V8::TerminateExecution(Isolate* isolate) { |
6467 reinterpret_cast<i::Isolate*>(isolate)->stack_guard()->TerminateExecution(); | 6467 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); |
| 6468 i_isolate->stack_guard()->RequestTerminateExecution(); |
6468 } | 6469 } |
6469 | 6470 |
6470 | 6471 |
6471 bool V8::IsExecutionTerminating(Isolate* isolate) { | 6472 bool V8::IsExecutionTerminating(Isolate* isolate) { |
6472 i::Isolate* i_isolate = isolate != NULL ? | 6473 i::Isolate* i_isolate = isolate != NULL ? |
6473 reinterpret_cast<i::Isolate*>(isolate) : i::Isolate::Current(); | 6474 reinterpret_cast<i::Isolate*>(isolate) : i::Isolate::Current(); |
6474 return IsExecutionTerminatingCheck(i_isolate); | 6475 return IsExecutionTerminatingCheck(i_isolate); |
6475 } | 6476 } |
6476 | 6477 |
6477 | 6478 |
6478 void V8::CancelTerminateExecution(Isolate* isolate) { | 6479 void V8::CancelTerminateExecution(Isolate* isolate) { |
6479 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); | 6480 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); |
6480 i_isolate->stack_guard()->CancelTerminateExecution(); | 6481 i_isolate->stack_guard()->ClearTerminateExecution(); |
| 6482 i_isolate->CancelTerminateExecution(); |
6481 } | 6483 } |
6482 | 6484 |
6483 | 6485 |
6484 void Isolate::RequestInterrupt(InterruptCallback callback, void* data) { | 6486 void Isolate::RequestInterrupt(InterruptCallback callback, void* data) { |
6485 reinterpret_cast<i::Isolate*>(this)->stack_guard()->RequestInterrupt( | 6487 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(this); |
6486 callback, data); | 6488 i_isolate->set_api_interrupt_callback(callback); |
| 6489 i_isolate->set_api_interrupt_callback_data(data); |
| 6490 i_isolate->stack_guard()->RequestApiInterrupt(); |
6487 } | 6491 } |
6488 | 6492 |
6489 | 6493 |
6490 void Isolate::ClearInterrupt() { | 6494 void Isolate::ClearInterrupt() { |
6491 reinterpret_cast<i::Isolate*>(this)->stack_guard()->ClearInterrupt(); | 6495 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(this); |
| 6496 i_isolate->stack_guard()->ClearApiInterrupt(); |
| 6497 i_isolate->set_api_interrupt_callback(NULL); |
| 6498 i_isolate->set_api_interrupt_callback_data(NULL); |
6492 } | 6499 } |
6493 | 6500 |
6494 | 6501 |
6495 void Isolate::RequestGarbageCollectionForTesting(GarbageCollectionType type) { | 6502 void Isolate::RequestGarbageCollectionForTesting(GarbageCollectionType type) { |
6496 CHECK(i::FLAG_expose_gc); | 6503 CHECK(i::FLAG_expose_gc); |
6497 if (type == kMinorGarbageCollection) { | 6504 if (type == kMinorGarbageCollection) { |
6498 reinterpret_cast<i::Isolate*>(this)->heap()->CollectGarbage( | 6505 reinterpret_cast<i::Isolate*>(this)->heap()->CollectGarbage( |
6499 i::NEW_SPACE, "Isolate::RequestGarbageCollection", | 6506 i::NEW_SPACE, "Isolate::RequestGarbageCollection", |
6500 kGCCallbackFlagForced); | 6507 kGCCallbackFlagForced); |
6501 } else { | 6508 } else { |
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6803 i::Isolate* isolate = i::Isolate::Current(); | 6810 i::Isolate* isolate = i::Isolate::Current(); |
6804 ON_BAILOUT(isolate, "v8::Debug::SetDebugEventListener()", return false); | 6811 ON_BAILOUT(isolate, "v8::Debug::SetDebugEventListener()", return false); |
6805 ENTER_V8(isolate); | 6812 ENTER_V8(isolate); |
6806 isolate->debugger()->SetEventListener(Utils::OpenHandle(*that), | 6813 isolate->debugger()->SetEventListener(Utils::OpenHandle(*that), |
6807 Utils::OpenHandle(*data, true)); | 6814 Utils::OpenHandle(*data, true)); |
6808 return true; | 6815 return true; |
6809 } | 6816 } |
6810 | 6817 |
6811 | 6818 |
6812 void Debug::DebugBreak(Isolate* isolate) { | 6819 void Debug::DebugBreak(Isolate* isolate) { |
6813 reinterpret_cast<i::Isolate*>(isolate)->stack_guard()->DebugBreak(); | 6820 reinterpret_cast<i::Isolate*>(isolate)->stack_guard()->RequestDebugBreak(); |
6814 } | 6821 } |
6815 | 6822 |
6816 | 6823 |
6817 void Debug::CancelDebugBreak(Isolate* isolate) { | 6824 void Debug::CancelDebugBreak(Isolate* isolate) { |
6818 i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate); | 6825 i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate); |
6819 internal_isolate->stack_guard()->Continue(i::DEBUGBREAK); | 6826 internal_isolate->stack_guard()->ClearDebugBreak(); |
6820 } | 6827 } |
6821 | 6828 |
6822 | 6829 |
6823 void Debug::DebugBreakForCommand(Isolate* isolate, ClientData* data) { | 6830 void Debug::DebugBreakForCommand(Isolate* isolate, ClientData* data) { |
6824 i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate); | 6831 i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate); |
6825 internal_isolate->debugger()->EnqueueDebugCommand(data); | 6832 internal_isolate->debugger()->EnqueueDebugCommand(data); |
6826 } | 6833 } |
6827 | 6834 |
6828 | 6835 |
6829 void Debug::SetMessageHandler2(v8::Debug::MessageHandler2 handler) { | 6836 void Debug::SetMessageHandler2(v8::Debug::MessageHandler2 handler) { |
(...skipping 758 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7588 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); | 7595 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); |
7589 Address callback_address = | 7596 Address callback_address = |
7590 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); | 7597 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); |
7591 VMState<EXTERNAL> state(isolate); | 7598 VMState<EXTERNAL> state(isolate); |
7592 ExternalCallbackScope call_scope(isolate, callback_address); | 7599 ExternalCallbackScope call_scope(isolate, callback_address); |
7593 callback(info); | 7600 callback(info); |
7594 } | 7601 } |
7595 | 7602 |
7596 | 7603 |
7597 } } // namespace v8::internal | 7604 } } // namespace v8::internal |
OLD | NEW |