Add a JSRunLoopTimer registry in VM.
authormark.lam@apple.com <mark.lam@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 16 Jun 2017 04:38:35 +0000 (04:38 +0000)
committermark.lam@apple.com <mark.lam@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 16 Jun 2017 04:38:35 +0000 (04:38 +0000)
commit11850a07379497e40ccb1fc12ebfed2ead00d150
treee0914e127a79db828a9f7cdd804f0d120ebc7ab0
parent46a4faf660e7aa75e664799b1056e906a99914f2
Add a JSRunLoopTimer registry in VM.
https://bugs.webkit.org/show_bug.cgi?id=173429
<rdar://problem/31287961>

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

This way, we can be sure we've got every JSRunLoopTimer instance covered if we
need to change their run loop (e.g. when setting to the WebThread's run loop).

* heap/Heap.cpp:
(JSC::Heap::Heap):
(JSC::Heap::setRunLoop): Deleted.
* heap/Heap.h:
(JSC::Heap::runLoop): Deleted.
* runtime/JSRunLoopTimer.cpp:
(JSC::JSRunLoopTimer::JSRunLoopTimer):
(JSC::JSRunLoopTimer::setRunLoop):
(JSC::JSRunLoopTimer::~JSRunLoopTimer):
* runtime/VM.cpp:
(JSC::VM::VM):
(JSC::VM::registerRunLoopTimer):
(JSC::VM::unregisterRunLoopTimer):
(JSC::VM::setRunLoop):
* runtime/VM.h:
(JSC::VM::runLoop):

Source/WebCore:

No new tests needed because:
1. it's already covered: it was also originally discovered by our API tests while
   running on the iOS simulator. The test was intermittently failing on a debug
   build.
2. the issue is racy (it depends on a JSRunLoopTimer firing at the right time).
   Hence, it's non trivial to write a better test than the one we already have.

* bindings/js/CommonVM.cpp:
(WebCore::commonVMSlow):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@218381 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/heap/Heap.cpp
Source/JavaScriptCore/heap/Heap.h
Source/JavaScriptCore/runtime/JSRunLoopTimer.cpp
Source/JavaScriptCore/runtime/VM.cpp
Source/JavaScriptCore/runtime/VM.h
Source/WebCore/ChangeLog
Source/WebCore/bindings/js/CommonVM.cpp