diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2025-04-16 00:09:57 -0400 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2025-04-16 00:09:57 -0400 |
| commit | a2d2916e3220ec333122afb9cdef0f5c1eda84f7 (patch) | |
| tree | d06b95f8d7bec5439eb804a3ff3045907a218d31 /src/compile.c | |
| parent | e5420471a7364a92521575e7abd3a29a9318001b (diff) | |
Fixes to get the compiler to build with -O3
Diffstat (limited to 'src/compile.c')
| -rw-r--r-- | src/compile.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/compile.c b/src/compile.c index 0a847093..5c153f87 100644 --- a/src/compile.c +++ b/src/compile.c @@ -1396,8 +1396,8 @@ static CORD _compile_statement(env_t *env, ast_t *ast) static int defer_id = 0; env_t *defer_env = fresh_scope(env); CORD code = CORD_EMPTY; - for (int64_t i = 1; i <= Table$length(closed_vars); i++) { - struct { const char *name; binding_t *b; } *entry = Table$entry(closed_vars, i); + for (int64_t i = 0; i < closed_vars.entries.length; i++) { + struct { const char *name; binding_t *b; } *entry = closed_vars.entries.data + closed_vars.entries.stride*i; if (entry->b->type->tag == ModuleType) continue; if (CORD_ncmp(entry->b->code, 0, "userdata->", 0, strlen("userdata->")) == 0) { @@ -2995,8 +2995,8 @@ CORD compile(env_t *env, ast_t *ast) Table_t closed_vars = get_closed_vars(env, lambda->args, ast); if (Table$length(closed_vars) > 0) { // Create a typedef for the lambda's closure userdata CORD def = "typedef struct {"; - for (int64_t i = 1; i <= Table$length(closed_vars); i++) { - struct { const char *name; binding_t *b; } *entry = Table$entry(closed_vars, i); + for (int64_t i = 0; i < closed_vars.entries.length; i++) { + struct { const char *name; binding_t *b; } *entry = closed_vars.entries.data + closed_vars.entries.stride*i; if (has_stack_memory(entry->b->type)) code_err(ast, "This function is holding onto a reference to ", type_to_str(entry->b->type), " stack memory in the variable `", entry->name, "`, but the function may outlive the stack memory"); @@ -3021,8 +3021,8 @@ CORD compile(env_t *env, ast_t *ast) userdata = "NULL"; } else { userdata = CORD_all("new(", name, "$userdata_t"); - for (int64_t i = 1; i <= Table$length(closed_vars); i++) { - struct { const char *name; binding_t *b; } *entry = Table$entry(closed_vars, i); + for (int64_t i = 0; i < closed_vars.entries.length; i++) { + struct { const char *name; binding_t *b; } *entry = closed_vars.entries.data + closed_vars.entries.stride*i; if (entry->b->type->tag == ModuleType) continue; binding_t *b = get_binding(env, entry->name); |
