aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2024-07-14 16:34:58 +0300
committerKimplul <kimi.h.kuparinen@gmail.com>2024-07-14 16:34:58 +0300
commit679aefb63d364b2bc73c13b75fe5bee407822892 (patch)
treee7c8631aeda43d40f1d44e603f27a76d9e129f92
parent4b3a6a072620b0b0a5ddc92ba615a4fea9964145 (diff)
downloadposthaste-679aefb63d364b2bc73c13b75fe5bee407822892.tar.gz
posthaste-679aefb63d364b2bc73c13b75fe5bee407822892.zip
update ejit
-rw-r--r--Makefile2
m---------deps/ejit0
-rw-r--r--scripts/makefile5
-rw-r--r--src/lower.c43
4 files changed, 28 insertions, 22 deletions
diff --git a/Makefile b/Makefile
index f1a93cb..52150a5 100644
--- a/Makefile
+++ b/Makefile
@@ -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;
}