Title: [214935] trunk/Source/_javascript_Core
Revision
214935
Author
[email protected]
Date
2017-04-05 00:53:43 -0700 (Wed, 05 Apr 2017)

Log Message

WebAssembly: several tests added in r214504 crash when building with GCC
https://bugs.webkit.org/show_bug.cgi?id=170390

Reviewed by Saam Barati.

The pattern foo->bar([f = WTFMove(foo)]{}); crashes when building with GCC, I assume the move happens before the
foo is used to invoke the function.

* wasm/js/WebAssemblyPrototype.cpp:
(JSC::webAssemblyCompileFunc): Use p.vm() instead of plan->vm(), because plan is moved by the lambda.
(JSC::instantiate): Ditto.
(JSC::compileAndInstantiate): Ditto.

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (214934 => 214935)


--- trunk/Source/_javascript_Core/ChangeLog	2017-04-05 07:41:53 UTC (rev 214934)
+++ trunk/Source/_javascript_Core/ChangeLog	2017-04-05 07:53:43 UTC (rev 214935)
@@ -1,3 +1,18 @@
+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
+
+        Reviewed by Saam Barati.
+
+        The pattern foo->bar([f = WTFMove(foo)]{}); crashes when building with GCC, I assume the move happens before the
+        foo is used to invoke the function.
+
+        * wasm/js/WebAssemblyPrototype.cpp:
+        (JSC::webAssemblyCompileFunc): Use p.vm() instead of plan->vm(), because plan is moved by the lambda.
+        (JSC::instantiate): Ditto.
+        (JSC::compileAndInstantiate): Ditto.
+
 2017-03-16  Yusuke Suzuki  <[email protected]>
 
         [JSC] Generate TemplateObjects at linking time

Modified: trunk/Source/_javascript_Core/wasm/js/WebAssemblyPrototype.cpp (214934 => 214935)


--- trunk/Source/_javascript_Core/wasm/js/WebAssemblyPrototype.cpp	2017-04-05 07:41:53 UTC (rev 214934)
+++ trunk/Source/_javascript_Core/wasm/js/WebAssemblyPrototype.cpp	2017-04-05 07:53:43 UTC (rev 214935)
@@ -92,7 +92,7 @@
 
     Ref<Plan> plan = adoptRef(*new Plan(vm, WTFMove(source), Plan::Validation, [promise, globalObject] (Plan& p) mutable {
         RefPtr<Plan> plan = makeRef(p);
-        plan->vm().promiseDeferredTimer->scheduleWorkSoon(promise, [promise, globalObject, plan = WTFMove(plan)] () mutable {
+        p.vm().promiseDeferredTimer->scheduleWorkSoon(promise, [promise, globalObject, plan = WTFMove(plan)] () mutable {
             VM& vm = plan->vm();
             auto scope = DECLARE_CATCH_SCOPE(vm);
             ExecState* exec = globalObject->globalExec();
@@ -169,7 +169,7 @@
     // https://bugs.webkit.org/show_bug.cgi?id=170205
     Ref<Plan> plan = adoptRef(*new Plan(vm, makeRef(const_cast<Wasm::ModuleInformation&>(module->moduleInformation())), Plan::FullCompile, [promise, instance, module, entries] (Plan& p) {
         RefPtr<Plan> plan = makeRef(p);
-        plan->vm().promiseDeferredTimer->scheduleWorkSoon(promise, [promise, instance, module, entries, plan = WTFMove(plan)] () {
+        p.vm().promiseDeferredTimer->scheduleWorkSoon(promise, [promise, instance, module, entries, plan = WTFMove(plan)] () {
             VM& vm = plan->vm();
             ExecState* exec = instance->globalObject()->globalExec();
             resolve(vm, exec, promise, instance, module, entries);
@@ -195,7 +195,7 @@
 
     Ref<Plan> plan = adoptRef(*new Plan(vm, WTFMove(source), Plan::Validation, [promise, importObject, globalObject] (Plan& p) mutable {
         RefPtr<Plan> plan = makeRef(p);
-        plan->vm().promiseDeferredTimer->scheduleWorkSoon(promise, [promise, importObject, globalObject, plan = WTFMove(plan)] () mutable {
+        p.vm().promiseDeferredTimer->scheduleWorkSoon(promise, [promise, importObject, globalObject, plan = WTFMove(plan)] () mutable {
             VM& vm = plan->vm();
             auto scope = DECLARE_CATCH_SCOPE(vm);
             ExecState* exec = globalObject->globalExec();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to