Use mutex in PostponeInterruptScope.

To avoid race with e.g. StackGuard::RequestInstallCode called from another
thread when both access postpone_interrupts_nesting_.

R=mvstanton@chromium.org
BUG=290964
LOG=N

Review URL: https://codereview.chromium.org/138833006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19099 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
yangguo@chromium.org 2014-02-05 11:28:55 +00:00
parent 7dc05b57fd
commit 736e0a05f8

View File

@ -1491,18 +1491,21 @@ class StackLimitCheck BASE_EMBEDDED {
class PostponeInterruptsScope BASE_EMBEDDED {
public:
explicit PostponeInterruptsScope(Isolate* isolate)
: stack_guard_(isolate->stack_guard()) {
: stack_guard_(isolate->stack_guard()), isolate_(isolate) {
ExecutionAccess access(isolate_);
stack_guard_->thread_local_.postpone_interrupts_nesting_++;
stack_guard_->DisableInterrupts();
}
~PostponeInterruptsScope() {
ExecutionAccess access(isolate_);
if (--stack_guard_->thread_local_.postpone_interrupts_nesting_ == 0) {
stack_guard_->EnableInterrupts();
}
}
private:
StackGuard* stack_guard_;
Isolate* isolate_;
};