From ddfcf705d48a5508302785280defa9622e88ffd9 Mon Sep 17 00:00:00 2001 From: Shao Cheng Date: Fri, 14 Dec 2018 16:16:37 +0800 Subject: [PATCH] Eliminate Capability parameter in all exported RTS API #44 --- asterius/rts/rts.js | 12 ++---------- asterius/src/Asterius/Builtins.hs | 14 +++++++++++--- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/asterius/rts/rts.js b/asterius/rts/rts.js index a30dee90d2..74eebb4663 100644 --- a/asterius/rts/rts.js +++ b/asterius/rts/rts.js @@ -289,10 +289,8 @@ __asterius_bigint_decode(i0) ** __asterius_bigint_decode(i1) ), integerToString: (_i, _s) => { - const bi_str = __asterius_bigint_decode(_i).toString(), - cap = req.staticsSymbolMap.MainCapability; + const bi_str = __asterius_bigint_decode(_i).toString(); const rp = __asterius_wasm_instance.exports.allocate( - cap, bi_str.length * 5 ); const buf = new BigUint64Array( @@ -454,10 +452,8 @@ return 0; }, __asterius_fromJSArrayBuffer: _i => { - const buf = __asterius_jsffi_JSRefs[_i], - cap = req.staticsSymbolMap.MainCapability; + const buf = __asterius_jsffi_JSRefs[_i]; let p = __asterius_wasm_instance.exports.allocate( - cap, Math.ceil((buf.byteLength + 31) / 8) ); p = Math.ceil(p / 16) * 16; @@ -487,10 +483,8 @@ __asterius_fromJSString: _i => { const s = __asterius_jsffi_JSRefs[_i]; if (s) { - const cap = req.staticsSymbolMap.MainCapability; const s_utf32 = __asterius_encodeUTF32(s); const rp = __asterius_wasm_instance.exports.allocate( - cap, s_utf32.length * 5 ); const buf = new BigUint64Array( @@ -519,9 +513,7 @@ __asterius_fromJSArray: _i => { const arr = __asterius_jsffi_JSRefs[_i]; if (arr.length) { - const cap = req.staticsSymbolMap.MainCapability; const rp = __asterius_wasm_instance.exports.allocate( - cap, arr.length * 5 ); const buf = new BigUint64Array( diff --git a/asterius/src/Asterius/Builtins.hs b/asterius/src/Asterius/Builtins.hs index 1453110ba8..ece039abcd 100644 --- a/asterius/src/Asterius/Builtins.hs +++ b/asterius/src/Asterius/Builtins.hs @@ -102,8 +102,7 @@ rtsAsteriusModule opts = , ("createIOThread", createIOThreadFunction opts) , ("createStrictIOThread", createStrictIOThreadFunction opts) , ("allocate", allocateFunction opts) - , ( "allocate_wrapper" - , generateWrapperFunction "allocate" $ allocateFunction opts) + , ("allocate_wrapper", allocateWrapperFunction opts) , ("allocateMightFail", allocateProxyFunction opts) , ("allocatePinned", allocateProxyFunction opts) , ("allocGroup", allocGroupFunction opts) @@ -637,7 +636,7 @@ generateWrapperFunction func_sym AsteriusFunction {functionType = FunctionType { [I64] -> ([F64], Unary ConvertSInt64ToFloat64) _ -> (returnTypes, id) -mainFunction, hsInitFunction, rtsApplyFunction, rtsEvalFunction, rtsEvalIOFunction, rtsEvalLazyIOFunction, rtsEvalStableIOFunction, rtsGetSchedStatusFunction, rtsCheckSchedStatusFunction, scheduleWaitThreadFunction, createThreadFunction, createGenThreadFunction, createIOThreadFunction, createStrictIOThreadFunction, allocateFunction, allocateProxyFunction, allocGroupFunction, newCAFFunction, stgReturnFunction, getStablePtrWrapperFunction, deRefStablePtrWrapperFunction, freeStablePtrWrapperFunction, rtsMkBoolFunction, rtsMkDoubleFunction, rtsMkCharFunction, rtsMkIntFunction, rtsMkWordFunction, rtsMkPtrFunction, rtsMkStablePtrFunction, rtsGetBoolFunction, rtsGetDoubleFunction, rtsGetCharFunction, rtsGetIntFunction, loadI64Function, printI64Function, printF32Function, printF64Function, strlenFunction, memchrFunction, memcpyFunction, memsetFunction, memcmpFunction, fromJSArrayBufferFunction, toJSArrayBufferFunction, fromJSStringFunction, fromJSArrayFunction :: +mainFunction, hsInitFunction, rtsApplyFunction, rtsEvalFunction, rtsEvalIOFunction, rtsEvalLazyIOFunction, rtsEvalStableIOFunction, rtsGetSchedStatusFunction, rtsCheckSchedStatusFunction, scheduleWaitThreadFunction, createThreadFunction, createGenThreadFunction, createIOThreadFunction, createStrictIOThreadFunction, allocateFunction, allocateWrapperFunction, allocateProxyFunction, allocGroupFunction, newCAFFunction, stgReturnFunction, getStablePtrWrapperFunction, deRefStablePtrWrapperFunction, freeStablePtrWrapperFunction, rtsMkBoolFunction, rtsMkDoubleFunction, rtsMkCharFunction, rtsMkIntFunction, rtsMkWordFunction, rtsMkPtrFunction, rtsMkStablePtrFunction, rtsGetBoolFunction, rtsGetDoubleFunction, rtsGetCharFunction, rtsGetIntFunction, loadI64Function, printI64Function, printF32Function, printF64Function, strlenFunction, memchrFunction, memcpyFunction, memsetFunction, memcmpFunction, fromJSArrayBufferFunction, toJSArrayBufferFunction, fromJSStringFunction, fromJSArrayFunction :: BuiltinsOptions -> AsteriusFunction mainFunction BuiltinsOptions {..} = runEDSL [] $ do @@ -941,6 +940,15 @@ allocateFunction BuiltinsOptions {..} = storeI64 bd_object_pool offset_bdescr_free new_free emit old_free +allocateWrapperFunction _ = + runEDSL [F64] $ do + setReturnTypes [F64] + n <- param F64 + r <- + Unary ConvertUInt64ToFloat64 <$> + call' "allocate" [mainCapability, Unary TruncUFloat64ToInt64 n] I64 + emit r + allocateProxyFunction _ = runEDSL [I64] $ do setReturnTypes [I64]