The initial implementation of Stacker has several deficiencies. If you're
interested, here are some things that could be implemented better:
@@ -1367,21 +1367,21 @@ interested, here are some things that could be implemented better:
program. Currently the stack is set to a fixed number which means programs
with large numbers of definitions might fail.
Enhance to run on 64-bit platforms like SPARC. Right now the size of a
- pointer on 64-bit machines will cause incorrect results because of the 32-bit
- size of a stack element currently supported. This feature was not implemented
- because LLVM needs a union type to be able to support the different sizes
- correctly (portably and efficiently).
+ pointer on 64-bit machines will cause incorrect results because of the
+ 32-bit size of a stack element currently supported. This feature was not
+ implemented because LLVM needs a union type to be able to support the
+ different sizes correctly (portably and efficiently).
Write an LLVM pass to optimize the use of the global stack. The code
emitted currently is somewhat wasteful. It gets cleaned up a lot by existing
passes but more could be done.
Add -O -O1 -O2 and -O3 optimization switches to the compiler driver to
allow LLVM optimization without using "opt."
-
Make the compiler driver use the LLVM linking facilities (with IPO) before
- depending on GCC to do the final link.
+
Make the compiler driver use the LLVM linking facilities (with IPO)
+ before depending on GCC to do the final link.
Clean up parsing. It doesn't handle errors very well.
Rearrange the StackerCompiler.cpp code to make better use of inserting
instructions before a block's terminating instruction. I didn't figure this
- technique out until I was nearly done with LLVM. As it is, its a bad example
+ technique out until I was nearly done with LLVM. As it is, its a bad example
of how to insert instructions!
Provide for I/O to arbitrary files instead of just stdin/stdout.
Write additional built-in words; with inspiration from FORTH