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();