projects
/
ldk-java
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
22f5f42
)
Move TS Arrays to a single pointer
author
Matt Corallo
<git@bluematt.me>
Wed, 27 Jan 2021 03:20:52 +0000
(22:20 -0500)
committer
Matt Corallo
<git@bluematt.me>
Wed, 27 Jan 2021 03:20:52 +0000
(22:20 -0500)
typescript_strings.py
patch
|
blob
|
history
diff --git
a/typescript_strings.py
b/typescript_strings.py
index 0e13c8d6d5510dc106bf2c63940e6e6dd0de35e2..eb8d36b9b1876fe293fb764a157c6253960fba95 100644
(file)
--- a/
typescript_strings.py
+++ b/
typescript_strings.py
@@
-76,6
+76,7
@@
public static native long new_empty_slice_vec();
"""
self.c_file_pfx = """#include <rust_types.h>
"""
self.c_file_pfx = """#include <rust_types.h>
+#include "js-wasm.h"
#include <stdatomic.h>
#include <lightning.h>
#include <stdatomic.h>
#include <lightning.h>
@@
-196,10
+197,10
@@
_Static_assert(offsetof(LDKCVec_u8Z, datalen) == offsetof(LDKu8slice, datalen),
_Static_assert(sizeof(void*) == 4, "Pointers mut be 32 bits");
_Static_assert(sizeof(void*) == 4, "Pointers mut be 32 bits");
-typedef struct int64_tArray {
uint32_t len;int64_t *ptr;
} int64_tArray;
-typedef struct uint32_tArray {
uint32_t len;int32_t *ptr;
} uint32_tArray;
-typedef struct ptrArray {
uint32_t len;int32_t *ptr;
} ptrArray;
-typedef struct int8_tArray {
uint32_t len;int8_t *ptr;
} int8_tArray;
+typedef struct int64_tArray {
uint32_t *len; /* len + 1 is data */
} int64_tArray;
+typedef struct uint32_tArray {
uint32_t *len; /* len + 1 is data */
} uint32_tArray;
+typedef struct ptrArray {
uint32_t *len; /* len + 1 is data */
} ptrArray;
+typedef struct int8_tArray {
uint32_t *len; /* len + 1 is data */
} int8_tArray;
typedef struct jstring {} jstring;
jstring conv_owned_string(const char* _src) { jstring a; return a; }
typedef struct jstring {} jstring;
jstring conv_owned_string(const char* _src) { jstring a; return a; }
@@
-222,42
+223,42
@@
import * as bindings from '../bindings' // TODO: figure out location
self.result_c_ty = "uint32_t"
self.owned_str_to_c_call = ("conv_owned_string(", ")")
self.ptr_arr = "ptrArray"
self.result_c_ty = "uint32_t"
self.owned_str_to_c_call = ("conv_owned_string(", ")")
self.ptr_arr = "ptrArray"
- self.get_native_arr_len_call = ("", ".len")
+ self.get_native_arr_len_call = ("
*
", ".len")
def release_native_arr_ptr_call(self, ty_info, arr_var, arr_ptr_var):
return None
def create_native_arr_call(self, arr_len, ty_info):
if ty_info.c_ty == "int8_tArray":
def release_native_arr_ptr_call(self, ty_info, arr_var, arr_ptr_var):
return None
def create_native_arr_call(self, arr_len, ty_info):
if ty_info.c_ty == "int8_tArray":
- return "{ .len =
" + arr_len + ", .ptr = MALLOC(" + arr_len + "
, \"Native " + ty_info.c_ty + " Bytes\") }"
+ return "{ .len =
MALLOC(" + arr_len + " + sizeof(uint32_t)
, \"Native " + ty_info.c_ty + " Bytes\") }"
elif ty_info.c_ty == "int64_tArray":
elif ty_info.c_ty == "int64_tArray":
- return "{ .len =
" + arr_len + ", .ptr = MALLOC(" + arr_len + " * sizeof(int64
_t), \"Native " + ty_info.c_ty + " Bytes\") }"
+ return "{ .len =
MALLOC(" + arr_len + " * sizeof(int64_t) + sizeof(uint32
_t), \"Native " + ty_info.c_ty + " Bytes\") }"
elif ty_info.c_ty == "uint32_tArray":
elif ty_info.c_ty == "uint32_tArray":
- return "{ .len =
" + arr_len + ", .ptr = MALLOC(" + arr_len + " * sizeof(
int32_t), \"Native " + ty_info.c_ty + " Bytes\") }"
+ return "{ .len =
MALLOC(" + arr_len + " * sizeof(int32_t) + sizeof(u
int32_t), \"Native " + ty_info.c_ty + " Bytes\") }"
elif ty_info.c_ty == "ptrArray":
assert ty_info.subty is not None and ty_info.subty.c_ty.endswith("Array")
elif ty_info.c_ty == "ptrArray":
assert ty_info.subty is not None and ty_info.subty.c_ty.endswith("Array")
- return "{ .len =
" + arr_len + ", .ptr = MALLOC(" + arr_len + " * sizeof(
int32_t), \"Native Object Bytes\") }"
+ return "{ .len =
MALLOC(" + arr_len + " * sizeof(int32_t) + sizeof(u
int32_t), \"Native Object Bytes\") }"
else:
print("Need to create arr!", ty_info.c_ty)
return ty_info.c_ty
def set_native_arr_contents(self, arr_name, arr_len, ty_info):
if ty_info.c_ty == "int8_tArray":
else:
print("Need to create arr!", ty_info.c_ty)
return ty_info.c_ty
def set_native_arr_contents(self, arr_name, arr_len, ty_info):
if ty_info.c_ty == "int8_tArray":
- return ("memcpy(" + arr_name + ".
ptr
, ", ", " + arr_len + ")")
+ return ("memcpy(" + arr_name + ".
len + 1
, ", ", " + arr_len + ")")
else:
assert False
def get_native_arr_contents(self, arr_name, dest_name, arr_len, ty_info, copy):
if ty_info.c_ty == "int8_tArray":
if copy:
else:
assert False
def get_native_arr_contents(self, arr_name, dest_name, arr_len, ty_info, copy):
if ty_info.c_ty == "int8_tArray":
if copy:
- return "memcpy(" + dest_name + ", " + arr_name + ".
ptr
, " + arr_len + ")"
+ return "memcpy(" + dest_name + ", " + arr_name + ".
len + 1
, " + arr_len + ")"
else:
else:
- return
arr_name + ".ptr
"
+ return
"(int8_t*)(" + arr_name + ".len + 1)
"
else:
else:
- return "(" + ty_info.subty.c_ty + "*)
" + arr_name + ".ptr
"
+ return "(" + ty_info.subty.c_ty + "*)
(" + arr_name + ".len + 1)
"
def get_native_arr_elem(self, arr_name, idxc, ty_info):
assert False # Only called if above is None
def get_native_arr_ptr_call(self, ty_info):
if ty_info.subty is not None:
def get_native_arr_elem(self, arr_name, idxc, ty_info):
assert False # Only called if above is None
def get_native_arr_ptr_call(self, ty_info):
if ty_info.subty is not None:
- return
("(" + ty_info.subty.c_ty + "*)", ".ptr")
- return
("(" + ty_info.c_ty + "*)", ".ptr")
+ return
"(" + ty_info.subty.c_ty + "*)(", ".len + 1)"
+ return
"(" + ty_info.c_ty + "*)(", ".len + 1)"
def get_native_arr_entry_call(self, ty_info, arr_name, idxc, entry_access):
return None
def cleanup_native_arr_ref_contents(self, arr_name, dest_name, arr_len, ty_info):
def get_native_arr_entry_call(self, ty_info, arr_name, idxc, entry_access):
return None
def cleanup_native_arr_ref_contents(self, arr_name, dest_name, arr_len, ty_info):