Modified: trunk/Source/WebCore/ChangeLog (164678 => 164679)
--- trunk/Source/WebCore/ChangeLog 2014-02-25 23:28:36 UTC (rev 164678)
+++ trunk/Source/WebCore/ChangeLog 2014-02-25 23:53:41 UTC (rev 164679)
@@ -1,3 +1,20 @@
+2014-02-25 Mark Lam <[email protected]>
+
+ JSDOMPromise methods should acquire VM lock before calling into JS.
+ <https://webkit.org/b/129341>
+
+ Reviewed by Geoffrey Garen.
+
+ No new tests.
+
+ * bindings/js/JSDOMPromise.h:
+ (WebCore::DeferredWrapper::resolve):
+ (WebCore::DeferredWrapper::reject):
+ (WebCore::DeferredWrapper::resolve<String>):
+ (WebCore::DeferredWrapper::resolve<bool>):
+ (WebCore::char>>):
+ (WebCore::DeferredWrapper::reject<String>):
+
2014-02-25 Anders Carlsson <[email protected]>
Simplify visited link style invalidation
Modified: trunk/Source/WebCore/bindings/js/JSDOMPromise.h (164678 => 164679)
--- trunk/Source/WebCore/bindings/js/JSDOMPromise.h 2014-02-25 23:28:36 UTC (rev 164678)
+++ trunk/Source/WebCore/bindings/js/JSDOMPromise.h 2014-02-25 23:53:41 UTC (rev 164679)
@@ -29,6 +29,7 @@
#include "JSCryptoKey.h"
#include "JSCryptoKeyPair.h"
#include "JSDOMBinding.h"
+#include <_javascript_Core/APIShims.h>
#include <heap/StrongInlines.h>
#include <runtime/JSPromiseDeferred.h>
@@ -58,6 +59,7 @@
inline void DeferredWrapper::resolve(const ResolveResultType& result)
{
JSC::ExecState* exec = m_globalObject->globalExec();
+ JSC::APIEntryShim entryShim(exec);
resolve(exec, toJS(exec, m_globalObject.get(), result));
}
@@ -65,6 +67,7 @@
inline void DeferredWrapper::reject(const RejectResultType& result)
{
JSC::ExecState* exec = m_globalObject->globalExec();
+ JSC::APIEntryShim entryShim(exec);
reject(exec, toJS(exec, m_globalObject.get(), result));
}
@@ -72,6 +75,7 @@
inline void DeferredWrapper::reject(const std::nullptr_t&)
{
JSC::ExecState* exec = m_globalObject->globalExec();
+ JSC::APIEntryShim entryShim(exec);
reject(exec, JSC::jsNull());
}
@@ -79,6 +83,7 @@
inline void DeferredWrapper::resolve<String>(const String& result)
{
JSC::ExecState* exec = m_globalObject->globalExec();
+ JSC::APIEntryShim entryShim(exec);
resolve(exec, jsString(exec, result));
}
@@ -86,6 +91,7 @@
inline void DeferredWrapper::resolve<bool>(const bool& result)
{
JSC::ExecState* exec = m_globalObject->globalExec();
+ JSC::APIEntryShim entryShim(exec);
resolve(exec, JSC::jsBoolean(result));
}
@@ -93,6 +99,7 @@
inline void DeferredWrapper::resolve<Vector<unsigned char>>(const Vector<unsigned char>& result)
{
JSC::ExecState* exec = m_globalObject->globalExec();
+ JSC::APIEntryShim entryShim(exec);
RefPtr<ArrayBuffer> buffer = ArrayBuffer::create(result.data(), result.size());
resolve(exec, toJS(exec, m_globalObject.get(), buffer.get()));
}
@@ -101,6 +108,7 @@
inline void DeferredWrapper::reject<String>(const String& result)
{
JSC::ExecState* exec = m_globalObject->globalExec();
+ JSC::APIEntryShim entryShim(exec);
reject(exec, jsString(exec, result));
}