Bug 1454923: Add debugging support for anyref return values in wasm; r=lth

--HG--
extra : rebase_source : 7da83800e74d72ad1f0ef312f50a4b2649a52c65
extra : amend_source : 0eae3689ff025bb43184e662f27aac7fefddeaa7
This commit is contained in:
Benjamin Bouvier 2018-04-18 14:34:20 +02:00
Родитель 76fe94ac99
Коммит a3f49c13ba
2 изменённых файлов: 12 добавлений и 0 удалений

Просмотреть файл

@ -150,6 +150,12 @@ ref = exports.nested(baguette, 0);
assertEq(ref, baguette);
assertEq(ref.calories, baguette.calories);
if (wasmDebuggingIsSupported()) {
let g = newGlobal();
let dbg = new Debugger(g);
g.eval(`o = new WebAssembly.Instance(new WebAssembly.Module(wasmTextToBinary('(module (func (result anyref) (param anyref) get_local 0) (export "" 0))')));`);
}
// More interesting use cases about control flow joins.
function assertJoin(body) {

Просмотреть файл

@ -3429,6 +3429,9 @@ class BaseCompiler final : public BaseCompilerInterface
case ExprType::F32:
masm.storeFloat32(RegF32(ReturnFloat32Reg), resultsAddress);
break;
case ExprType::AnyRef:
masm.storePtr(RegPtr(ReturnReg), resultsAddress);
break;
default:
MOZ_CRASH("Function return type");
}
@ -3453,6 +3456,9 @@ class BaseCompiler final : public BaseCompilerInterface
case ExprType::F32:
masm.loadFloat32(resultsAddress, RegF32(ReturnFloat32Reg));
break;
case ExprType::AnyRef:
masm.loadPtr(resultsAddress, RegPtr(ReturnReg));
break;
default:
MOZ_CRASH("Function return type");
}