diff options
author | Kimplul <kimi.h.kuparinen@gmail.com> | 2024-07-14 16:34:58 +0300 |
---|---|---|
committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2024-07-14 16:34:58 +0300 |
commit | 679aefb63d364b2bc73c13b75fe5bee407822892 (patch) | |
tree | e7c8631aeda43d40f1d44e603f27a76d9e129f92 | |
parent | 4b3a6a072620b0b0a5ddc92ba615a4fea9964145 (diff) | |
download | posthaste-679aefb63d364b2bc73c13b75fe5bee407822892.tar.gz posthaste-679aefb63d364b2bc73c13b75fe5bee407822892.zip |
update ejit
-rw-r--r-- | Makefile | 2 | ||||
m--------- | deps/ejit | 0 | ||||
-rw-r--r-- | scripts/makefile | 5 | ||||
-rw-r--r-- | src/lower.c | 43 |
4 files changed, 28 insertions, 22 deletions
@@ -12,7 +12,7 @@ setup: deps "${POSTHASTE_SOURCES}" POSTHASTE_SOURCES := -CLEANUP := build deps.mk posthaste +CLEANUP := build deps.mk posthaste include src/source.mk diff --git a/deps/ejit b/deps/ejit -Subproject 0dd8d9d6f07201bcbbaa677b8bfa2db22723689 +Subproject 8e04d594e8d280e37651f9976be52e0052c9051 diff --git a/scripts/makefile b/scripts/makefile index 7f24989..3efa6d7 100644 --- a/scripts/makefile +++ b/scripts/makefile @@ -14,6 +14,11 @@ ASSERTFLAGS != [ "$(ASSERT)" != "0" ] \ && echo "-DASSERT=1" \ || echo +JIT ?= 1 +JITFLAGS != [ "$(JIT)" != "0" ] \ + && echo "-DJIT=1" \ + || echo "-DJIT=0" + DEPFLAGS = -MT $@ -MMD -MP -MF $@.d LINTFLAGS = -fsyntax-only PREPROCESS = -E diff --git a/src/lower.c b/src/lower.c index 15ce6d1..5e0e41e 100644 --- a/src/lower.c +++ b/src/lower.c @@ -220,8 +220,8 @@ static long escape_store_year(size_t argc, const struct ejit_arg args[argc]) unsigned month = 0; unsigned day = 0; - date_split(args[0].ul, NULL, &month, &day); - return date_from_numbers(args[1].ul, month, day); + date_split(args[0].u64, NULL, &month, &day); + return date_from_numbers(args[1].u64, month, day); } static void lower_store_year(struct fn *f, struct ast *base, struct ast* r) @@ -245,8 +245,8 @@ static long escape_store_month(size_t argc, const struct ejit_arg args[argc]) unsigned year = 0; unsigned day = 0; - date_split(args[0].ul, &year, NULL, &day); - return date_from_numbers(year, args[1].ul, day); + date_split(args[0].u64, &year, NULL, &day); + return date_from_numbers(year, args[1].u64, day); } static void lower_store_month(struct fn *f, struct ast *base, struct ast* r) @@ -270,8 +270,8 @@ static long escape_store_day(size_t argc, const struct ejit_arg args[argc]) unsigned year = 0; unsigned month = 0; - date_split(args[0].ul, &year, &month, NULL); - return date_from_numbers(year, month, args[1].ul); + date_split(args[0].u64, &year, &month, NULL); + return date_from_numbers(year, month, args[1].u64); } static void lower_store_day(struct fn *f, struct ast *base, struct ast* r) @@ -360,7 +360,7 @@ static void lower_return(struct fn *f, struct ast *n) { struct ast *expr = return_expr(n); lower(f, expr); - ejit_ret(f->f, reg(expr)); + ejit_retr(f->f, reg(expr)); n->l = null_loc(); } @@ -369,7 +369,7 @@ static long escape_load_weeknum(size_t argc, const struct ejit_arg args[argc]) assert(argc == 1); assert(args[0].type == ejit_type_from(TYPE_DATE)); - struct tm time = tm_from_date(args[0].ul); + struct tm time = tm_from_date(args[0].u64); return time.tm_yday / 7; } @@ -389,7 +389,7 @@ static long escape_load_weekday(size_t argc, const struct ejit_arg args[argc]) assert(argc == 1); assert(args[0].type == ejit_type_from(TYPE_DATE)); - struct tm time = tm_from_date(args[0].ul); + struct tm time = tm_from_date(args[0].u64); return time.tm_wday; } @@ -410,7 +410,7 @@ static long escape_load_year(size_t argc, const struct ejit_arg args[argc]) assert(args[0].type == ejit_type_from(TYPE_DATE)); unsigned year = 0; - date_split(args[0].ul, &year, NULL, NULL); + date_split(args[0].u64, &year, NULL, NULL); return year; } @@ -431,7 +431,7 @@ static long escape_load_month(size_t argc, const struct ejit_arg args[argc]) assert(args[0].type == ejit_type_from(TYPE_DATE)); unsigned month = 0; - date_split(args[0].ul, NULL, &month, NULL); + date_split(args[0].u64, NULL, &month, NULL); return month; } @@ -452,7 +452,7 @@ static long escape_load_day(size_t argc, const struct ejit_arg args[argc]) assert(args[0].type == ejit_type_from(TYPE_DATE)); unsigned day = 0; - date_split(args[0].ul, NULL, NULL, &day); + date_split(args[0].u64, NULL, NULL, &day); return day; } @@ -622,7 +622,7 @@ static long escape_print_date(size_t argc, const struct ejit_arg args[argc]) assert(args[0].type == ejit_type_from(TYPE_DATE)); char str[11] = {0}; - date_to_string(str, args[0].ul); + date_to_string(str, args[0].u64); printf("%s", str); return 0; } @@ -716,7 +716,7 @@ static long escape_date_add(size_t argc, const struct ejit_arg args[argc]) assert(argc == 2); assert(args[0].type == ejit_type_from(TYPE_DATE)); assert(args[1].type == ejit_type_from(TYPE_INT)); - return date_add(args[0].ul, args[1].l); + return date_add(args[0].u64, args[1].l); } static void lower_date_add(struct fn *f, struct ast *n) @@ -752,7 +752,7 @@ static long escape_date_sub(size_t argc, const struct ejit_arg args[argc]) assert(argc == 2); assert(args[0].type == ejit_type_from(TYPE_DATE)); assert(args[1].type == ejit_type_from(TYPE_INT)); - return date_sub(args[0].ul, args[1].l); + return date_sub(args[0].u64, args[1].l); } static void lower_date_sub(struct fn *f, struct ast *n) @@ -781,8 +781,8 @@ static long escape_date_diff(size_t argc, const struct ejit_arg args[argc]) assert(args[0].type == ejit_type_from(TYPE_DATE)); assert(args[1].type == ejit_type_from(TYPE_DATE)); - struct tm tm0 = tm_from_date((ph_date_t)args[0].ul); - struct tm tm1 = tm_from_date((ph_date_t)args[1].ul); + struct tm tm0 = tm_from_date((ph_date_t)args[0].u64); + struct tm tm1 = tm_from_date((ph_date_t)args[1].u64); time_t t0 = mktime(&tm0); time_t t1 = mktime(&tm1); @@ -995,9 +995,10 @@ static void lower_proc_def(struct ast *d) lower_list(f, proc_body(d)); if (d->t == TYPE_VOID) - ejit_ret_i(f->f, 0); + ejit_reti(f->f, 0); - ejit_compile_func(f->f, f->max_sp + 1, 0); + /* ph_date_t is inherently 64bit so we can't really use 32bit JIT */ + ejit_select_compile_func(f->f, f->max_sp + 1, 0, true, JIT); } static void lower_func_def(struct ast *d) @@ -1012,7 +1013,7 @@ static void lower_func_def(struct ast *d) lower_list(f, func_vars(d)); lower_list(f, func_body(d)); - ejit_compile_func(f->f, f->max_sp + 1, 0); + ejit_select_compile_func(f->f, f->max_sp + 1, 0, true, JIT); } struct fn *find_fn(size_t idx) @@ -1063,7 +1064,7 @@ int lower_ast(struct ast *tree) } } - ejit_compile_func(f->f, f->max_sp + 1, 0); + ejit_select_compile_func(f->f, f->max_sp + 1, 0, true, JIT); return 0; } |