diff options
Diffstat (limited to 'src/rt/rust_upcall.cpp')
| -rw-r--r-- | src/rt/rust_upcall.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/rt/rust_upcall.cpp b/src/rt/rust_upcall.cpp index 1a0d4f8c0b0..7fb6bc4c84d 100644 --- a/src/rt/rust_upcall.cpp +++ b/src/rt/rust_upcall.cpp @@ -315,9 +315,7 @@ upcall_mark(rust_task *task, void* ptr) { return 0; } -extern "C" CDECL rust_str * -upcall_new_str(rust_task *task, char const *s, size_t fill) { - LOG_UPCALL_ENTRY(task); +rust_str *make_str(rust_task *task, char const *s, size_t fill) { rust_dom *dom = task->dom; size_t alloc = next_power_of_two(sizeof(rust_str) + fill); void *mem = task->malloc(alloc); @@ -332,6 +330,20 @@ upcall_new_str(rust_task *task, char const *s, size_t fill) { return st; } +extern "C" CDECL rust_str * +upcall_new_str(rust_task *task, char const *s, size_t fill) { + LOG_UPCALL_ENTRY(task); + + return make_str(task, s, fill); +} + +extern "C" CDECL rust_str * +upcall_dup_str(rust_task *task, rust_str *str) { + LOG_UPCALL_ENTRY(task); + + return make_str(task, (char const *)str->data, str->fill); +} + extern "C" CDECL rust_vec * upcall_new_vec(rust_task *task, size_t fill, type_desc *td) { LOG_UPCALL_ENTRY(task); |
