We need to destroy worker threads in jsc.cpp
authorsbarati@apple.com <sbarati@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 18 May 2017 23:47:23 +0000 (23:47 +0000)
committersbarati@apple.com <sbarati@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 18 May 2017 23:47:23 +0000 (23:47 +0000)
commit7385f1564aebac99cb4a4202188b12404f079dd2
tree5c66560810c542b4d9448dbd3c172cd101a51cf5
parente7d141adcfec354d79669f835379fd6a27df48d9
We need to destroy worker threads in jsc.cpp
https://bugs.webkit.org/show_bug.cgi?id=170751
<rdar://problem/31800412>

Reviewed by Filip Pizlo.

This patch fixes a bug where a $ agent worker would still
have compilation threads running after the thread the worker
was created on dies. This manifested itself inside DFG AI where
we would notice a string constant is atomic, then the worker
thread would die, destroying its atomic string table, then
we'd notice the same string is no longer atomic, and we'd crash
because we'd fail to see the same speculated type for the same
JSValue.

This patch makes it so that $ agent workers destroy their VM when
they're done executing. Before a VM gets destroyed, it ensures that
all its compilation threads finish.

* jsc.cpp:
(functionDollarAgentStart):
(runJSC):
(jscmain):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@217077 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/jsc.cpp