@@ -20,8 +20,6 @@ type codegen_env = {
2020 stack_size,
2121 /* Allocated closures which need backpatching */
2222 backpatches: ref (list ((Expression . t , closure_data ))),
23- imported_funcs: Ident . tbl (Ident . tbl (int32 )),
24- imported_globals: Ident . tbl (Ident . tbl (string )),
2523 required_imports: list (import ),
2624};
2725
@@ -283,20 +281,9 @@ let init_codegen_env = name => {
283281 stack_size_f64: 0 ,
284282 },
285283 backpatches: ref ([] ),
286- imported_funcs: Ident . empty,
287- imported_globals: Ident . empty,
288284 required_imports: [] ,
289285};
290286
291- let lookup_ext_global = (env, modname, itemname) =>
292- Ident . find_same(itemname, Ident . find_same(modname, env. imported_globals));
293-
294- let var_of_ext_global = (env, modname, itemname) =>
295- lookup_ext_global(env, modname, itemname);
296-
297- let lookup_ext_func = (env, modname, itemname) =>
298- Ident . find_same(itemname, Ident . find_same(modname, env. imported_funcs));
299-
300287/** Static runtime values */
301288
302289// Static pointer to the runtime heap
@@ -3436,8 +3423,8 @@ let compile_imports = (wasm_mod, env, {imports}) => {
34363423let compile_exports = (wasm_mod, env, {imports, exports, globals}) => {
34373424 let compile_export = (i, export) => {
34383425 switch (export) {
3439- | GlobalExport ({ex_global_name, ex_global_index }) =>
3440- let internal_name = Printf . sprintf( "global_ % ld" , ex_global_index );
3426+ | GlobalExport ({ex_global_name}) =>
3427+ let internal_name = Ident . unique_name(ex_global_name );
34413428 let exported_name = "GRAIN$EXPORT$" ++ Ident . name(ex_global_name);
34423429 ignore @@
34433430 Export . add_global_export(wasm_mod, internal_name, exported_name);
@@ -3483,7 +3470,7 @@ let compile_exports = (wasm_mod, env, {imports, exports, globals}) => {
34833470 ignore @@
34843471 Export . add_global_export(
34853472 wasm_mod,
3486- Printf . sprintf( "global_ % d " , List . length(globals) + 1 ),
3473+ Ident . name(table_size ),
34873474 Ident . name(table_size),
34883475 );
34893476};
@@ -3511,11 +3498,11 @@ let compile_globals = (wasm_mod, env, {globals} as prog) => {
35113498 | Types . StackAllocated (WasmF32 ) => const_float32(0 . )
35123499 | Types . StackAllocated (WasmF64 ) => const_float64(0 . );
35133500 List . iter(
3514- ((i , ty)) =>
3501+ ((id , ty)) =>
35153502 ignore @@
35163503 Global . add_global(
35173504 wasm_mod,
3518- Printf . sprintf( "global_ % ld" , i ),
3505+ Ident . unique_name(id ),
35193506 wasm_type(ty),
35203507 true ,
35213508 Expression . Const . make(wasm_mod, initial_value(ty)),
@@ -3525,7 +3512,7 @@ let compile_globals = (wasm_mod, env, {globals} as prog) => {
35253512 ignore @@
35263513 Global . add_global(
35273514 wasm_mod,
3528- Printf . sprintf( "global_ % d " , 1 + List . length(globals) ),
3515+ Ident . name(table_size ),
35293516 Type . int32,
35303517 false ,
35313518 Expression . Const . make(
@@ -3638,49 +3625,14 @@ let validate_module = (~name=?, wasm_mod: Module.t) =>
36383625 raise (WasmRunnerError (wasm_mod, name, "WARNING: Invalid module" ))
36393626 };
36403627
3641- let prepare = (env, {imports}) => {
3642- let process_import =
3643- (acc_env, idx, {mimp_mod, mimp_name, mimp_type, mimp_kind}) => {
3644- let idx_name = Transl_anf . global_name(idx);
3645- let register = (name, tbl) => {
3646- let tbl =
3647- switch (Ident . find_same_opt(mimp_mod, tbl)) {
3648- | None => Ident . add(mimp_mod, Ident . empty, tbl)
3649- | Some (_ ) => tbl
3650- };
3651- Ident . add(
3652- mimp_mod,
3653- Ident . add(mimp_name, name, Ident . find_same(mimp_mod, tbl)),
3654- tbl,
3655- );
3656- };
3657-
3658- let (imported_funcs , imported_globals ) =
3659- switch (mimp_type) {
3660- | MFuncImport (_ ) => (
3661- register(Int32 . of_int(idx), acc_env. imported_funcs),
3662- acc_env. imported_globals,
3663- )
3664- | MGlobalImport (_ ) => (
3665- acc_env. imported_funcs,
3666- register(idx_name, acc_env. imported_globals),
3667- )
3668- };
3669- {... acc_env, imported_funcs, imported_globals};
3670- };
3671-
3628+ let prepare = env => {
36723629 let required_imports =
36733630 if (Env . is_runtime_mode() ) {
36743631 List . concat([ required_global_imports, required_function_imports] );
36753632 } else {
36763633 runtime_imports;
36773634 };
3678- let new_env =
3679- List_utils . fold_lefti(process_import, env, runtime_global_imports);
3680- let new_env =
3681- List_utils . fold_lefti(process_import, new_env, runtime_function_imports);
3682- let new_env = List_utils . fold_lefti(process_import, new_env, imports);
3683- {... new_env, required_imports};
3635+ {... env, required_imports};
36843636};
36853637
36863638let compile_wasm_module = (~env=?, ~name=?, prog) => {
@@ -3690,7 +3642,7 @@ let compile_wasm_module = (~env=?, ~name=?, prog) => {
36903642 | None => init_codegen_env(name)
36913643 | Some (e ) => e
36923644 };
3693- let env = prepare(env, prog );
3645+ let env = prepare(env);
36943646 let wasm_mod = Module . create() ;
36953647 if (Config . source_map^ ) {
36963648 ignore @@
0 commit comments