@@ -99,53 +99,7 @@ char *printValue(StackValue *v) {
99
99
}
100
100
101
101
StackValue *Proxy::readRFCArgs (Block *func, uint8_t *data) {
102
- if (func->type ->param_count == 0 ) {
103
- printf (" ProxyFunc %" PRIu32 " takes no arg\n " , func->fidx );
104
- return nullptr ;
105
- }
106
-
107
- auto *args = new StackValue[func->type ->param_count ];
108
- uint32_t *params = func->type ->params ;
109
- for (uint32_t i = 0 ; i < func->type ->param_count ; i++) {
110
- args[i].value .uint64 = 0 ; // init whole union to 0
111
- args[i].value_type = params[i];
112
-
113
- switch (params[i]) {
114
- case I32: {
115
- memcpy (&args[i].value .uint32 , data, sizeof (uint32_t ));
116
- data += sizeof (uint32_t );
117
- printf (" arg %" PRIu32 " : i32 value %" PRIu32 " \n " , i,
118
- args[i].value .uint32 );
119
- break ;
120
- }
121
- case F32: {
122
- memcpy (&args[i].value .f32 , data, sizeof (float ));
123
- data += sizeof (float );
124
- printf (" arg %" PRIu32 " : F32 value %.7f \n " , i,
125
- args[i].value .f32 );
126
- break ;
127
- }
128
- case I64: {
129
- memcpy (&args[i].value .uint64 , data, sizeof (uint64_t ));
130
- data += sizeof (uint64_t );
131
- printf (" arg %" PRIu32 " : I64 value %" PRIu64 " \n " , i,
132
- args[i].value .uint64 );
133
- break ;
134
- }
135
- case F64: {
136
- memcpy (&args[i].value .f64 , data, sizeof (double ));
137
- data += sizeof (double );
138
- printf (" arg %" PRIu32 " : f64 value %.7f \n " , i,
139
- args[i].value .f64 );
140
- break ;
141
- }
142
- default : {
143
- FATAL (" incorrect argument type: %" PRIu32 " \n " , params[i]);
144
- break ;
145
- }
146
- }
147
- }
148
- return args;
102
+ return readArgs (*func->type , data);
149
103
}
150
104
151
105
void Proxy::setupCalleeArgs (Module *m, RFC *callee) {
0 commit comments