Skip to content

Commit ad381e4

Browse files
Unify the Ruby runtime initialization process in ruby_init
1 parent 3912725 commit ad381e4

File tree

14 files changed

+27
-149
lines changed

14 files changed

+27
-149
lines changed

packages/gems/js/ext/js/bindgen/ext.c

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,6 @@ extern void __wasm_import_ruby_js_js_runtime_throw_prohibit_rewind_exception(uin
7878

7979

8080

81-
82-
83-
8481
__attribute__((__weak__, __export_name__("cabi_post_ruby:js/ruby-runtime#rstring-ptr")))
8582
void __wasm_export_exports_ruby_js_ruby_runtime_rstring_ptr_post_return(uint8_t * arg0) {
8683
if ((*((size_t*) (arg0 + 4))) > 0) {
@@ -437,27 +434,9 @@ void __wasm_export_exports_ruby_js_ruby_runtime_ruby_show_version(void) {
437434
}
438435

439436
__attribute__((__export_name__("ruby:js/ruby-runtime#ruby-init")))
440-
void __wasm_export_exports_ruby_js_ruby_runtime_ruby_init(void) {
441-
exports_ruby_js_ruby_runtime_ruby_init();
442-
}
443-
444-
__attribute__((__export_name__("ruby:js/ruby-runtime#ruby-sysinit")))
445-
void __wasm_export_exports_ruby_js_ruby_runtime_ruby_sysinit(uint8_t * arg, size_t arg0) {
446-
ext_list_string_t arg1 = (ext_list_string_t) { (ext_string_t*)(arg), (arg0) };
447-
exports_ruby_js_ruby_runtime_ruby_sysinit(&arg1);
448-
}
449-
450-
__attribute__((__export_name__("ruby:js/ruby-runtime#ruby-options")))
451-
int32_t __wasm_export_exports_ruby_js_ruby_runtime_ruby_options(uint8_t * arg, size_t arg0) {
437+
void __wasm_export_exports_ruby_js_ruby_runtime_ruby_init(uint8_t * arg, size_t arg0) {
452438
ext_list_string_t arg1 = (ext_list_string_t) { (ext_string_t*)(arg), (arg0) };
453-
exports_ruby_js_ruby_runtime_own_rb_iseq_t ret = exports_ruby_js_ruby_runtime_ruby_options(&arg1);
454-
return (ret).__handle;
455-
}
456-
457-
__attribute__((__export_name__("ruby:js/ruby-runtime#ruby-script")))
458-
void __wasm_export_exports_ruby_js_ruby_runtime_ruby_script(uint8_t * arg, size_t arg0) {
459-
ext_string_t arg1 = (ext_string_t) { (uint8_t*)(arg), (arg0) };
460-
exports_ruby_js_ruby_runtime_ruby_script(&arg1);
439+
exports_ruby_js_ruby_runtime_ruby_init(&arg1);
461440
}
462441

463442
__attribute__((__export_name__("ruby:js/ruby-runtime#ruby-init-loadpath")))

packages/gems/js/ext/js/bindgen/ext.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,10 +108,7 @@ extern void ruby_js_js_runtime_throw_prohibit_rewind_exception(ext_string_t *mes
108108

109109
// Exported Functions from `ruby:js/ruby-runtime`
110110
void exports_ruby_js_ruby_runtime_ruby_show_version(void);
111-
void exports_ruby_js_ruby_runtime_ruby_init(void);
112-
void exports_ruby_js_ruby_runtime_ruby_sysinit(ext_list_string_t *args);
113-
exports_ruby_js_ruby_runtime_own_rb_iseq_t exports_ruby_js_ruby_runtime_ruby_options(ext_list_string_t *args);
114-
void exports_ruby_js_ruby_runtime_ruby_script(ext_string_t *name);
111+
void exports_ruby_js_ruby_runtime_ruby_init(ext_list_string_t *args);
115112
void exports_ruby_js_ruby_runtime_ruby_init_loadpath(void);
116113
void exports_ruby_js_ruby_runtime_rb_eval_string_protect(ext_string_t *str, exports_ruby_js_ruby_runtime_tuple2_own_rb_abi_value_s32_t *ret);
117114
void exports_ruby_js_ruby_runtime_rb_funcallv_protect(exports_ruby_js_ruby_runtime_borrow_rb_abi_value_t recv, exports_ruby_js_ruby_runtime_rb_id_t mid, exports_ruby_js_ruby_runtime_list_borrow_rb_abi_value_t *args, exports_ruby_js_ruby_runtime_tuple2_own_rb_abi_value_s32_t *ret);
Binary file not shown.

packages/gems/js/ext/js/bindgen/legacy/rb-abi-guest.c

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -127,25 +127,10 @@ __attribute__((export_name("ruby-show-version: func() -> ()")))
127127
void __wasm_export_rb_abi_guest_ruby_show_version(void) {
128128
rb_abi_guest_ruby_show_version();
129129
}
130-
__attribute__((export_name("ruby-init: func() -> ()")))
131-
void __wasm_export_rb_abi_guest_ruby_init(void) {
132-
rb_abi_guest_ruby_init();
133-
}
134-
__attribute__((export_name("ruby-sysinit: func(args: list<string>) -> ()")))
135-
void __wasm_export_rb_abi_guest_ruby_sysinit(int32_t arg, int32_t arg0) {
136-
rb_abi_guest_list_string_t arg1 = (rb_abi_guest_list_string_t) { (rb_abi_guest_string_t*)(arg), (size_t)(arg0) };
137-
rb_abi_guest_ruby_sysinit(&arg1);
138-
}
139-
__attribute__((export_name("ruby-options: func(args: list<string>) -> handle<rb-iseq>")))
140-
int32_t __wasm_export_rb_abi_guest_ruby_options(int32_t arg, int32_t arg0) {
130+
__attribute__((export_name("ruby-init: func(args: list<string>) -> ()")))
131+
void __wasm_export_rb_abi_guest_ruby_init(int32_t arg, int32_t arg0) {
141132
rb_abi_guest_list_string_t arg1 = (rb_abi_guest_list_string_t) { (rb_abi_guest_string_t*)(arg), (size_t)(arg0) };
142-
rb_abi_guest_rb_iseq_t ret = rb_abi_guest_ruby_options(&arg1);
143-
return (ret).idx;
144-
}
145-
__attribute__((export_name("ruby-script: func(name: string) -> ()")))
146-
void __wasm_export_rb_abi_guest_ruby_script(int32_t arg, int32_t arg0) {
147-
rb_abi_guest_string_t arg1 = (rb_abi_guest_string_t) { (char*)(arg), (size_t)(arg0) };
148-
rb_abi_guest_ruby_script(&arg1);
133+
rb_abi_guest_ruby_init(&arg1);
149134
}
150135
__attribute__((export_name("ruby-init-loadpath: func() -> ()")))
151136
void __wasm_export_rb_abi_guest_ruby_init_loadpath(void) {

packages/gems/js/ext/js/bindgen/legacy/rb-abi-guest.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,7 @@ extern "C"
5656
} rb_abi_guest_list_rb_abi_value_t;
5757
void rb_abi_guest_list_rb_abi_value_free(rb_abi_guest_list_rb_abi_value_t *ptr);
5858
void rb_abi_guest_ruby_show_version(void);
59-
void rb_abi_guest_ruby_init(void);
60-
void rb_abi_guest_ruby_sysinit(rb_abi_guest_list_string_t *args);
61-
rb_abi_guest_rb_iseq_t rb_abi_guest_ruby_options(rb_abi_guest_list_string_t *args);
62-
void rb_abi_guest_ruby_script(rb_abi_guest_string_t *name);
59+
void rb_abi_guest_ruby_init(rb_abi_guest_list_string_t *args);
6360
void rb_abi_guest_ruby_init_loadpath(void);
6461
void rb_abi_guest_rb_eval_string_protect(rb_abi_guest_string_t *str, rb_abi_guest_tuple2_rb_abi_value_s32_t *ret0);
6562
void rb_abi_guest_rb_funcallv_protect(rb_abi_guest_rb_abi_value_t recv, rb_abi_guest_rb_id_t mid, rb_abi_guest_list_rb_abi_value_t *args, rb_abi_guest_tuple2_rb_abi_value_s32_t *ret0);

packages/gems/js/ext/js/bindgen/legacy/rb-abi-guest.wit

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@ type rb-errno = s32
44
type rb-id = u32
55

66
ruby-show-version: func()
7-
ruby-init: func()
8-
ruby-sysinit: func(args: list<string>)
9-
ruby-options: func(args: list<string>) -> rb-iseq
10-
ruby-script: func(name: string)
7+
ruby-init: func(args: list<string>)
118
ruby-init-loadpath: func()
129
rb-eval-string-protect: func(str: string) -> tuple<rb-abi-value, s32>
1310
rb-funcallv-protect: func(recv: rb-abi-value, mid: rb-id, args: list<rb-abi-value>) -> tuple<rb-abi-value, s32>

packages/gems/js/ext/js/witapi-core.c

Lines changed: 8 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -203,36 +203,22 @@ void exports_ruby_js_ruby_runtime_rb_abi_value_destructor(
203203

204204
void rb_abi_guest_ruby_show_version(void) { ruby_show_version(); }
205205

206-
__attribute__((noinline)) static void rb_abi_guest_ruby_init_thunk(void) {
206+
__attribute__((noinline)) static void rb_abi_guest_ruby_init_thunk(int argc, char **c_args) {
207207
ruby_init();
208208
rb_abi_guest_arena_hash = rb_hash_new();
209209
rb_abi_guest_refcount_hash = rb_hash_new();
210210

211211
rb_gc_register_mark_object(rb_abi_guest_arena_hash);
212212
rb_gc_register_mark_object(rb_abi_guest_refcount_hash);
213+
ruby_sysinit(&argc, &c_args);
214+
ruby_options(argc, c_args);
213215
}
214-
void rb_abi_guest_ruby_init(void) {
215-
RB_WASM_LIB_RT(rb_abi_guest_ruby_init_thunk())
216-
}
217-
218-
void rb_abi_guest_ruby_sysinit(rb_abi_guest_list_string_t *args) {
219-
char **c_args;
220-
int argc = args->len;
221-
c_strings_from_abi(args, c_args);
222-
RB_WASM_LIB_RT(ruby_sysinit(&argc, &c_args))
223-
}
224-
225-
rb_abi_guest_rb_iseq_t
226-
rb_abi_guest_ruby_options(rb_abi_guest_list_string_t *args) {
216+
void rb_abi_guest_ruby_init(rb_abi_guest_list_string_t *args) {
227217
void *result;
218+
int argc = args->len;
228219
char **c_args;
229220
c_strings_from_abi(args, c_args);
230-
RB_WASM_LIB_RT(result = ruby_options(args->len, c_args))
231-
return rb_abi_guest_rb_iseq_new(result);
232-
}
233-
234-
void rb_abi_guest_ruby_script(rb_abi_guest_string_t *name) {
235-
RB_WASM_LIB_RT(ruby_script((const char *)name->ptr))
221+
RB_WASM_LIB_RT(rb_abi_guest_ruby_init_thunk(argc, c_args))
236222
}
237223

238224
void rb_abi_guest_ruby_init_loadpath(void) {
@@ -398,22 +384,9 @@ void exports_ruby_js_ruby_runtime_ruby_show_version(void) {
398384
__wasm_call_ctors_if_needed();
399385
rb_abi_guest_ruby_show_version();
400386
}
401-
void exports_ruby_js_ruby_runtime_ruby_init(void) {
402-
__wasm_call_ctors_if_needed();
403-
rb_abi_guest_ruby_init();
404-
}
405-
void exports_ruby_js_ruby_runtime_ruby_sysinit(ext_list_string_t *args) {
406-
__wasm_call_ctors_if_needed();
407-
rb_abi_guest_ruby_sysinit(args);
408-
}
409-
exports_ruby_js_ruby_runtime_own_rb_iseq_t
410-
exports_ruby_js_ruby_runtime_ruby_options(ext_list_string_t *args) {
411-
__wasm_call_ctors_if_needed();
412-
return rb_abi_guest_ruby_options(args);
413-
}
414-
void exports_ruby_js_ruby_runtime_ruby_script(ext_string_t *name) {
387+
void exports_ruby_js_ruby_runtime_ruby_init(ext_list_string_t *args) {
415388
__wasm_call_ctors_if_needed();
416-
rb_abi_guest_ruby_script(name);
389+
rb_abi_guest_ruby_init(args);
417390
}
418391
void exports_ruby_js_ruby_runtime_ruby_init_loadpath(void) {
419392
__wasm_call_ctors_if_needed();

packages/gems/js/wit/ruby-runtime.wit

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,7 @@ interface ruby-runtime {
1010
type rb-id = u32;
1111

1212
ruby-show-version: func();
13-
ruby-init: func();
14-
ruby-sysinit: func(args: list<string>);
15-
ruby-options: func(args: list<string>) -> rb-iseq;
16-
ruby-script: func(name: string);
13+
ruby-init: func(args: list<string>);
1714
ruby-init-loadpath: func();
1815
rb-eval-string-protect: func(str: string) -> tuple<rb-abi-value, s32>;
1916
rb-funcallv-protect: func(recv: borrow<rb-abi-value>, mid: rb-id, args: list<borrow<rb-abi-value>>) -> tuple<rb-abi-value, s32>;

packages/npm-packages/ruby-wasm-wasi/src/bindgen/interfaces/ruby-js-js-runtime.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export namespace RubyJsJsRuntime {
1616
export function jsValueTypeof(value: JsAbiValue): string;
1717
export function jsValueEqual(lhs: JsAbiValue, rhs: JsAbiValue): boolean;
1818
export function jsValueStrictlyEqual(lhs: JsAbiValue, rhs: JsAbiValue): boolean;
19-
export function reflectApply(target: JsAbiValue, thisArgument: JsAbiValue, arguments: JsAbiValue[]): JsAbiResult;
19+
export function reflectApply(target: JsAbiValue, thisArgument: JsAbiValue, arguments: Array<JsAbiValue>): JsAbiResult;
2020
export function reflectGet(target: JsAbiValue, propertyKey: string): JsAbiResult;
2121
export function reflectSet(target: JsAbiValue, propertyKey: string, value: JsAbiValue): JsAbiResult;
2222
export function throwProhibitRewindException(message: string): void;

packages/npm-packages/ruby-wasm-wasi/src/bindgen/interfaces/ruby-js-ruby-runtime.d.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
11
export namespace RubyJsRubyRuntime {
22
export function rubyShowVersion(): void;
3-
export function rubyInit(): void;
4-
export function rubySysinit(args: string[]): void;
5-
export function rubyOptions(args: string[]): RbIseq;
6-
export function rubyScript(name: string): void;
3+
export function rubyInit(args: Array<string>): void;
74
export function rubyInitLoadpath(): void;
85
export function rbEvalStringProtect(str: string): [RbAbiValue, number];
9-
export function rbFuncallvProtect(recv: RbAbiValue, mid: RbId, args: RbAbiValue[]): [RbAbiValue, number];
6+
export function rbFuncallvProtect(recv: RbAbiValue, mid: RbId, args: Array<RbAbiValue>): [RbAbiValue, number];
107
export function rbIntern(name: string): RbId;
118
export function rbErrinfo(): RbAbiValue;
129
export function rbClearErrinfo(): void;

0 commit comments

Comments
 (0)