Skip to content

Commit

Permalink
Add ext_exists_storage WASM export
Browse files Browse the repository at this point in the history
  • Loading branch information
jacogr committed Aug 26, 2018
1 parent b620322 commit 946cb1e
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 3 deletions.
10 changes: 10 additions & 0 deletions packages/client-runtime/src/storage/data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,16 @@ export default function data ({ l, heap, db }: RuntimeEnv): RuntimeInterface$Sto

db.del(key);
}),
exists_storage: (keyPtr: Pointer, keyLength: number): number =>
instrument('exists_storage', (): number => {
const key = heap.get(keyPtr, keyLength);
const data = get(db, key, 0, U32_MAX);
const isExistent = !!data;

l.debug(() => ['exists_storage', [keyPtr, keyLength], '<-', isExistent]);

return isExistent ? 1 : 0;
}),
get_allocated_storage: (keyPtr: Pointer, keyLength: number, lenPtr: Pointer): Pointer =>
instrument('get_allocated_storage', (): Pointer => {
const key = heap.get(keyPtr, keyLength);
Expand Down
3 changes: 2 additions & 1 deletion packages/client-runtime/src/storage/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,12 @@ import data from './data';
import trie from './trie';

export default function storage (env: RuntimeEnv): RuntimeInterface$Storage {
const { clear_storage, get_allocated_storage, get_storage_into, set_storage } = data(env);
const { clear_storage, exists_storage, get_allocated_storage, get_storage_into, set_storage } = data(env);
const { enumerated_trie_root, storage_root } = trie(env);

return {
clear_storage,
exists_storage,
get_allocated_storage,
get_storage_into,
set_storage,
Expand Down
1 change: 1 addition & 0 deletions packages/client-runtime/src/types.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ export type RuntimeInterface$Sandbox = {

export type RuntimeInterface$Storage$Data = {
clear_storage: (keyPtr: Pointer, keyLength: number) => void,
exists_storage: (keyPtr: Pointer, keyLength: number) => number,
get_allocated_storage: (keyPtr: Pointer, keyLength: number, writtenPtr: Pointer) => Pointer,
get_storage_into: (keyPtr: Pointer, keyLength: number, dataPtr: Pointer, dataLength: number, offset: number) => number,
set_storage: (keyPtr: Pointer, keyLength: number, dataPtr: Pointer, dataLength: number) => void
Expand Down
6 changes: 6 additions & 0 deletions packages/client-wasm/src/wasm/proxy_runtime.wat
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@
(param i32 i32 i32 i32)
)
)
(import "runtime" "exists_storage"
(func $exists_storage
(param i32 i32) (result i32)
)
)
(import "runtime" "free"
(func $free
(param i32)
Expand Down Expand Up @@ -169,6 +174,7 @@
(export "ext_clear_storage" (func $clear_storage))
(export "ext_ed25519_verify" (func $ed25519_verify))
(export "ext_enumerated_trie_root" (func $enumerated_trie_root))
(export "ext_exists_storage" (func $exists_storage))
(export "ext_free" (func $free))
(export "ext_get_allocated_storage" (func $get_allocated_storage))
(export "ext_get_storage_into" (func $get_storage_into))
Expand Down
4 changes: 2 additions & 2 deletions packages/client-wasm/src/wasm/proxy_runtime_wasm.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
// This software may be modified and distributed under the terms
// of the ISC license. See the LICENSE file for details.

// Generated with polkadot-wasm-wasm2js (1324 bytes)
// Generated with polkadot-wasm-wasm2js (1370 bytes)

import hexToU8a from '@polkadot/util/hex/toU8a';

export default hexToU8a('0x0061736d01000000015c0e60037f7f7f006000017f60027f7f0060047f7f7f7f017f60047f7f7f7f0060017f0060037f7f7f017f60057f7f7f7f7f017f60017f017f60067f7f7f7f7f7f017f60087f7f7f7f7f7f7f7f017f60027f7f017f60017e006000017e0288051b0772756e74696d650a626c616b65325f32353600000772756e74696d6508636861696e5f696400010772756e74696d650d636c6561725f73746f7261676500020772756e74696d650e656432353531395f76657269667900030772756e74696d6514656e756d6572617465645f747269655f726f6f7400040772756e74696d65046672656500050772756e74696d65156765745f616c6c6f63617465645f73746f7261676500060772756e74696d65106765745f73746f726167655f696e746f00070772756e74696d65066d616c6c6f6300080772756e74696d65066d656d636d7000060772756e74696d65066d656d63707900060772756e74696d65076d656d6d6f766500060772756e74696d65066d656d73657400060772756e74696d65097072696e745f68657800020772756e74696d65097072696e745f6e756d00020772756e74696d650a7072696e745f7574663800020772756e74696d651373616e64626f785f696e7374616e746961746500090772756e74696d651973616e64626f785f696e7374616e63655f74656172646f776e00050772756e74696d650e73616e64626f785f696e766f6b6500030772756e74696d651373616e64626f785f696e766f6b655f706f6332000a0772756e74696d651273616e64626f785f6d656d6f72795f67657400030772756e74696d651273616e64626f785f6d656d6f72795f6e6577000b0772756e74696d651273616e64626f785f6d656d6f72795f73657400030772756e74696d651773616e64626f785f6d656d6f72795f74656172646f776e00050772756e74696d650b7365745f73746f7261676500040772756e74696d650c73746f726167655f726f6f7400050772756e74696d650874776f785f31323800000303020c0d079c041b0d6578745f7072696e745f6e756d001b0c6578745f636861696e5f6964001c0e6578745f626c616b65325f3235360000116578745f636c6561725f73746f726167650002126578745f656432353531395f7665726966790003186578745f656e756d6572617465645f747269655f726f6f740004086578745f667265650005196578745f6765745f616c6c6f63617465645f73746f726167650006146578745f6765745f73746f726167655f696e746f00070a6578745f6d616c6c6f6300080a6578745f6d656d636d7000090a6578745f6d656d637079000a0b6578745f6d656d6d6f7665000b0a6578745f6d656d736574000c0d6578745f7072696e745f686578000d0e6578745f7072696e745f75746638000f126578745f73616e64626f785f696e766f6b650012176578745f73616e64626f785f696e766f6b655f706f633200131d6578745f73616e64626f785f696e7374616e63655f74656172646f776e0011176578745f73616e64626f785f696e7374616e74696174650010166578745f73616e64626f785f6d656d6f72795f6765740014166578745f73616e64626f785f6d656d6f72795f6e65770015166578745f73616e64626f785f6d656d6f72795f73657400161b6578745f73616e64626f785f6d656d6f72795f74656172646f776e00170f6578745f7365745f73746f726167650018106578745f73746f726167655f726f6f7400190c6578745f74776f785f313238001a0a15020d002000422088a72000a7100e0b05001001ad0b');
export default hexToU8a('0x0061736d01000000015c0e60037f7f7f006000017f60027f7f0060047f7f7f7f017f60047f7f7f7f0060027f7f017f60017f0060037f7f7f017f60057f7f7f7f7f017f60017f017f60067f7f7f7f7f7f017f60087f7f7f7f7f7f7f7f017f60017e006000017e02a1051c0772756e74696d650a626c616b65325f32353600000772756e74696d6508636861696e5f696400010772756e74696d650d636c6561725f73746f7261676500020772756e74696d650e656432353531395f76657269667900030772756e74696d6514656e756d6572617465645f747269655f726f6f7400040772756e74696d650e6578697374735f73746f7261676500050772756e74696d65046672656500060772756e74696d65156765745f616c6c6f63617465645f73746f7261676500070772756e74696d65106765745f73746f726167655f696e746f00080772756e74696d65066d616c6c6f6300090772756e74696d65066d656d636d7000070772756e74696d65066d656d63707900070772756e74696d65076d656d6d6f766500070772756e74696d65066d656d73657400070772756e74696d65097072696e745f68657800020772756e74696d65097072696e745f6e756d00020772756e74696d650a7072696e745f7574663800020772756e74696d651373616e64626f785f696e7374616e7469617465000a0772756e74696d651973616e64626f785f696e7374616e63655f74656172646f776e00060772756e74696d650e73616e64626f785f696e766f6b6500030772756e74696d651373616e64626f785f696e766f6b655f706f6332000b0772756e74696d651273616e64626f785f6d656d6f72795f67657400030772756e74696d651273616e64626f785f6d656d6f72795f6e657700050772756e74696d651273616e64626f785f6d656d6f72795f73657400030772756e74696d651773616e64626f785f6d656d6f72795f74656172646f776e00060772756e74696d650b7365745f73746f7261676500040772756e74696d650c73746f726167655f726f6f7400060772756e74696d650874776f785f31323800000303020c0d07b1041c0d6578745f7072696e745f6e756d001c0c6578745f636861696e5f6964001d0e6578745f626c616b65325f3235360000116578745f636c6561725f73746f726167650002126578745f656432353531395f7665726966790003186578745f656e756d6572617465645f747269655f726f6f740004126578745f6578697374735f73746f726167650005086578745f667265650006196578745f6765745f616c6c6f63617465645f73746f726167650007146578745f6765745f73746f726167655f696e746f00080a6578745f6d616c6c6f6300090a6578745f6d656d636d70000a0a6578745f6d656d637079000b0b6578745f6d656d6d6f7665000c0a6578745f6d656d736574000d0d6578745f7072696e745f686578000e0e6578745f7072696e745f757466380010126578745f73616e64626f785f696e766f6b650013176578745f73616e64626f785f696e766f6b655f706f633200141d6578745f73616e64626f785f696e7374616e63655f74656172646f776e0012176578745f73616e64626f785f696e7374616e74696174650011166578745f73616e64626f785f6d656d6f72795f6765740015166578745f73616e64626f785f6d656d6f72795f6e65770016166578745f73616e64626f785f6d656d6f72795f73657400171b6578745f73616e64626f785f6d656d6f72795f74656172646f776e00180f6578745f7365745f73746f726167650019106578745f73746f726167655f726f6f74001a0c6578745f74776f785f313238001b0a15020d002000422088a72000a7100f0b05001001ad0b');
24 changes: 24 additions & 0 deletions stats.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
const fs = require('fs');

const ROOT = '/Users/jacogreeff/.polkadot-js/chains/krummelanke-0x609ac0341c7cdee38e4ec08bc12b64cd83881a42929ede606fdb26cf16fd3f5a';

function calcDir (path, report) {
const sizes = fs.readdirSync(path).map((name) => {
const entry = `${path}/${name}`;
const stats = fs.lstatSync(entry);

return stats.isDirectory()
? calcDir(entry, false)
: [1, stats.size];
});

return sizes.reduce(([count, total], size) => {
return [count + size[0], total + size[1]];
}, [0, 0]);
}

console.error(calcDir(`${ROOT}/block`, true));
console.error(calcDir(`${ROOT}/state`, true));

// [ 614,554, 141,847,268 ]
// [ 6,602,481, 2,448,052,422 ]

0 comments on commit 946cb1e

Please sign in to comment.