From 00636e3155647f843fb1f8e8c981429feb8dd7f2 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Tue, 6 Dec 2011 21:14:00 -0800 Subject: [PATCH] rt: Convert log_type and cmp_type upcalls to shim form --- src/rt/rust_upcall.cpp | 49 +++++++++++++++++++++++++++++++++--------- 1 file changed, 39 insertions(+), 10 deletions(-) diff --git a/src/rt/rust_upcall.cpp b/src/rt/rust_upcall.cpp index c971119342c..22dc18982d5 100644 --- a/src/rt/rust_upcall.cpp +++ b/src/rt/rust_upcall.cpp @@ -344,6 +344,41 @@ upcall_s_rust_personality(s_rust_personality_args *args) { args->context); } +extern "C" void +shape_cmp_type(int8_t *result, const type_desc *tydesc, + const type_desc **subtydescs, uint8_t *data_0, + uint8_t *data_1, uint8_t cmp_type); + +struct s_cmp_type_args { + int8_t *result; + const type_desc *tydesc; + const type_desc **subtydescs; + uint8_t *data_0; + uint8_t *data_1; + uint8_t cmp_type; +}; + +extern "C" void +upcall_s_cmp_type(s_cmp_type_args *args) { + shape_cmp_type(args->result, args->tydesc, args->subtydescs, + args->data_0, args->data_1, args->cmp_type); +} + +extern "C" void +shape_log_type(const type_desc *tydesc, uint8_t *data, uint32_t level); + +struct s_log_type_args { + const type_desc *tydesc; + uint8_t *data; + uint32_t level; +}; + +extern "C" void +upcall_s_log_type(s_log_type_args *args) { + shape_log_type(args->tydesc, args->data, args->level); +} + + // ______________________________________________________________________________ // Upcalls in original format: deprecated and should be removed once snapshot // transitions them away. @@ -457,24 +492,18 @@ upcall_rust_personality(int version, return upcall_s_rust_personality(&args); } -extern "C" void -shape_cmp_type(int8_t *result, const type_desc *tydesc, - const type_desc **subtydescs, uint8_t *data_0, - uint8_t *data_1, uint8_t cmp_type); - extern "C" void upcall_cmp_type(int8_t *result, const type_desc *tydesc, const type_desc **subtydescs, uint8_t *data_0, uint8_t *data_1, uint8_t cmp_type) { - shape_cmp_type(result, tydesc, subtydescs, data_0, data_1, cmp_type); + s_cmp_type_args args = {result, tydesc, subtydescs, data_0, data_1, cmp_type}; + upcall_s_cmp_type(&args); } -extern "C" void -shape_log_type(const type_desc *tydesc, uint8_t *data, uint32_t level); - extern "C" void upcall_log_type(const type_desc *tydesc, uint8_t *data, uint32_t level) { - shape_log_type(tydesc, data, level); + s_log_type_args args = {tydesc, data, level}; + upcall_s_log_type(&args); } //