-static inline uint32_t init_arr(size_t arr_len, size_t elem_size, const char *type_desc) {
- uint32_t *elems = (uint32_t*)MALLOC(arr_len * elem_size + 4, type_desc);
- elems[0] = arr_len;
- return (uint32_t)elems;
+DECL_ARR_TYPE(int64_t, int64_t);
+DECL_ARR_TYPE(int8_t, int8_t);
+DECL_ARR_TYPE(uint32_t, uint32_t);
+DECL_ARR_TYPE(void*, ptr);
+DECL_ARR_TYPE(char, char);
+typedef charArray jstring;
+
+static inline jstring str_ref_to_ts(const char* chars, size_t len) {
+ charArray arr = init_charArray(len);
+ memcpy(arr->elems, chars, len);
+ return arr;