Profiler experiments: Honor postponing of interrupts in HandleStackGuardInterrupt

Review URL: https://chromiumcodereview.appspot.com/9620009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10959 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 7e8c7fa3
......@@ -376,6 +376,12 @@ void StackGuard::DisableInterrupts() {
}
bool StackGuard::ShouldPostponeInterrupts() {
ExecutionAccess access(isolate_);
return should_postpone_interrupts(access);
}
bool StackGuard::IsInterrupted() {
ExecutionAccess access(isolate_);
return (thread_local_.interrupt_flags_ & INTERRUPT) != 0;
......@@ -874,6 +880,9 @@ void Execution::ProcessDebugMessages(bool debug_command_only) {
MaybeObject* Execution::HandleStackGuardInterrupt(Isolate* isolate) {
StackGuard* stack_guard = isolate->stack_guard();
if (stack_guard->ShouldPostponeInterrupts()) {
return isolate->heap()->undefined_value();
}
if (stack_guard->IsGCRequest()) {
isolate->heap()->CollectAllGarbage(false, "StackGuard GC request");
......
......@@ -226,6 +226,7 @@ class StackGuard {
Address address_of_real_jslimit() {
return reinterpret_cast<Address>(&thread_local_.real_jslimit_);
}
bool ShouldPostponeInterrupts();
private:
StackGuard();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment