aboutsummaryrefslogtreecommitdiff
path: root/src/compile
diff options
context:
space:
mode:
Diffstat (limited to 'src/compile')
-rw-r--r--src/compile/compile.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/compile/compile.c b/src/compile/compile.c
index 2c72b91..f6bf144 100644
--- a/src/compile/compile.c
+++ b/src/compile/compile.c
@@ -2070,12 +2070,11 @@ static size_t compile_fn_body(struct ejit_func *f, jit_state_t *j, void *arena,
size_t label = 0;
for (size_t ii = 0; ii < insns_len(&f->insns); ++ii) {
/* if we've hit a label, add it to our vector of label addresses */
- if (label < labels_len(&f->labels)) {
- if (*labels_at(&f->labels, label) == ii) {
- compile_label(j, ii, &addrs);
- resolve_relocs(j, &relocs, &addrs, ii);
- label++;
- }
+ while (label < labels_len(&f->labels)
+ && *labels_at(&f->labels, label) == ii) {
+ compile_label(j, ii, &addrs);
+ resolve_relocs(j, &relocs, &addrs, ii);
+ label++;
}
struct ejit_insn i = *insns_at(&f->insns, ii);