js 2.5.1 → 2.5.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/js/bindgen/ext.c +552 -0
- data/ext/js/bindgen/ext.h +170 -0
- data/ext/js/bindgen/ext_component_type.o +0 -0
- data/ext/js/bindgen/{rb-js-abi-host.c → legacy/rb-js-abi-host.c} +2 -2
- data/ext/js/bindgen/{rb-js-abi-host.h → legacy/rb-js-abi-host.h} +2 -2
- data/ext/js/bindgen/{rb-js-abi-host.wit → legacy/rb-js-abi-host.wit} +1 -1
- data/ext/js/depend +10 -3
- data/ext/js/extconf.rb +16 -2
- data/ext/js/js-core.c +24 -13
- data/ext/js/types.h +103 -0
- data/ext/{witapi → js}/witapi-core.c +138 -6
- data/js.gemspec +1 -1
- data/lib/js/version.rb +1 -1
- data/wit/js-runtime.wit +45 -0
- data/wit/ruby-runtime.wit +43 -0
- data/wit/world.wit +6 -0
- metadata +17 -17
- data/ext/witapi/bindgen/.clang-format +0 -2
- data/ext/witapi/depend +0 -11
- data/ext/witapi/extconf.rb +0 -3
- /data/ext/{witapi/bindgen → js/bindgen/legacy}/rb-abi-guest.c +0 -0
- /data/ext/{witapi/bindgen → js/bindgen/legacy}/rb-abi-guest.h +0 -0
- /data/ext/{witapi/bindgen → js/bindgen/legacy}/rb-abi-guest.wit +0 -0
@@ -0,0 +1,170 @@
|
|
1
|
+
// Generated by `wit-bindgen` 0.24.0. DO NOT EDIT!
|
2
|
+
#ifndef __BINDINGS_EXT_H
|
3
|
+
#define __BINDINGS_EXT_H
|
4
|
+
#ifdef __cplusplus
|
5
|
+
extern "C" {
|
6
|
+
#endif
|
7
|
+
|
8
|
+
#include <stdint.h>
|
9
|
+
#include <stdbool.h>
|
10
|
+
|
11
|
+
typedef struct ext_string_t {
|
12
|
+
uint8_t*ptr;
|
13
|
+
size_t len;
|
14
|
+
} ext_string_t;
|
15
|
+
|
16
|
+
typedef struct ruby_js_js_runtime_own_js_abi_value_t {
|
17
|
+
int32_t __handle;
|
18
|
+
} ruby_js_js_runtime_own_js_abi_value_t;
|
19
|
+
|
20
|
+
typedef struct ruby_js_js_runtime_borrow_js_abi_value_t {
|
21
|
+
int32_t __handle;
|
22
|
+
} ruby_js_js_runtime_borrow_js_abi_value_t;
|
23
|
+
|
24
|
+
typedef struct ruby_js_js_runtime_js_abi_result_t {
|
25
|
+
uint8_t tag;
|
26
|
+
union {
|
27
|
+
ruby_js_js_runtime_own_js_abi_value_t success;
|
28
|
+
ruby_js_js_runtime_own_js_abi_value_t failure;
|
29
|
+
} val;
|
30
|
+
} ruby_js_js_runtime_js_abi_result_t;
|
31
|
+
|
32
|
+
#define RUBY_JS_JS_RUNTIME_JS_ABI_RESULT_SUCCESS 0
|
33
|
+
#define RUBY_JS_JS_RUNTIME_JS_ABI_RESULT_FAILURE 1
|
34
|
+
|
35
|
+
typedef struct ruby_js_js_runtime_raw_integer_t {
|
36
|
+
uint8_t tag;
|
37
|
+
union {
|
38
|
+
double as_float;
|
39
|
+
ext_string_t bignum;
|
40
|
+
} val;
|
41
|
+
} ruby_js_js_runtime_raw_integer_t;
|
42
|
+
|
43
|
+
#define RUBY_JS_JS_RUNTIME_RAW_INTEGER_AS_FLOAT 0
|
44
|
+
#define RUBY_JS_JS_RUNTIME_RAW_INTEGER_BIGNUM 1
|
45
|
+
|
46
|
+
typedef struct ruby_js_js_runtime_list_borrow_js_abi_value_t {
|
47
|
+
ruby_js_js_runtime_borrow_js_abi_value_t *ptr;
|
48
|
+
size_t len;
|
49
|
+
} ruby_js_js_runtime_list_borrow_js_abi_value_t;
|
50
|
+
|
51
|
+
typedef struct exports_ruby_js_ruby_runtime_own_rb_iseq_t {
|
52
|
+
int32_t __handle;
|
53
|
+
} exports_ruby_js_ruby_runtime_own_rb_iseq_t;
|
54
|
+
|
55
|
+
typedef struct exports_ruby_js_ruby_runtime_rb_iseq_t exports_ruby_js_ruby_runtime_rb_iseq_t;
|
56
|
+
|
57
|
+
typedef exports_ruby_js_ruby_runtime_rb_iseq_t* exports_ruby_js_ruby_runtime_borrow_rb_iseq_t;
|
58
|
+
|
59
|
+
typedef struct exports_ruby_js_ruby_runtime_own_rb_abi_value_t {
|
60
|
+
int32_t __handle;
|
61
|
+
} exports_ruby_js_ruby_runtime_own_rb_abi_value_t;
|
62
|
+
|
63
|
+
typedef struct exports_ruby_js_ruby_runtime_rb_abi_value_t exports_ruby_js_ruby_runtime_rb_abi_value_t;
|
64
|
+
|
65
|
+
typedef exports_ruby_js_ruby_runtime_rb_abi_value_t* exports_ruby_js_ruby_runtime_borrow_rb_abi_value_t;
|
66
|
+
|
67
|
+
typedef int32_t exports_ruby_js_ruby_runtime_rb_errno_t;
|
68
|
+
|
69
|
+
typedef uint32_t exports_ruby_js_ruby_runtime_rb_id_t;
|
70
|
+
|
71
|
+
typedef struct ext_list_string_t {
|
72
|
+
ext_string_t *ptr;
|
73
|
+
size_t len;
|
74
|
+
} ext_list_string_t;
|
75
|
+
|
76
|
+
typedef struct exports_ruby_js_ruby_runtime_tuple2_own_rb_abi_value_s32_t {
|
77
|
+
exports_ruby_js_ruby_runtime_own_rb_abi_value_t f0;
|
78
|
+
int32_t f1;
|
79
|
+
} exports_ruby_js_ruby_runtime_tuple2_own_rb_abi_value_s32_t;
|
80
|
+
|
81
|
+
typedef struct exports_ruby_js_ruby_runtime_list_borrow_rb_abi_value_t {
|
82
|
+
exports_ruby_js_ruby_runtime_borrow_rb_abi_value_t *ptr;
|
83
|
+
size_t len;
|
84
|
+
} exports_ruby_js_ruby_runtime_list_borrow_rb_abi_value_t;
|
85
|
+
|
86
|
+
// Imported Functions from `ruby:js/js-runtime`
|
87
|
+
extern void ruby_js_js_runtime_eval_js(ext_string_t *code, ruby_js_js_runtime_js_abi_result_t *ret);
|
88
|
+
extern bool ruby_js_js_runtime_is_js(ruby_js_js_runtime_borrow_js_abi_value_t value);
|
89
|
+
extern bool ruby_js_js_runtime_instance_of(ruby_js_js_runtime_borrow_js_abi_value_t value, ruby_js_js_runtime_borrow_js_abi_value_t klass);
|
90
|
+
extern ruby_js_js_runtime_own_js_abi_value_t ruby_js_js_runtime_global_this(void);
|
91
|
+
extern ruby_js_js_runtime_own_js_abi_value_t ruby_js_js_runtime_int_to_js_number(int32_t value);
|
92
|
+
extern ruby_js_js_runtime_own_js_abi_value_t ruby_js_js_runtime_float_to_js_number(double value);
|
93
|
+
extern ruby_js_js_runtime_own_js_abi_value_t ruby_js_js_runtime_string_to_js_string(ext_string_t *value);
|
94
|
+
extern ruby_js_js_runtime_own_js_abi_value_t ruby_js_js_runtime_bool_to_js_bool(bool value);
|
95
|
+
extern ruby_js_js_runtime_own_js_abi_value_t ruby_js_js_runtime_proc_to_js_function(void);
|
96
|
+
extern ruby_js_js_runtime_own_js_abi_value_t ruby_js_js_runtime_rb_object_to_js_rb_value(void);
|
97
|
+
extern void ruby_js_js_runtime_js_value_to_string(ruby_js_js_runtime_borrow_js_abi_value_t value, ext_string_t *ret);
|
98
|
+
extern void ruby_js_js_runtime_js_value_to_integer(ruby_js_js_runtime_borrow_js_abi_value_t value, ruby_js_js_runtime_raw_integer_t *ret);
|
99
|
+
extern void ruby_js_js_runtime_export_js_value_to_host(ruby_js_js_runtime_borrow_js_abi_value_t value);
|
100
|
+
extern ruby_js_js_runtime_own_js_abi_value_t ruby_js_js_runtime_import_js_value_from_host(void);
|
101
|
+
extern void ruby_js_js_runtime_js_value_typeof(ruby_js_js_runtime_borrow_js_abi_value_t value, ext_string_t *ret);
|
102
|
+
extern bool ruby_js_js_runtime_js_value_equal(ruby_js_js_runtime_borrow_js_abi_value_t lhs, ruby_js_js_runtime_borrow_js_abi_value_t rhs);
|
103
|
+
extern bool ruby_js_js_runtime_js_value_strictly_equal(ruby_js_js_runtime_borrow_js_abi_value_t lhs, ruby_js_js_runtime_borrow_js_abi_value_t rhs);
|
104
|
+
extern void ruby_js_js_runtime_reflect_apply(ruby_js_js_runtime_borrow_js_abi_value_t target, ruby_js_js_runtime_borrow_js_abi_value_t this_argument, ruby_js_js_runtime_list_borrow_js_abi_value_t *arguments, ruby_js_js_runtime_js_abi_result_t *ret);
|
105
|
+
extern void ruby_js_js_runtime_reflect_get(ruby_js_js_runtime_borrow_js_abi_value_t target, ext_string_t *property_key, ruby_js_js_runtime_js_abi_result_t *ret);
|
106
|
+
extern void ruby_js_js_runtime_reflect_set(ruby_js_js_runtime_borrow_js_abi_value_t target, ext_string_t *property_key, ruby_js_js_runtime_borrow_js_abi_value_t value, ruby_js_js_runtime_js_abi_result_t *ret);
|
107
|
+
extern void ruby_js_js_runtime_throw_prohibit_rewind_exception(ext_string_t *message);
|
108
|
+
|
109
|
+
// Exported Functions from `ruby:js/ruby-runtime`
|
110
|
+
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);
|
115
|
+
void exports_ruby_js_ruby_runtime_ruby_init_loadpath(void);
|
116
|
+
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);
|
117
|
+
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);
|
118
|
+
exports_ruby_js_ruby_runtime_rb_id_t exports_ruby_js_ruby_runtime_rb_intern(ext_string_t *name);
|
119
|
+
exports_ruby_js_ruby_runtime_own_rb_abi_value_t exports_ruby_js_ruby_runtime_rb_errinfo(void);
|
120
|
+
void exports_ruby_js_ruby_runtime_rb_clear_errinfo(void);
|
121
|
+
void exports_ruby_js_ruby_runtime_rstring_ptr(exports_ruby_js_ruby_runtime_borrow_rb_abi_value_t value, ext_string_t *ret);
|
122
|
+
void exports_ruby_js_ruby_runtime_rb_vm_bugreport(void);
|
123
|
+
bool exports_ruby_js_ruby_runtime_rb_gc_enable(void);
|
124
|
+
bool exports_ruby_js_ruby_runtime_rb_gc_disable(void);
|
125
|
+
bool exports_ruby_js_ruby_runtime_rb_set_should_prohibit_rewind(bool new_value);
|
126
|
+
exports_ruby_js_ruby_runtime_own_rb_abi_value_t exports_ruby_js_ruby_runtime_export_rb_value_to_js(void);
|
127
|
+
|
128
|
+
// Helper Functions
|
129
|
+
|
130
|
+
extern void ruby_js_js_runtime_js_abi_value_drop_own(ruby_js_js_runtime_own_js_abi_value_t handle);
|
131
|
+
|
132
|
+
extern ruby_js_js_runtime_borrow_js_abi_value_t ruby_js_js_runtime_borrow_js_abi_value(ruby_js_js_runtime_own_js_abi_value_t handle);
|
133
|
+
|
134
|
+
void ruby_js_js_runtime_js_abi_result_free(ruby_js_js_runtime_js_abi_result_t *ptr);
|
135
|
+
|
136
|
+
void ruby_js_js_runtime_raw_integer_free(ruby_js_js_runtime_raw_integer_t *ptr);
|
137
|
+
|
138
|
+
void ruby_js_js_runtime_list_borrow_js_abi_value_free(ruby_js_js_runtime_list_borrow_js_abi_value_t *ptr);
|
139
|
+
|
140
|
+
extern void exports_ruby_js_ruby_runtime_rb_iseq_drop_own(exports_ruby_js_ruby_runtime_own_rb_iseq_t handle);
|
141
|
+
|
142
|
+
extern exports_ruby_js_ruby_runtime_own_rb_iseq_t exports_ruby_js_ruby_runtime_rb_iseq_new(exports_ruby_js_ruby_runtime_rb_iseq_t *rep);
|
143
|
+
extern exports_ruby_js_ruby_runtime_rb_iseq_t* exports_ruby_js_ruby_runtime_rb_iseq_rep(exports_ruby_js_ruby_runtime_own_rb_iseq_t handle);
|
144
|
+
void exports_ruby_js_ruby_runtime_rb_iseq_destructor(exports_ruby_js_ruby_runtime_rb_iseq_t *rep);
|
145
|
+
|
146
|
+
extern void exports_ruby_js_ruby_runtime_rb_abi_value_drop_own(exports_ruby_js_ruby_runtime_own_rb_abi_value_t handle);
|
147
|
+
|
148
|
+
extern exports_ruby_js_ruby_runtime_own_rb_abi_value_t exports_ruby_js_ruby_runtime_rb_abi_value_new(exports_ruby_js_ruby_runtime_rb_abi_value_t *rep);
|
149
|
+
extern exports_ruby_js_ruby_runtime_rb_abi_value_t* exports_ruby_js_ruby_runtime_rb_abi_value_rep(exports_ruby_js_ruby_runtime_own_rb_abi_value_t handle);
|
150
|
+
void exports_ruby_js_ruby_runtime_rb_abi_value_destructor(exports_ruby_js_ruby_runtime_rb_abi_value_t *rep);
|
151
|
+
|
152
|
+
void ext_list_string_free(ext_list_string_t *ptr);
|
153
|
+
|
154
|
+
void exports_ruby_js_ruby_runtime_list_borrow_rb_abi_value_free(exports_ruby_js_ruby_runtime_list_borrow_rb_abi_value_t *ptr);
|
155
|
+
|
156
|
+
// Transfers ownership of `s` into the string `ret`
|
157
|
+
void ext_string_set(ext_string_t *ret, const char*s);
|
158
|
+
|
159
|
+
// Creates a copy of the input nul-terminate string `s` and
|
160
|
+
// stores it into the component model string `ret`.
|
161
|
+
void ext_string_dup(ext_string_t *ret, const char*s);
|
162
|
+
|
163
|
+
// Deallocates the string pointed to by `ret`, deallocating
|
164
|
+
// the memory behind the string.
|
165
|
+
void ext_string_free(ext_string_t *ret);
|
166
|
+
|
167
|
+
#ifdef __cplusplus
|
168
|
+
}
|
169
|
+
#endif
|
170
|
+
#endif
|
Binary file
|
@@ -161,7 +161,7 @@ void rb_js_abi_host_js_value_to_string(rb_js_abi_host_js_abi_value_t value, rb_j
|
|
161
161
|
__wasm_import_rb_js_abi_host_js_value_to_string((value).idx, ptr);
|
162
162
|
*ret0 = (rb_js_abi_host_string_t) { (char*)(*((int32_t*) (ptr + 0))), (size_t)(*((int32_t*) (ptr + 4))) };
|
163
163
|
}
|
164
|
-
__attribute__((import_module("rb-js-abi-host"), import_name("js-value-to-integer: func(value: handle<js-abi-value>) -> variant {
|
164
|
+
__attribute__((import_module("rb-js-abi-host"), import_name("js-value-to-integer: func(value: handle<js-abi-value>) -> variant { as-float(float64), bignum(string) }")))
|
165
165
|
void __wasm_import_rb_js_abi_host_js_value_to_integer(int32_t, int32_t);
|
166
166
|
void rb_js_abi_host_js_value_to_integer(rb_js_abi_host_js_abi_value_t value, rb_js_abi_host_raw_integer_t *ret0) {
|
167
167
|
|
@@ -173,7 +173,7 @@ void rb_js_abi_host_js_value_to_integer(rb_js_abi_host_js_abi_value_t value, rb_
|
|
173
173
|
variant.tag = (int32_t) (*((uint8_t*) (ptr + 0)));
|
174
174
|
switch ((int32_t) variant.tag) {
|
175
175
|
case 0: {
|
176
|
-
variant.val.
|
176
|
+
variant.val.as_float = *((double*) (ptr + 8));
|
177
177
|
break;
|
178
178
|
}
|
179
179
|
case 1: {
|
@@ -35,11 +35,11 @@ extern "C"
|
|
35
35
|
typedef struct {
|
36
36
|
uint8_t tag;
|
37
37
|
union {
|
38
|
-
double
|
38
|
+
double as_float;
|
39
39
|
rb_js_abi_host_string_t bignum;
|
40
40
|
} val;
|
41
41
|
} rb_js_abi_host_raw_integer_t;
|
42
|
-
#define
|
42
|
+
#define RB_JS_ABI_HOST_RAW_INTEGER_AS_FLOAT 0
|
43
43
|
#define RB_JS_ABI_HOST_RAW_INTEGER_BIGNUM 1
|
44
44
|
void rb_js_abi_host_raw_integer_free(rb_js_abi_host_raw_integer_t *ptr);
|
45
45
|
typedef struct {
|
data/ext/js/depend
CHANGED
@@ -1,10 +1,17 @@
|
|
1
|
+
CLEANFILES += link.filelist
|
1
2
|
link.filelist:
|
2
3
|
echo $(foreach obj,$(OBJS),$(abspath $(obj))) > $@
|
4
|
+
echo $(EXTRA_OBJS) >> $@
|
5
|
+
echo -mexec-model=reactor >> $@
|
3
6
|
|
4
7
|
js.a: link.filelist
|
5
8
|
|
6
|
-
js-core.o: $(srcdir)/bindgen/rb-js-abi-host.h
|
9
|
+
js-core.o: $(srcdir)/bindgen/legacy/rb-js-abi-host.h
|
7
10
|
|
8
|
-
bindgen/%.o: $(srcdir)/bindgen/%.c
|
11
|
+
bindgen/legacy/%.o: $(srcdir)/bindgen/legacy/%.c
|
9
12
|
@mkdir -p "$(@D)"
|
10
|
-
$(CC) -c -I$(srcdir)/bindgen -o $@ $<
|
13
|
+
$(CC) -c -I$(srcdir)/bindgen/legacy -o $@ $<
|
14
|
+
|
15
|
+
bindgen/ext.o: $(srcdir)/bindgen/ext.c
|
16
|
+
@mkdir -p "$(@D)"
|
17
|
+
$(CC) -c -o $@ $<
|
data/ext/js/extconf.rb
CHANGED
@@ -1,3 +1,17 @@
|
|
1
1
|
require "mkmf"
|
2
|
-
$objs = %w[js-core.o
|
3
|
-
|
2
|
+
$objs = %w[js-core.o witapi-core.o]
|
3
|
+
|
4
|
+
use_component_model = enable_config("component-model", false)
|
5
|
+
$stderr.print "Building with component model: "
|
6
|
+
$stderr.puts use_component_model ? "\e[1;32myes\e[0m" : "\e[1;31mno\e[0m"
|
7
|
+
if use_component_model
|
8
|
+
$defs << "-DJS_ENABLE_COMPONENT_MODEL=1"
|
9
|
+
$objs << "bindgen/ext.o"
|
10
|
+
else
|
11
|
+
$objs << "bindgen/legacy/rb-js-abi-host.o"
|
12
|
+
$objs << "bindgen/legacy/rb-abi-guest.o"
|
13
|
+
end
|
14
|
+
create_makefile("js") do |mk|
|
15
|
+
mk << "EXTRA_OBJS = $(srcdir)/bindgen/ext_component_type.o\n" if use_component_model
|
16
|
+
mk
|
17
|
+
end
|
data/ext/js/js-core.c
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
#include "ruby.h"
|
4
4
|
|
5
|
-
#include "
|
5
|
+
#include "types.h"
|
6
6
|
|
7
7
|
// MARK: - Ruby extension
|
8
8
|
|
@@ -28,7 +28,7 @@ static VALUE rb_cJS_Error;
|
|
28
28
|
static ID i_to_js;
|
29
29
|
|
30
30
|
struct jsvalue {
|
31
|
-
|
31
|
+
rb_js_abi_host_own_js_abi_value_t abi;
|
32
32
|
};
|
33
33
|
|
34
34
|
static void jsvalue_mark(void *p) {}
|
@@ -57,7 +57,7 @@ static VALUE jsvalue_s_allocate(VALUE klass) {
|
|
57
57
|
return obj;
|
58
58
|
}
|
59
59
|
|
60
|
-
static VALUE jsvalue_s_new(
|
60
|
+
static VALUE jsvalue_s_new(rb_js_abi_host_own_js_abi_value_t abi) {
|
61
61
|
struct jsvalue *p;
|
62
62
|
VALUE obj = TypedData_Make_Struct(rb_cJS_Object, struct jsvalue,
|
63
63
|
&jsvalue_data_type, p);
|
@@ -296,14 +296,15 @@ static VALUE _rb_js_obj_call(int argc, VALUE *argv, VALUE obj) {
|
|
296
296
|
rb_raise(rb_eTypeError, "argument %d is not a JS::Object like object",
|
297
297
|
1 + i);
|
298
298
|
}
|
299
|
-
abi_args.ptr[i - 1] = check_jsvalue(arg)->abi;
|
299
|
+
abi_args.ptr[i - 1] = borrow_js_value(check_jsvalue(arg)->abi);
|
300
300
|
rb_ary_push(rv_args, arg);
|
301
301
|
}
|
302
302
|
|
303
303
|
if (rb_block_given_p()) {
|
304
304
|
VALUE proc = rb_block_proc();
|
305
305
|
VALUE rb_proc = _rb_js_try_convert(rb_mJS, proc);
|
306
|
-
abi_args.ptr[function_arguments_count - 1] =
|
306
|
+
abi_args.ptr[function_arguments_count - 1] =
|
307
|
+
borrow_js_value(check_jsvalue(rb_proc)->abi);
|
307
308
|
rb_ary_push(rv_args, rb_proc);
|
308
309
|
}
|
309
310
|
|
@@ -332,7 +333,7 @@ static VALUE _rb_js_obj_typeof(VALUE obj) {
|
|
332
333
|
struct jsvalue *p = check_jsvalue(obj);
|
333
334
|
rb_js_abi_host_string_t ret0;
|
334
335
|
rb_js_abi_host_js_value_typeof(p->abi, &ret0);
|
335
|
-
return rb_str_new(ret0.ptr, ret0.len);
|
336
|
+
return rb_str_new((const char *)ret0.ptr, ret0.len);
|
336
337
|
}
|
337
338
|
|
338
339
|
/*
|
@@ -352,7 +353,7 @@ static VALUE _rb_js_obj_to_s(VALUE obj) {
|
|
352
353
|
struct jsvalue *p = check_jsvalue(obj);
|
353
354
|
rb_js_abi_host_string_t ret0;
|
354
355
|
rb_js_abi_host_js_value_to_string(p->abi, &ret0);
|
355
|
-
return rb_utf8_str_new(ret0.ptr, ret0.len);
|
356
|
+
return rb_utf8_str_new((const char *)ret0.ptr, ret0.len);
|
356
357
|
}
|
357
358
|
|
358
359
|
/*
|
@@ -376,10 +377,10 @@ static VALUE _rb_js_obj_to_i(VALUE obj) {
|
|
376
377
|
rb_js_abi_host_raw_integer_t ret;
|
377
378
|
rb_js_abi_host_js_value_to_integer(p->abi, &ret);
|
378
379
|
VALUE result;
|
379
|
-
if (ret.tag ==
|
380
|
-
result = rb_dbl2big(ret.val.
|
380
|
+
if (ret.tag == RB_JS_ABI_HOST_RAW_INTEGER_AS_FLOAT) {
|
381
|
+
result = rb_dbl2big(ret.val.as_float);
|
381
382
|
} else {
|
382
|
-
result = rb_cstr2inum(ret.val.bignum.ptr, 10);
|
383
|
+
result = rb_cstr2inum((const char *)ret.val.bignum.ptr, 10);
|
383
384
|
}
|
384
385
|
rb_js_abi_host_raw_integer_free(&ret);
|
385
386
|
return result;
|
@@ -406,10 +407,10 @@ static VALUE _rb_js_obj_to_f(VALUE obj) {
|
|
406
407
|
rb_js_abi_host_raw_integer_t ret;
|
407
408
|
VALUE result;
|
408
409
|
rb_js_abi_host_js_value_to_integer(p->abi, &ret);
|
409
|
-
if (ret.tag ==
|
410
|
-
result = rb_float_new(ret.val.
|
410
|
+
if (ret.tag == RB_JS_ABI_HOST_RAW_INTEGER_AS_FLOAT) {
|
411
|
+
result = rb_float_new(ret.val.as_float);
|
411
412
|
} else {
|
412
|
-
result = DBL2NUM(rb_cstr_to_dbl(ret.val.bignum.ptr, FALSE));
|
413
|
+
result = DBL2NUM(rb_cstr_to_dbl((const char *)ret.val.bignum.ptr, FALSE));
|
413
414
|
}
|
414
415
|
rb_js_abi_host_raw_integer_free(&ret);
|
415
416
|
return result;
|
@@ -437,9 +438,14 @@ static VALUE _rb_js_import_from_js(VALUE obj) {
|
|
437
438
|
* Returns +obj+ wrapped by JS class RbValue.
|
438
439
|
*/
|
439
440
|
static VALUE _rb_js_obj_wrap(VALUE obj, VALUE wrapping) {
|
441
|
+
#if JS_ENABLE_COMPONENT_MODEL
|
442
|
+
rb_abi_stage_rb_value_to_js(wrapping);
|
443
|
+
return jsvalue_s_new(rb_js_abi_host_rb_object_to_js_rb_value());
|
444
|
+
#else
|
440
445
|
rb_abi_lend_object(wrapping);
|
441
446
|
return jsvalue_s_new(
|
442
447
|
rb_js_abi_host_rb_object_to_js_rb_value((uint32_t)wrapping));
|
448
|
+
#endif
|
443
449
|
}
|
444
450
|
|
445
451
|
/*
|
@@ -505,8 +511,13 @@ static VALUE _rb_js_false_to_js(VALUE obj) {
|
|
505
511
|
* Returns +self+ as a JS::Object.
|
506
512
|
*/
|
507
513
|
static VALUE _rb_js_proc_to_js(VALUE obj) {
|
514
|
+
#if JS_ENABLE_COMPONENT_MODEL
|
515
|
+
rb_abi_stage_rb_value_to_js(obj);
|
516
|
+
return jsvalue_s_new(ruby_js_js_runtime_proc_to_js_function());
|
517
|
+
#else
|
508
518
|
rb_abi_lend_object(obj);
|
509
519
|
return jsvalue_s_new(rb_js_abi_host_proc_to_js_function((uint32_t)obj));
|
520
|
+
#endif
|
510
521
|
}
|
511
522
|
|
512
523
|
/*
|
data/ext/js/types.h
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
#ifndef RUBY_WASM_JS_TYPES_H
|
2
|
+
#define RUBY_WASM_JS_TYPES_H
|
3
|
+
|
4
|
+
#ifdef JS_ENABLE_COMPONENT_MODEL
|
5
|
+
# include "bindgen/ext.h"
|
6
|
+
|
7
|
+
typedef exports_ruby_js_ruby_runtime_borrow_rb_abi_value_t
|
8
|
+
rb_abi_guest_rb_abi_value_t;
|
9
|
+
typedef exports_ruby_js_ruby_runtime_own_rb_abi_value_t
|
10
|
+
rb_abi_guest_own_rb_abi_value_t;
|
11
|
+
typedef exports_ruby_js_ruby_runtime_list_borrow_rb_abi_value_t
|
12
|
+
rb_abi_guest_list_rb_abi_value_t;
|
13
|
+
typedef exports_ruby_js_ruby_runtime_own_rb_iseq_t rb_abi_guest_rb_iseq_t;
|
14
|
+
typedef exports_ruby_js_ruby_runtime_rb_id_t rb_abi_guest_rb_id_t;
|
15
|
+
typedef exports_ruby_js_ruby_runtime_tuple2_own_rb_abi_value_s32_t
|
16
|
+
rb_abi_guest_tuple2_rb_abi_value_s32_t;
|
17
|
+
|
18
|
+
typedef ruby_js_js_runtime_borrow_js_abi_value_t rb_js_abi_host_js_abi_value_t;
|
19
|
+
typedef ruby_js_js_runtime_own_js_abi_value_t rb_js_abi_host_own_js_abi_value_t;
|
20
|
+
typedef ruby_js_js_runtime_js_abi_result_t rb_js_abi_host_js_abi_result_t;
|
21
|
+
typedef ruby_js_js_runtime_list_borrow_js_abi_value_t
|
22
|
+
rb_js_abi_host_list_js_abi_value_t;
|
23
|
+
typedef ruby_js_js_runtime_raw_integer_t rb_js_abi_host_raw_integer_t;
|
24
|
+
|
25
|
+
typedef ext_string_t rb_abi_guest_string_t;
|
26
|
+
typedef ext_string_t rb_js_abi_host_string_t;
|
27
|
+
typedef ext_list_string_t rb_abi_guest_list_string_t;
|
28
|
+
|
29
|
+
# define borrow_js_value(v) ruby_js_js_runtime_borrow_js_abi_value(v)
|
30
|
+
|
31
|
+
# define rb_abi_guest_rb_abi_value_new(val) \
|
32
|
+
exports_ruby_js_ruby_runtime_rb_abi_value_new(val)
|
33
|
+
# define rb_abi_guest_rb_abi_value_get(val) (*(val))
|
34
|
+
# define rb_abi_guest_rb_iseq_new(val) \
|
35
|
+
exports_ruby_js_ruby_runtime_rb_iseq_new(val)
|
36
|
+
# define rb_js_abi_host_js_value_equal(lhs, rhs) \
|
37
|
+
ruby_js_js_runtime_js_value_equal(borrow_js_value(lhs), \
|
38
|
+
borrow_js_value(rhs))
|
39
|
+
# define rb_js_abi_host_reflect_apply(target, this, args, ret) \
|
40
|
+
ruby_js_js_runtime_reflect_apply(borrow_js_value(target), \
|
41
|
+
borrow_js_value(this), args, ret)
|
42
|
+
# define rb_js_abi_host_js_value_to_integer(value, ret) \
|
43
|
+
ruby_js_js_runtime_js_value_to_integer(borrow_js_value(value), ret)
|
44
|
+
# define rb_js_abi_host_export_js_value_to_host(value) \
|
45
|
+
ruby_js_js_runtime_export_js_value_to_host(borrow_js_value(value))
|
46
|
+
# define rb_js_abi_host_raw_integer_free(ptr) \
|
47
|
+
ruby_js_js_runtime_raw_integer_free(ptr)
|
48
|
+
# define rb_js_abi_host_rb_object_to_js_rb_value(val) \
|
49
|
+
ruby_js_js_runtime_rb_object_to_js_rb_value(val)
|
50
|
+
# define rb_js_abi_host_int_to_js_number(val) \
|
51
|
+
ruby_js_js_runtime_int_to_js_number(val)
|
52
|
+
# define rb_js_abi_host_float_to_js_number(val) \
|
53
|
+
ruby_js_js_runtime_float_to_js_number(val)
|
54
|
+
# define rb_js_abi_host_string_to_js_string(val) \
|
55
|
+
ruby_js_js_runtime_string_to_js_string(val)
|
56
|
+
# define rb_js_abi_host_bool_to_js_bool(val) \
|
57
|
+
ruby_js_js_runtime_bool_to_js_bool(val)
|
58
|
+
# define rb_js_abi_host_import_js_value_from_host() \
|
59
|
+
ruby_js_js_runtime_import_js_value_from_host()
|
60
|
+
# define rb_js_abi_host_js_value_to_string(value, ret) \
|
61
|
+
ruby_js_js_runtime_js_value_to_string(borrow_js_value(value), ret)
|
62
|
+
# define rb_js_abi_host_js_value_typeof(value, ret) \
|
63
|
+
ruby_js_js_runtime_js_value_typeof(borrow_js_value(value), ret)
|
64
|
+
# define rb_js_abi_host_js_value_strictly_equal(lhs, rhs) \
|
65
|
+
ruby_js_js_runtime_js_value_strictly_equal(borrow_js_value(lhs), \
|
66
|
+
borrow_js_value(rhs))
|
67
|
+
# define rb_js_abi_host_reflect_get(target, key, ret) \
|
68
|
+
ruby_js_js_runtime_reflect_get(borrow_js_value(target), key, ret)
|
69
|
+
# define rb_js_abi_host_reflect_set(target, key, value, ret) \
|
70
|
+
ruby_js_js_runtime_reflect_set(borrow_js_value(target), key, \
|
71
|
+
borrow_js_value(value), ret)
|
72
|
+
# define rb_js_abi_host_global_this() ruby_js_js_runtime_global_this()
|
73
|
+
# define rb_js_abi_host_instance_of(value, klass) \
|
74
|
+
ruby_js_js_runtime_instance_of(borrow_js_value(value), \
|
75
|
+
borrow_js_value(klass))
|
76
|
+
# define rb_js_abi_host_is_js(value) \
|
77
|
+
ruby_js_js_runtime_is_js(borrow_js_value(value))
|
78
|
+
# define rb_js_abi_host_eval_js(code, ret) \
|
79
|
+
ruby_js_js_runtime_eval_js(code, ret)
|
80
|
+
|
81
|
+
# define rb_js_abi_host_js_abi_value_free(ptr) \
|
82
|
+
ruby_js_js_runtime_js_abi_value_drop_own(*ptr)
|
83
|
+
|
84
|
+
# define RB_JS_ABI_HOST_RAW_INTEGER_AS_FLOAT \
|
85
|
+
RUBY_JS_JS_RUNTIME_RAW_INTEGER_AS_FLOAT
|
86
|
+
# define RB_JS_ABI_HOST_JS_ABI_RESULT_FAILURE \
|
87
|
+
RUBY_JS_JS_RUNTIME_JS_ABI_RESULT_FAILURE
|
88
|
+
|
89
|
+
void rb_abi_stage_rb_value_to_js(VALUE value);
|
90
|
+
|
91
|
+
#else
|
92
|
+
# include "bindgen/legacy/rb-abi-guest.h"
|
93
|
+
# include "bindgen/legacy/rb-js-abi-host.h"
|
94
|
+
typedef rb_abi_guest_rb_abi_value_t rb_abi_guest_own_rb_abi_value_t;
|
95
|
+
typedef rb_js_abi_host_js_abi_value_t rb_js_abi_host_own_js_abi_value_t;
|
96
|
+
|
97
|
+
# define borrow_js_value(v) v
|
98
|
+
|
99
|
+
# define rb_js_abi_host_js_abi_value_free(ptr) \
|
100
|
+
rb_js_abi_host_js_abi_value_free(ptr)
|
101
|
+
#endif
|
102
|
+
|
103
|
+
#endif // RUBY_WASM_JS_TYPES_H
|
@@ -17,7 +17,7 @@ static VALUE rb_eval_string_value_protect(VALUE str, int *pstate) {
|
|
17
17
|
|
18
18
|
#define TAG_NONE 0
|
19
19
|
|
20
|
-
#include "
|
20
|
+
#include "types.h"
|
21
21
|
|
22
22
|
__attribute__((import_module("asyncify"), import_name("start_unwind"))) void
|
23
23
|
asyncify_start_unwind(void *buf);
|
@@ -55,10 +55,18 @@ void *rb_wasm_handle_fiber_unwind(void (**new_fiber_entry)(void *, void *),
|
|
55
55
|
|
56
56
|
static bool rb_should_prohibit_rewind = false;
|
57
57
|
|
58
|
+
#ifdef JS_ENABLE_COMPONENT_MODEL
|
59
|
+
void rb_wasm_throw_prohibit_rewind_exception(const char *c_msg,
|
60
|
+
size_t msg_len) {
|
61
|
+
ext_string_t message = {.ptr = (uint8_t *)c_msg, .len = msg_len};
|
62
|
+
ruby_js_js_runtime_throw_prohibit_rewind_exception(&message);
|
63
|
+
}
|
64
|
+
#else
|
58
65
|
__attribute__((import_module("rb-js-abi-host"),
|
59
66
|
import_name("rb_wasm_throw_prohibit_rewind_exception")))
|
60
67
|
__attribute__((noreturn)) void
|
61
68
|
rb_wasm_throw_prohibit_rewind_exception(const char *c_msg, size_t msg_len);
|
69
|
+
#endif
|
62
70
|
|
63
71
|
#define RB_WASM_CHECK_REWIND_PROHIBITED(msg) \
|
64
72
|
/* \
|
@@ -122,7 +130,7 @@ rb_wasm_throw_prohibit_rewind_exception(const char *c_msg, size_t msg_len);
|
|
122
130
|
{ \
|
123
131
|
new_args = alloca(sizeof(char *) * ((list)->len + 1)); \
|
124
132
|
for (size_t i = 0; i < (list)->len; i++) { \
|
125
|
-
new_args[i] = (list)->ptr[i].ptr;
|
133
|
+
new_args[i] = (char *)((list)->ptr[i].ptr); \
|
126
134
|
} \
|
127
135
|
}
|
128
136
|
|
@@ -176,6 +184,16 @@ void rb_abi_guest_rb_abi_value_dtor(void *data) {
|
|
176
184
|
assert(state == TAG_NONE && "rb_abi_guest_rb_abi_value_dtor_internal failed");
|
177
185
|
}
|
178
186
|
|
187
|
+
#ifdef JS_ENABLE_COMPONENT_MODEL
|
188
|
+
void exports_ruby_js_ruby_runtime_rb_iseq_destructor(
|
189
|
+
exports_ruby_js_ruby_runtime_rb_iseq_t *rep) {}
|
190
|
+
|
191
|
+
void exports_ruby_js_ruby_runtime_rb_abi_value_destructor(
|
192
|
+
exports_ruby_js_ruby_runtime_rb_abi_value_t *rep) {
|
193
|
+
rb_abi_guest_rb_abi_value_dtor((void *)rep);
|
194
|
+
}
|
195
|
+
#endif
|
196
|
+
|
179
197
|
// MARK: - Exported functions
|
180
198
|
// NOTE: Assume that callers always pass null terminated string by
|
181
199
|
// rb_abi_guest_string_t
|
@@ -209,7 +227,7 @@ rb_abi_guest_ruby_options(rb_abi_guest_list_string_t *args) {
|
|
209
227
|
}
|
210
228
|
|
211
229
|
void rb_abi_guest_ruby_script(rb_abi_guest_string_t *name) {
|
212
|
-
RB_WASM_LIB_RT(ruby_script(name->ptr))
|
230
|
+
RB_WASM_LIB_RT(ruby_script((const char *)name->ptr))
|
213
231
|
}
|
214
232
|
|
215
233
|
void rb_abi_guest_ruby_init_loadpath(void) {
|
@@ -220,7 +238,7 @@ void rb_abi_guest_rb_eval_string_protect(
|
|
220
238
|
rb_abi_guest_string_t *str, rb_abi_guest_tuple2_rb_abi_value_s32_t *ret0) {
|
221
239
|
VALUE retval;
|
222
240
|
RB_WASM_DEBUG_LOG("rb_eval_string_protect: str = %s\n", str->ptr);
|
223
|
-
VALUE utf8_str = rb_utf8_str_new(str->ptr, str->len);
|
241
|
+
VALUE utf8_str = rb_utf8_str_new((const char *)str->ptr, str->len);
|
224
242
|
RB_WASM_LIB_RT(retval = rb_eval_string_value_protect(utf8_str, &ret0->f1));
|
225
243
|
RB_WASM_DEBUG_LOG("rb_eval_string_protect: retval = %p, state = %d\n",
|
226
244
|
(void *)retval, ret0->f1);
|
@@ -266,10 +284,10 @@ void rb_abi_guest_rb_funcallv_protect(
|
|
266
284
|
}
|
267
285
|
|
268
286
|
rb_abi_guest_rb_id_t rb_abi_guest_rb_intern(rb_abi_guest_string_t *name) {
|
269
|
-
return rb_intern(name->ptr);
|
287
|
+
return rb_intern((const char *)name->ptr);
|
270
288
|
}
|
271
289
|
|
272
|
-
|
290
|
+
rb_abi_guest_own_rb_abi_value_t rb_abi_guest_rb_errinfo(void) {
|
273
291
|
VALUE retval;
|
274
292
|
RB_WASM_LIB_RT(retval = rb_errinfo());
|
275
293
|
rb_abi_lend_object(retval);
|
@@ -322,4 +340,118 @@ bool rb_abi_guest_rb_set_should_prohibit_rewind(bool value) {
|
|
322
340
|
return old;
|
323
341
|
}
|
324
342
|
|
343
|
+
static VALUE rb_abi_export_stage = Qnil;
|
344
|
+
static rb_abi_guest_own_rb_abi_value_t rb_abi_export_rb_value_to_js(void) {
|
345
|
+
VALUE staged = rb_abi_export_stage;
|
346
|
+
rb_abi_export_stage = Qnil;
|
347
|
+
rb_abi_lend_object(staged);
|
348
|
+
return rb_abi_guest_rb_abi_value_new((void *)staged);
|
349
|
+
}
|
350
|
+
|
351
|
+
void rb_abi_stage_rb_value_to_js(VALUE value) {
|
352
|
+
assert(rb_abi_export_stage == Qnil &&
|
353
|
+
"rb_abi_stage_rb_value_to_js: stage is not empty!?");
|
354
|
+
rb_abi_export_stage = value;
|
355
|
+
}
|
356
|
+
|
357
|
+
#ifdef JS_ENABLE_COMPONENT_MODEL
|
358
|
+
|
359
|
+
extern void __wasm_call_ctors(void);
|
360
|
+
static inline void __wasm_call_ctors_if_needed(void) {
|
361
|
+
static bool __wasm_call_ctors_done = false;
|
362
|
+
if (!__wasm_call_ctors_done) {
|
363
|
+
__wasm_call_ctors_done = true;
|
364
|
+
__wasm_call_ctors();
|
365
|
+
|
366
|
+
__attribute__((weak)) extern void __wasi_vfs_rt_init(void);
|
367
|
+
if (__wasi_vfs_rt_init) {
|
368
|
+
__wasi_vfs_rt_init();
|
369
|
+
}
|
370
|
+
}
|
371
|
+
}
|
372
|
+
|
373
|
+
// Exported Functions from `ruby:js/ruby-runtime`
|
374
|
+
void exports_ruby_js_ruby_runtime_ruby_show_version(void) {
|
375
|
+
__wasm_call_ctors_if_needed();
|
376
|
+
rb_abi_guest_ruby_show_version();
|
377
|
+
}
|
378
|
+
void exports_ruby_js_ruby_runtime_ruby_init(void) {
|
379
|
+
__wasm_call_ctors_if_needed();
|
380
|
+
rb_abi_guest_ruby_init();
|
381
|
+
}
|
382
|
+
void exports_ruby_js_ruby_runtime_ruby_sysinit(ext_list_string_t *args) {
|
383
|
+
__wasm_call_ctors_if_needed();
|
384
|
+
rb_abi_guest_ruby_sysinit(args);
|
385
|
+
}
|
386
|
+
exports_ruby_js_ruby_runtime_own_rb_iseq_t
|
387
|
+
exports_ruby_js_ruby_runtime_ruby_options(ext_list_string_t *args) {
|
388
|
+
__wasm_call_ctors_if_needed();
|
389
|
+
return rb_abi_guest_ruby_options(args);
|
390
|
+
}
|
391
|
+
void exports_ruby_js_ruby_runtime_ruby_script(ext_string_t *name) {
|
392
|
+
__wasm_call_ctors_if_needed();
|
393
|
+
rb_abi_guest_ruby_script(name);
|
394
|
+
}
|
395
|
+
void exports_ruby_js_ruby_runtime_ruby_init_loadpath(void) {
|
396
|
+
__wasm_call_ctors_if_needed();
|
397
|
+
rb_abi_guest_ruby_init_loadpath();
|
398
|
+
}
|
399
|
+
void exports_ruby_js_ruby_runtime_rb_eval_string_protect(
|
400
|
+
ext_string_t *str,
|
401
|
+
exports_ruby_js_ruby_runtime_tuple2_own_rb_abi_value_s32_t *ret) {
|
402
|
+
__wasm_call_ctors_if_needed();
|
403
|
+
rb_abi_guest_rb_eval_string_protect(str, ret);
|
404
|
+
}
|
405
|
+
void exports_ruby_js_ruby_runtime_rb_funcallv_protect(
|
406
|
+
exports_ruby_js_ruby_runtime_borrow_rb_abi_value_t recv,
|
407
|
+
exports_ruby_js_ruby_runtime_rb_id_t mid,
|
408
|
+
exports_ruby_js_ruby_runtime_list_borrow_rb_abi_value_t *args,
|
409
|
+
exports_ruby_js_ruby_runtime_tuple2_own_rb_abi_value_s32_t *ret) {
|
410
|
+
__wasm_call_ctors_if_needed();
|
411
|
+
rb_abi_guest_rb_funcallv_protect(recv, mid, args, ret);
|
412
|
+
}
|
413
|
+
exports_ruby_js_ruby_runtime_rb_id_t
|
414
|
+
exports_ruby_js_ruby_runtime_rb_intern(ext_string_t *name) {
|
415
|
+
__wasm_call_ctors_if_needed();
|
416
|
+
return rb_abi_guest_rb_intern(name);
|
417
|
+
}
|
418
|
+
exports_ruby_js_ruby_runtime_own_rb_abi_value_t
|
419
|
+
exports_ruby_js_ruby_runtime_rb_errinfo(void) {
|
420
|
+
__wasm_call_ctors_if_needed();
|
421
|
+
return rb_abi_guest_rb_errinfo();
|
422
|
+
}
|
423
|
+
void exports_ruby_js_ruby_runtime_rb_clear_errinfo(void) {
|
424
|
+
__wasm_call_ctors_if_needed();
|
425
|
+
rb_abi_guest_rb_clear_errinfo();
|
426
|
+
}
|
427
|
+
void exports_ruby_js_ruby_runtime_rstring_ptr(
|
428
|
+
exports_ruby_js_ruby_runtime_borrow_rb_abi_value_t value,
|
429
|
+
ext_string_t *ret) {
|
430
|
+
__wasm_call_ctors_if_needed();
|
431
|
+
rb_abi_guest_rstring_ptr(value, ret);
|
432
|
+
}
|
433
|
+
void exports_ruby_js_ruby_runtime_rb_vm_bugreport(void) {
|
434
|
+
__wasm_call_ctors_if_needed();
|
435
|
+
rb_abi_guest_rb_vm_bugreport();
|
436
|
+
}
|
437
|
+
bool exports_ruby_js_ruby_runtime_rb_gc_enable(void) {
|
438
|
+
__wasm_call_ctors_if_needed();
|
439
|
+
return rb_abi_guest_rb_gc_enable();
|
440
|
+
}
|
441
|
+
bool exports_ruby_js_ruby_runtime_rb_gc_disable(void) {
|
442
|
+
__wasm_call_ctors_if_needed();
|
443
|
+
return rb_abi_guest_rb_gc_disable();
|
444
|
+
}
|
445
|
+
bool exports_ruby_js_ruby_runtime_rb_set_should_prohibit_rewind(
|
446
|
+
bool new_value) {
|
447
|
+
__wasm_call_ctors_if_needed();
|
448
|
+
return rb_abi_guest_rb_set_should_prohibit_rewind(new_value);
|
449
|
+
}
|
450
|
+
exports_ruby_js_ruby_runtime_own_rb_abi_value_t
|
451
|
+
exports_ruby_js_ruby_runtime_export_rb_value_to_js(void) {
|
452
|
+
__wasm_call_ctors_if_needed();
|
453
|
+
return rb_abi_export_rb_value_to_js();
|
454
|
+
}
|
455
|
+
#endif
|
456
|
+
|
325
457
|
void Init_witapi(void) {}
|