Skip to content

Commit fa2f1f7

Browse files
committed
extmod, ujson: Slight reduction in code size.
1 parent 89e4657 commit fa2f1f7

1 file changed

Lines changed: 17 additions & 14 deletions

File tree

extmod/modujson.c

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,11 @@ STATIC mp_obj_t mod_ujson_loads(mp_obj_t obj) {
5555
const char *top = s + len;
5656
vstr_t vstr;
5757
vstr_init(&vstr, 8);
58-
mp_obj_list_t *stack = NULL;
58+
mp_obj_list_t stack;
59+
stack.len = 0;
60+
stack.items = NULL;
5961
mp_obj_t stack_top = MP_OBJ_NULL;
60-
mp_obj_type_t *stack_top_type= NULL;
62+
mp_obj_type_t *stack_top_type = NULL;
6163
mp_obj_t stack_key = MP_OBJ_NULL;
6264
for (;;) {
6365
cont:
@@ -104,11 +106,11 @@ STATIC mp_obj_t mod_ujson_loads(mp_obj_t obj) {
104106
s++;
105107
c = *s;
106108
switch (c) {
107-
case 'b': c = '\b'; break;
108-
case 'f': c = '\f'; break;
109-
case 'n': c = '\n'; break;
110-
case 'r': c = '\r'; break;
111-
case 't': c = '\t'; break;
109+
case 'b': c = 0x08; break;
110+
case 'f': c = 0x0c; break;
111+
case 'n': c = 0x0a; break;
112+
case 'r': c = 0x0d; break;
113+
case 't': c = 0x09; break;
112114
case 'u': if (s + 4 >= top) { goto fail; } else { assert(0); } //vstr_add_char(&vstr, s[0]
113115
}
114116
}
@@ -158,12 +160,12 @@ STATIC mp_obj_t mod_ujson_loads(mp_obj_t obj) {
158160
// no object at all
159161
goto fail;
160162
}
161-
if (stack == NULL || stack->len == 0) {
163+
if (stack.len == 0) {
162164
// finished; compound object
163165
goto success;
164166
}
165-
stack->len -= 1;
166-
stack_top = stack->items[stack->len];
167+
stack.len -= 1;
168+
stack_top = stack.items[stack.len];
167169
stack_top_type = mp_obj_get_type(stack_top);
168170
goto cont;
169171
}
@@ -193,10 +195,11 @@ STATIC mp_obj_t mod_ujson_loads(mp_obj_t obj) {
193195
}
194196
}
195197
if (enter) {
196-
if (stack == NULL) {
197-
stack = mp_obj_new_list(1, &stack_top);
198+
if (stack.items == NULL) {
199+
mp_obj_list_init(&stack, 1);
200+
stack.items[0] = stack_top;
198201
} else {
199-
mp_obj_list_append(stack, stack_top);
202+
mp_obj_list_append(&stack, stack_top);
200203
}
201204
stack_top = next;
202205
stack_top_type = mp_obj_get_type(stack_top);
@@ -212,7 +215,7 @@ STATIC mp_obj_t mod_ujson_loads(mp_obj_t obj) {
212215
// unexpected chars
213216
goto fail;
214217
}
215-
if (stack != NULL && stack->len != 0) {
218+
if (stack.len != 0) {
216219
goto fail;
217220
}
218221
vstr_clear(&vstr);

0 commit comments

Comments
 (0)