Title: [214936] trunk/Source/_javascript_Core
- Revision
- 214936
- Author
- [email protected]
- Date
- 2017-04-05 00:58:02 -0700 (Wed, 05 Apr 2017)
Log Message
Implement PromiseDeferredTimer for non CF based ports
https://bugs.webkit.org/show_bug.cgi?id=170391
Reviewed by Yusuke Suzuki.
RunLoop handling is only implemented for CF causing several wasm tests to fail for other ports.
* jsc.cpp:
(runJSC): Remove CF ifdefs.
* runtime/PromiseDeferredTimer.cpp:
(JSC::PromiseDeferredTimer::doWork): Add non CF implementation using WTF RunLoop.
(JSC::PromiseDeferredTimer::runRunLoop): Ditto.
* runtime/PromiseDeferredTimer.h:
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (214935 => 214936)
--- trunk/Source/_javascript_Core/ChangeLog 2017-04-05 07:53:43 UTC (rev 214935)
+++ trunk/Source/_javascript_Core/ChangeLog 2017-04-05 07:58:02 UTC (rev 214936)
@@ -1,5 +1,21 @@
2017-04-05 Carlos Garcia Campos <[email protected]>
+ Implement PromiseDeferredTimer for non CF based ports
+ https://bugs.webkit.org/show_bug.cgi?id=170391
+
+ Reviewed by Yusuke Suzuki.
+
+ RunLoop handling is only implemented for CF causing several wasm tests to fail for other ports.
+
+ * jsc.cpp:
+ (runJSC): Remove CF ifdefs.
+ * runtime/PromiseDeferredTimer.cpp:
+ (JSC::PromiseDeferredTimer::doWork): Add non CF implementation using WTF RunLoop.
+ (JSC::PromiseDeferredTimer::runRunLoop): Ditto.
+ * runtime/PromiseDeferredTimer.h:
+
+2017-04-05 Carlos Garcia Campos <[email protected]>
+
WebAssembly: several tests added in r214504 crash when building with GCC
https://bugs.webkit.org/show_bug.cgi?id=170390
Modified: trunk/Source/_javascript_Core/jsc.cpp (214935 => 214936)
--- trunk/Source/_javascript_Core/jsc.cpp 2017-04-05 07:53:43 UTC (rev 214935)
+++ trunk/Source/_javascript_Core/jsc.cpp 2017-04-05 07:58:02 UTC (rev 214936)
@@ -3812,9 +3812,7 @@
vm.drainMicrotasks();
}
-#if USE(CF)
vm.promiseDeferredTimer->runRunLoop();
-#endif
result = success && (asyncTestExpectedPasses == asyncTestPasses) ? 0 : 3;
Modified: trunk/Source/_javascript_Core/runtime/PromiseDeferredTimer.cpp (214935 => 214936)
--- trunk/Source/_javascript_Core/runtime/PromiseDeferredTimer.cpp 2017-04-05 07:53:43 UTC (rev 214935)
+++ trunk/Source/_javascript_Core/runtime/PromiseDeferredTimer.cpp 2017-04-05 07:58:02 UTC (rev 214936)
@@ -29,8 +29,8 @@
#include "JSPromiseDeferred.h"
#include "StrongInlines.h"
#include "VM.h"
-
#include <wtf/Locker.h>
+#include <wtf/RunLoop.h>
namespace JSC {
@@ -68,22 +68,28 @@
}
}
+ if (m_pendingPromises.isEmpty() && m_shouldStopRunLoopWhenAllPromisesFinish)
#if USE(CF)
- if (m_pendingPromises.isEmpty() && m_shouldStopRunLoopWhenAllPromisesFinish)
CFRunLoopStop(m_runLoop.get());
+#else
+ RunLoop::current().stop();
#endif
}
-#if USE(CF)
void PromiseDeferredTimer::runRunLoop()
{
ASSERT(!m_vm->currentThreadIsHoldingAPILock());
+#if USE(CF)
ASSERT(CFRunLoopGetCurrent() == m_runLoop.get());
+#endif
m_shouldStopRunLoopWhenAllPromisesFinish = true;
if (m_pendingPromises.size())
+#if USE(CF)
CFRunLoopRun();
+#else
+ RunLoop::run();
+#endif
}
-#endif
void PromiseDeferredTimer::addPendingPromise(JSPromiseDeferred* ticket, Vector<Strong<JSCell>>&& dependencies)
{
Modified: trunk/Source/_javascript_Core/runtime/PromiseDeferredTimer.h (214935 => 214936)
--- trunk/Source/_javascript_Core/runtime/PromiseDeferredTimer.h 2017-04-05 07:53:43 UTC (rev 214935)
+++ trunk/Source/_javascript_Core/runtime/PromiseDeferredTimer.h 2017-04-05 07:58:02 UTC (rev 214936)
@@ -61,17 +61,14 @@
void scheduleBlockedTask(JSPromiseDeferred*, Task&&);
void stopRunningTasks() { m_runTasks = false; }
-#if USE(CF)
+
JS_EXPORT_PRIVATE void runRunLoop();
-#endif
private:
HashMap<JSPromiseDeferred*, Vector<Strong<JSCell>>> m_pendingPromises;
Lock m_taskLock;
bool m_runTasks { true };
-#if USE(CF)
bool m_shouldStopRunLoopWhenAllPromisesFinish { false };
-#endif
Vector<std::tuple<JSPromiseDeferred*, Task>> m_tasks;
HashMap<JSPromiseDeferred*, Vector<Task>> m_blockedTasks;
};
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes