5b2969fe7cad193485001a29b5ac3917ec8fde24
[platform/framework/web/lwnode.git] /
1 #ifndef __WASM_V8_LOWLEVEL_HH
2 #define __WASM_V8_LOWLEVEL_HH
3
4 #include "v8.h"
5
6 namespace v8 {
7 namespace wasm {
8
9 auto object_isolate(v8::Local<v8::Object>) -> v8::Isolate*;
10 auto object_isolate(const v8::Persistent<v8::Object>&) -> v8::Isolate*;
11
12 auto object_is_module(v8::Local<v8::Object>) -> bool;
13 auto object_is_instance(v8::Local<v8::Object>) -> bool;
14 auto object_is_func(v8::Local<v8::Object>) -> bool;
15 auto object_is_global(v8::Local<v8::Object>) -> bool;
16 auto object_is_table(v8::Local<v8::Object>) -> bool;
17 auto object_is_memory(v8::Local<v8::Object>) -> bool;
18 auto object_is_error(v8::Local<v8::Object>) -> bool;
19
20 auto foreign_new(v8::Isolate*, void*) -> v8::Local<v8::Value>;
21 auto foreign_get(v8::Local<v8::Value>) -> void*;
22
23 auto managed_new(v8::Isolate*, void*, void (*)(void*)) -> v8::Local<v8::Value>;
24 auto managed_get(v8::Local<v8::Value>) -> void*;
25
26 enum val_kind_t { I32, I64, F32, F64, ANYREF = 128, FUNCREF };
27 auto func_type_param_arity(v8::Local<v8::Object> global) -> uint32_t;
28 auto func_type_result_arity(v8::Local<v8::Object> global) -> uint32_t;
29 auto func_type_param(v8::Local<v8::Object> global, size_t) -> val_kind_t;
30 auto func_type_result(v8::Local<v8::Object> global, size_t) -> val_kind_t;
31
32 auto global_type_content(v8::Local<v8::Object> global) -> val_kind_t;
33 auto global_type_mutable(v8::Local<v8::Object> global) -> bool;
34
35 auto table_type_min(v8::Local<v8::Object> table) -> uint32_t;
36 auto table_type_max(v8::Local<v8::Object> table) -> uint32_t;
37
38 auto memory_type_min(v8::Local<v8::Object> memory) -> uint32_t;
39 auto memory_type_max(v8::Local<v8::Object> memory) -> uint32_t;
40
41 auto module_binary_size(v8::Local<v8::Object> module) -> size_t;
42 auto module_binary(v8::Local<v8::Object> module) -> const char*;
43 auto module_serialize_size(v8::Local<v8::Object> module) -> size_t;
44 auto module_serialize(v8::Local<v8::Object> module, char*, size_t) -> bool;
45 auto module_deserialize(v8::Isolate*, const char*, size_t, const char*, size_t) -> v8::MaybeLocal<v8::Object>;
46
47 auto instance_module(v8::Local<v8::Object> instance) -> v8::Local<v8::Object>;
48 auto instance_exports(v8::Local<v8::Object> instance) -> v8::Local<v8::Object>;
49
50 enum extern_kind_t { EXTERN_FUNC, EXTERN_GLOBAL, EXTERN_TABLE, EXTERN_MEMORY };
51 auto extern_kind(v8::Local<v8::Object> external) -> extern_kind_t;
52
53 auto func_instance(v8::Local<v8::Function>) -> v8::Local<v8::Object>;
54
55 auto global_get_i32(v8::Local<v8::Object> global) -> int32_t;
56 auto global_get_i64(v8::Local<v8::Object> global) -> int64_t;
57 auto global_get_f32(v8::Local<v8::Object> global) -> float;
58 auto global_get_f64(v8::Local<v8::Object> global) -> double;
59 auto global_get_ref(v8::Local<v8::Object> global) -> v8::Local<v8::Value>;
60 void global_set_i32(v8::Local<v8::Object> global, int32_t);
61 void global_set_i64(v8::Local<v8::Object> global, int64_t);
62 void global_set_f32(v8::Local<v8::Object> global, float);
63 void global_set_f64(v8::Local<v8::Object> global, double);
64 void global_set_ref(v8::Local<v8::Object> global, v8::Local<v8::Value>);
65
66 auto table_get(v8::Local<v8::Object> table, size_t index) -> v8::MaybeLocal<v8::Value>;
67 auto table_set(v8::Local<v8::Object> table, size_t index, v8::Local<v8::Value>) -> bool;
68 auto table_size(v8::Local<v8::Object> table) -> size_t;
69 auto table_grow(v8::Local<v8::Object> table, size_t delta, v8::Local<v8::Value>) -> bool;
70
71 auto memory_data(v8::Local<v8::Object> memory) -> char*;
72 auto memory_data_size(v8::Local<v8::Object> memory)-> size_t;
73 auto memory_size(v8::Local<v8::Object> memory) -> uint32_t;
74 auto memory_grow(v8::Local<v8::Object> memory, uint32_t delta) -> bool;
75
76 }  // namespace wasm
77 }  // namespace v8
78
79 #endif  // #define __WASM_V8_LOWLEVEL_HH