diff options
author | stephan <stephan@noemail.net> | 2022-12-09 05:47:42 +0000 |
---|---|---|
committer | stephan <stephan@noemail.net> | 2022-12-09 05:47:42 +0000 |
commit | 464c80d4c22d03840c35b7e3748183b361257a9f (patch) | |
tree | 24c2ff5681ca5720a8deb405f1c425bc245e964e /ext/wasm/tester1.c-pp.js | |
parent | 75f54dba501a5f5d9709956d67db22b29d6ce802 (diff) | |
download | sqlite-464c80d4c22d03840c35b7e3748183b361257a9f.tar.gz sqlite-464c80d4c22d03840c35b7e3748183b361257a9f.zip |
Export sqlite3_status() and sqlite3_stmt_status() to wasm. Expand the arg/return semantics of wasm.get/setPtrValue() and get/setMemValue() to simplify handling of multiple pointers.
FossilOrigin-Name: e144fd5c88fa4151429a2fef3daf389588402e158267f0afa0dfd142527d76b9
Diffstat (limited to 'ext/wasm/tester1.c-pp.js')
-rw-r--r-- | ext/wasm/tester1.c-pp.js | 48 |
1 files changed, 38 insertions, 10 deletions
diff --git a/ext/wasm/tester1.c-pp.js b/ext/wasm/tester1.c-pp.js index b1c4243d3..ddf766427 100644 --- a/ext/wasm/tester1.c-pp.js +++ b/ext/wasm/tester1.c-pp.js @@ -707,10 +707,10 @@ self.sqlite3InitModule = sqlite3InitModule; T.assert(12n===rc); w.scopedAllocCall(function(){ - let pI1 = w.scopedAlloc(8), pI2 = pI1+4; - w.setMemValue(pI1, 0,'*')(pI2, 0, '*'); - let f = w.xWrap('sqlite3_wasm_test_int64_minmax',undefined,['i64*','i64*']); - let r1 = w.getMemValue(pI1, 'i64'), r2 = w.getMemValue(pI2, 'i64'); + const pI1 = w.scopedAlloc(8), pI2 = pI1+4; + w.setPtrValue([pI1, pI2], 0); + const f = w.xWrap('sqlite3_wasm_test_int64_minmax',undefined,['i64*','i64*']); + const [r1, r2] = w.getMemValue([pI1, pI2], 'i64'); T.assert(!Number.isSafeInteger(r1)).assert(!Number.isSafeInteger(r2)); }); } @@ -1033,7 +1033,7 @@ self.sqlite3InitModule = sqlite3InitModule; } }; - T.assert(Number.isInteger(db.pointer)) + T.assert(wasm.isPtr(db.pointer)) .mustThrowMatching(()=>db.pointer=1, /read-only/) .assert(0===sqlite3.capi.sqlite3_extended_result_codes(db.pointer,1)) .assert('main'===db.dbName(0)) @@ -1078,7 +1078,28 @@ self.sqlite3InitModule = sqlite3InitModule; 0, 4096, 12); T.assert(0 === rc); } - }finally{ + wasm.setPtrValue([pCur, pHi], 0); + let [vCur, vHi] = wasm.getPtrValue(pCur, pHi); + T.assert(0===vCur).assert(0===vHi); + rc = capi.sqlite3_status(capi.SQLITE_STATUS_MEMORY_USED, + pCur, pHi, 0); + [vCur, vHi] = wasm.getPtrValue([pCur, pHi]); + T.assert(vCur!==0).assert(vHi!==0); + [vCur, vHi] = wasm.getMemValue([vCur, vHi], 'i32'); + T.assert(0 === rc).assert(vCur > 0).assert(vHi >= vCur); + if(wasm.bigIntEnabled){ + // Again in 64-bit. Recall that pCur and pHi are allocated + // large enough to account for this re-use. + wasm.setPtrValue([pCur, pHi], 0) + .setMemValue([vCur, vHi], 0, 'i64'); + rc = capi.sqlite3_status64(capi.SQLITE_STATUS_MEMORY_USED, + pCur, pHi, 0); + [vCur, vHi] = wasm.getPtrValue([pCur, pHi]); + T.assert(vCur!==0).assert(vHi!==0); + [vCur, vHi] = wasm.getMemValue([vCur, vHi], 'i64'); + T.assert(0 === rc).assert(vCur > 0).assert(vHi >= vCur); + } + }finally{ wasm.pstack.restore(stack); } }) @@ -1090,9 +1111,13 @@ self.sqlite3InitModule = sqlite3InitModule; ); //debug("statement =",st); try { - T.assert(Number.isInteger(st.pointer)) + T.assert(wasm.isPtr(st.pointer)) .mustThrowMatching(()=>st.pointer=1, /read-only/) .assert(1===this.db.openStatementCount()) + .assert( + capi.sqlite3_stmt_status( + st, capi.SQLITE_STMTSTATUS_RUN, 0 + ) === 0) .assert(!st._mayGet) .assert('a' === st.getColumnName(0)) .assert(1===st.columnCount) @@ -1118,7 +1143,11 @@ self.sqlite3InitModule = sqlite3InitModule; .assert(st._mayGet) .assert(false===st.step()) .assert(!st._mayGet) - ; + .assert( + capi.sqlite3_stmt_status( + st, capi.SQLITE_STMTSTATUS_RUN, 0 + ) > 0); + T.assert(0===capi.sqlite3_strglob("*.txt", "foo.txt")). assert(0!==capi.sqlite3_strglob("*.txt", "foo.xtx")). assert(0===capi.sqlite3_strlike("%.txt", "foo.txt", 0)). @@ -1681,8 +1710,7 @@ self.sqlite3InitModule = sqlite3InitModule; const pMin = w.scopedAlloc(16); const pMax = pMin + 8; const g64 = (p)=>w.getMemValue(p,ptrType64); - w.setMemValue(pMin, 0, ptrType64); - w.setMemValue(pMax, 0, ptrType64); + w.setMemValue([pMin, pMax], 0, ptrType64); const minMaxI64 = [ w.xCall('sqlite3_wasm_test_int64_min'), w.xCall('sqlite3_wasm_test_int64_max') |