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:
parent
7dc05b57fd
commit
736e0a05f8
@ -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_;
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user