aboutsummaryrefslogtreecommitdiff
path: root/src/interp/g-util.boot
diff options
context:
space:
mode:
Diffstat (limited to 'src/interp/g-util.boot')
-rw-r--r--src/interp/g-util.boot16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/interp/g-util.boot b/src/interp/g-util.boot
index 97519045..284a7e98 100644
--- a/src/interp/g-util.boot
+++ b/src/interp/g-util.boot
@@ -227,6 +227,9 @@ expandPeq ['%peq,x,y] ==
y = '%nil => ['NULL,expandToVMForm x]
['EQ,expandToVMForm x, expandToVMForm y]
+expandBefore? ['%before?,x,y] ==
+ ['GGREATER,expandToVMForm y,expandToVMForm x]
+
-- Integer operations
expandIneg ['%ineg,x] ==
x := expandToVMForm x
@@ -393,8 +396,8 @@ for x in [
++ Table of opcode-expander pairs.
for x in [
- ['%collect,:function expandCollect],
- ['%loop, :function expandLoop],
+ ['%collect, :function expandCollect],
+ ['%loop, :function expandLoop],
['%return, :function expandReturn],
['%igt, :function expandIgt],
@@ -410,11 +413,12 @@ for x in [
['%fneg, :function expandFneg],
['%fprec, :function expandFprec],
- ["%peq",:function expandPeq],
+ ['%peq, :function expandPeq],
+ ['%before?, :function expandBefore?],
- ["%bind",:function expandBind],
- ["%store",:function expandStore],
- ["%dynval",:function expandDynval]
+ ["%bind", :function expandBind],
+ ["%store", :function expandStore],
+ ["%dynval", :function expandDynval]
] repeat property(first x,"%Expander") := rest x
++ Return the expander of a middle-end opcode, or nil if there is none.