]> git.unchartedbackwaters.co.uk Git - francis/libjit.git/log
francis/libjit.git
21 years agoExpand floating-point instructions for ARM.
Rhys Weatherley [Mon, 7 Jun 2004 04:21:25 +0000 (04:21 +0000)]
Expand floating-point instructions for ARM.

21 years agoAdd floating-point instruction macros.
Rhys Weatherley [Mon, 7 Jun 2004 03:18:34 +0000 (03:18 +0000)]
Add floating-point instruction macros.

21 years agoUse "sigsetjmp" instead of "setjmp", because "setjmp" may
Rhys Weatherley [Mon, 7 Jun 2004 01:01:33 +0000 (01:01 +0000)]
Use "sigsetjmp" instead of "setjmp", because "setjmp" may
be a macro on some systems.

21 years agoFix a warning.
Rhys Weatherley [Mon, 7 Jun 2004 00:35:58 +0000 (00:35 +0000)]
Fix a warning.

21 years agoWork around a SIGFPE for sqrt(-1) on Alpha; it should return NaN instead.
Rhys Weatherley [Mon, 7 Jun 2004 00:20:40 +0000 (00:20 +0000)]
Work around a SIGFPE for sqrt(-1) on Alpha; it should return NaN instead.

21 years agoAlignment problem with "push_const_float32" on 64-bit platforms.
Rhys Weatherley [Mon, 7 Jun 2004 00:06:22 +0000 (00:06 +0000)]
Alignment problem with "push_const_float32" on 64-bit platforms.

21 years agoGen-apply fixes for Alpha platforms.
Rhys Weatherley [Sun, 6 Jun 2004 23:52:14 +0000 (23:52 +0000)]
Gen-apply fixes for Alpha platforms.

21 years agojit_flush_exec: flush cache lines properly if the start is not
Rhys Weatherley [Sun, 6 Jun 2004 04:59:57 +0000 (04:59 +0000)]
jit_flush_exec: flush cache lines properly if the start is not
on a line boundary.

21 years agoAdd some more instructions to the ARM back end; split some x86
Rhys Weatherley [Sun, 6 Jun 2004 04:53:08 +0000 (04:53 +0000)]
Add some more instructions to the ARM back end; split some x86
back end code out into common code for ARM to use as well.

21 years agoRecognise "t = a op b; a = t" and turn it into "a = a op b" to make
Rhys Weatherley [Wed, 2 Jun 2004 10:18:55 +0000 (10:18 +0000)]
Recognise "t = a op b; a = t" and turn it into "a = a op b" to make
it easier for back ends to recognise special idioms such as
increments and decrements.

21 years ago_jit_regs_load_value: if a value is in a global register and it is
Rhys Weatherley [Wed, 2 Jun 2004 07:29:47 +0000 (07:29 +0000)]
_jit_regs_load_value: if a value is in a global register and it is
not going to be destroyed by an instruction, then use the global
register as the operand.

21 years agoImplement a simple global register allocation policy, based on usage counts.
Rhys Weatherley [Wed, 2 Jun 2004 07:17:23 +0000 (07:17 +0000)]
Implement a simple global register allocation policy, based on usage counts.

21 years agoEnable the x86 back end by default on platforms where it makes sense,
Rhys Weatherley [Tue, 1 Jun 2004 10:20:41 +0000 (10:20 +0000)]
Enable the x86 back end by default on platforms where it makes sense,
and add the option "--enable-interpreter" to "configure".

21 years agoMore instruction selection rules for ARM.
Rhys Weatherley [Tue, 1 Jun 2004 09:55:54 +0000 (09:55 +0000)]
More instruction selection rules for ARM.

21 years agoFix some gcc 3.x compile warnings.
Rhys Weatherley [Tue, 1 Jun 2004 06:46:37 +0000 (06:46 +0000)]
Fix some gcc 3.x compile warnings.

21 years agoThrow exceptions correctly for "check_null".
Rhys Weatherley [Mon, 31 May 2004 11:24:49 +0000 (11:24 +0000)]
Throw exceptions correctly for "check_null".

21 years agoInline and optimize divisions for x86.
Rhys Weatherley [Mon, 31 May 2004 10:50:09 +0000 (10:50 +0000)]
Inline and optimize divisions for x86.

21 years agoOptimize multiplications for x86.
Rhys Weatherley [Mon, 31 May 2004 07:25:46 +0000 (07:25 +0000)]
Optimize multiplications for x86.

21 years agoFix a cpu vs non-cpu register problem in the floating-point
Rhys Weatherley [Sun, 30 May 2004 10:14:30 +0000 (10:14 +0000)]
Fix a cpu vs non-cpu register problem in the floating-point
"push" operations for x86.

21 years agoAdd "jit_insn_defer_pop_stack" and "jit_insn_flush_defer_pop",
Rhys Weatherley [Sun, 30 May 2004 09:05:05 +0000 (09:05 +0000)]
Add "jit_insn_defer_pop_stack" and "jit_insn_flush_defer_pop",
to defer the popping of function call arguments as long as possible.

21 years agoImprove instruction selection for floating-point "push" operations.
Rhys Weatherley [Sun, 30 May 2004 05:37:05 +0000 (05:37 +0000)]
Improve instruction selection for floating-point "push" operations.

21 years agoAnother small change.
Rhys Weatherley [Sun, 30 May 2004 03:00:26 +0000 (03:00 +0000)]
Another small change.

21 years agoSmall update to LLVM URL.
Rhys Weatherley [Sun, 30 May 2004 02:58:52 +0000 (02:58 +0000)]
Small update to LLVM URL.

21 years agojit_insn_convert: use intrinsic functions for conversions when the
Rhys Weatherley [Sun, 30 May 2004 02:24:16 +0000 (02:24 +0000)]
jit_insn_convert: use intrinsic functions for conversions when the
back end doesn't support the opcode.

21 years agoClarify the text that describes LLVM, at the request of Chris Lattner,
Rhys Weatherley [Sun, 30 May 2004 01:39:19 +0000 (01:39 +0000)]
Clarify the text that describes LLVM, at the request of Chris Lattner,
LLVM's author.

21 years agoStub out JIT_OP_RETURN_REG, which doesn't need any special handling for x86.
Rhys Weatherley [Sat, 29 May 2004 10:14:11 +0000 (10:14 +0000)]
Stub out JIT_OP_RETURN_REG, which doesn't need any special handling for x86.

21 years agoContinue the x86 back end; particularly byte/short stores.
Rhys Weatherley [Sat, 29 May 2004 09:44:51 +0000 (09:44 +0000)]
Continue the x86 back end; particularly byte/short stores.

21 years agoRelative loads and stores for x86.
Rhys Weatherley [Thu, 27 May 2004 04:36:30 +0000 (04:36 +0000)]
Relative loads and stores for x86.

21 years agodpas_type_identical: treat "float64" and "nfloat" as identical on
Rhys Weatherley [Thu, 27 May 2004 01:05:30 +0000 (01:05 +0000)]
dpas_type_identical: treat "float64" and "nfloat" as identical on
platforms whose "long double" type is the same as "double".

21 years agoSplit "detect_struct_conventions" up a bit more to (hopefully) prevent
Rhys Weatherley [Thu, 27 May 2004 00:49:53 +0000 (00:49 +0000)]
Split "detect_struct_conventions" up a bit more to (hopefully) prevent
problems under MacOSX; fix a bug in the generation of
"jit_apply_builder_align_regs" that affected ARM and PPC systems.

21 years agoAdd the beginnings of the instruction selector for ARM.
Rhys Weatherley [Wed, 26 May 2004 07:21:04 +0000 (07:21 +0000)]
Add the beginnings of the instruction selector for ARM.

21 years agoMore selection cases for the x86 back end.
Rhys Weatherley [Wed, 26 May 2004 03:47:38 +0000 (03:47 +0000)]
More selection cases for the x86 back end.

21 years agoAdd "jit_block_current_is_dead" to simplify testing if the last block
Rhys Weatherley [Wed, 26 May 2004 01:19:38 +0000 (01:19 +0000)]
Add "jit_block_current_is_dead" to simplify testing if the last block
is reachable or not, taking empty trailing blocks into account.

21 years agoAdd "jit_insn_new_block" to simplify creating a new block that
Rhys Weatherley [Wed, 26 May 2004 01:05:03 +0000 (01:05 +0000)]
Add "jit_insn_new_block" to simplify creating a new block that
doesn't have an explicit label.

21 years agoMore bug fixes for the x86 back end.
Rhys Weatherley [Wed, 26 May 2004 00:31:51 +0000 (00:31 +0000)]
More bug fixes for the x86 back end.

21 years agoFix some compile issues in the x86 native back end.
Rhys Weatherley [Tue, 25 May 2004 23:59:22 +0000 (23:59 +0000)]
Fix some compile issues in the x86 native back end.

21 years agoSelectors for call instructions.
Rhys Weatherley [Tue, 25 May 2004 10:24:10 +0000 (10:24 +0000)]
Selectors for call instructions.

21 years agoSelectors for branch instructions.
Rhys Weatherley [Tue, 25 May 2004 05:13:22 +0000 (05:13 +0000)]
Selectors for branch instructions.

21 years agoCheck in the initial instruction selector for x86 (incomplete).
Rhys Weatherley [Tue, 25 May 2004 04:09:23 +0000 (04:09 +0000)]
Check in the initial instruction selector for x86 (incomplete).

21 years agoAdd the "gen-sel" program to the tree, to assist with building
Rhys Weatherley [Tue, 25 May 2004 01:22:27 +0000 (01:22 +0000)]
Add the "gen-sel" program to the tree, to assist with building
native instruction selectors.

21 years agoAdd missing functions to the C++ API.
Rhys Weatherley [Mon, 24 May 2004 06:19:53 +0000 (06:19 +0000)]
Add missing functions to the C++ API.

21 years ago_jit_gen_start_block: set the address of the exception handler for
Rhys Weatherley [Mon, 24 May 2004 05:53:55 +0000 (05:53 +0000)]
_jit_gen_start_block: set the address of the exception handler for
interpreted code.

21 years agoRewrite the exception region routines to make them easier
Rhys Weatherley [Mon, 24 May 2004 04:19:42 +0000 (04:19 +0000)]
Rewrite the exception region routines to make them easier
to use from CLI and JVM style systems.

21 years agoModify the function call logic to use "setjmp" with native back ends.
Rhys Weatherley [Sat, 22 May 2004 02:08:07 +0000 (02:08 +0000)]
Modify the function call logic to use "setjmp" with native back ends.

21 years agoRename "jit_insn_move_blocks" to "jit_insn_move_blocks_to_end" and
Rhys Weatherley [Fri, 21 May 2004 23:32:32 +0000 (23:32 +0000)]
Rename "jit_insn_move_blocks" to "jit_insn_move_blocks_to_end" and
add a new function "jit_insn_move_blocks_to_start" for creating
initialization code.

21 years ago_jit_block_peephole_branch: don't allow conditional branches to cross
Rhys Weatherley [Fri, 21 May 2004 22:51:42 +0000 (22:51 +0000)]
_jit_block_peephole_branch: don't allow conditional branches to cross
an exception context boundary, because doing so will violate "finally"
semantics.

21 years agoUse computed goto's in the interpreter if supported by the underlying compiler.
Rhys Weatherley [Fri, 21 May 2004 05:55:49 +0000 (05:55 +0000)]
Use computed goto's in the interpreter if supported by the underlying compiler.

21 years agoAdd the "jit_insn_alloca" instruction.
Rhys Weatherley [Fri, 21 May 2004 04:58:27 +0000 (04:58 +0000)]
Add the "jit_insn_alloca" instruction.

21 years agoRemove the last remaining C++ code from libjit.so so that
Rhys Weatherley [Fri, 21 May 2004 04:24:24 +0000 (04:24 +0000)]
Remove the last remaining C++ code from libjit.so so that
it is now a pure C library.

21 years agoRedesign the exception handling mechanism to use "setjmp" rather
Rhys Weatherley [Fri, 21 May 2004 02:20:00 +0000 (02:20 +0000)]
Redesign the exception handling mechanism to use "setjmp" rather
than C++ exceptions.

21 years agoTreat dead blocks as empty when peepholing branches to the next block.
Rhys Weatherley [Fri, 21 May 2004 00:22:19 +0000 (00:22 +0000)]
Treat dead blocks as empty when peepholing branches to the next block.

21 years agoTreat dead blocks as empty when peepholing branches to the next block.
Rhys Weatherley [Thu, 20 May 2004 09:53:37 +0000 (09:53 +0000)]
Treat dead blocks as empty when peepholing branches to the next block.

21 years agoPerform peephole optimization of branches to branches before live
Rhys Weatherley [Thu, 20 May 2004 02:15:52 +0000 (02:15 +0000)]
Perform peephole optimization of branches to branches before live
variable analysis, so that the back ends don't need to worry
about jump threading.

21 years agoConvert constant conditional branches such as "if true goto L" into
Rhys Weatherley [Thu, 20 May 2004 01:24:54 +0000 (01:24 +0000)]
Convert constant conditional branches such as "if true goto L" into
unconditional branches.

21 years agoFix a compile bug.
Rhys Weatherley [Sat, 15 May 2004 10:33:02 +0000 (10:33 +0000)]
Fix a compile bug.

21 years agoFix a macro generation bug for Win32 systems.
Rhys Weatherley [Sat, 15 May 2004 10:21:34 +0000 (10:21 +0000)]
Fix a macro generation bug for Win32 systems.

21 years agoPut some infrastructure in place to support pluggable object models.
Rhys Weatherley [Fri, 14 May 2004 07:10:59 +0000 (07:10 +0000)]
Put some infrastructure in place to support pluggable object models.

21 years agoUpdating working version to "0.0.3".
Rhys Weatherley [Thu, 13 May 2004 04:59:52 +0000 (04:59 +0000)]
Updating working version to "0.0.3".

21 years agoUpdate version for the "0.0.2" release. r.0.0.2
Rhys Weatherley [Thu, 13 May 2004 03:24:17 +0000 (03:24 +0000)]
Update version for the "0.0.2" release.

21 years agoPut some infrastructure (incomplete) in place to support
Rhys Weatherley [Thu, 13 May 2004 02:45:48 +0000 (02:45 +0000)]
Put some infrastructure (incomplete) in place to support
array index expressions.

21 years agoAdd a README file to describe how to write test cases.
Rhys Weatherley [Wed, 12 May 2004 11:38:31 +0000 (11:38 +0000)]
Add a README file to describe how to write test cases.

21 years agoAdd the "--dont-fold" option to Dynamic Pascal, so that we can run
Rhys Weatherley [Wed, 12 May 2004 07:33:45 +0000 (07:33 +0000)]
Add the "--dont-fold" option to Dynamic Pascal, so that we can run
the test cases without folding.

21 years agoTest cases and bug fixes for mathematical operations.
Rhys Weatherley [Wed, 12 May 2004 06:58:45 +0000 (06:58 +0000)]
Test cases and bug fixes for mathematical operations.

21 years agoAdd builtins for mathematical operations.
Rhys Weatherley [Wed, 12 May 2004 04:52:03 +0000 (04:52 +0000)]
Add builtins for mathematical operations.

21 years agoMore coercion test cases and fixes.
Rhys Weatherley [Wed, 12 May 2004 03:34:34 +0000 (03:34 +0000)]
More coercion test cases and fixes.

21 years agojit_type_promote_int: promote ubyte and ushort to uint, not int.
Rhys Weatherley [Wed, 12 May 2004 03:00:17 +0000 (03:00 +0000)]
jit_type_promote_int: promote ubyte and ushort to uint, not int.

21 years agoCheck in some initial infrastructure for the dpas-based test suite.
Rhys Weatherley [Wed, 12 May 2004 01:11:17 +0000 (01:11 +0000)]
Check in some initial infrastructure for the dpas-based test suite.

21 years agodpas_parse_hex: ignore the 'H' on the end of a hexadecimal constant.
Rhys Weatherley [Wed, 12 May 2004 00:54:30 +0000 (00:54 +0000)]
dpas_parse_hex: ignore the 'H' on the end of a hexadecimal constant.

21 years agoIncorrect values for jit_max_int and jit_max_long.
Rhys Weatherley [Wed, 12 May 2004 00:53:09 +0000 (00:53 +0000)]
Incorrect values for jit_max_int and jit_max_long.

21 years agoResolve ea-based lvalues in operators.
Rhys Weatherley [Wed, 12 May 2004 00:30:02 +0000 (00:30 +0000)]
Resolve ea-based lvalues in operators.

21 years agoIfTail: fix a bug that caused the "then" case of an "if" to fall
Rhys Weatherley [Wed, 12 May 2004 00:22:30 +0000 (00:22 +0000)]
IfTail: fix a bug that caused the "then" case of an "if" to fall
through to the "else".

21 years agoAdd the "SameType" and "SameShape" builtins, to assist with unit
Rhys Weatherley [Wed, 12 May 2004 00:05:41 +0000 (00:05 +0000)]
Add the "SameType" and "SameShape" builtins, to assist with unit
testing type coercions.

21 years agoUse both .libs and non.libs versions of the so paths, because some
Rhys Weatherley [Tue, 11 May 2004 22:25:22 +0000 (22:25 +0000)]
Use both .libs and non.libs versions of the so paths, because some
versions of libtool add .libs implicitly and others don't.

21 years agoModify the autoconf/automake build system to use libtool.
Rhys Weatherley [Tue, 11 May 2004 10:23:04 +0000 (10:23 +0000)]
Modify the autoconf/automake build system to use libtool.

21 years agoReport errors for unimplemented expressions and statements,
Rhys Weatherley [Tue, 11 May 2004 06:52:19 +0000 (06:52 +0000)]
Report errors for unimplemented expressions and statements,
so that users are not "surprised" when things silently fail.

21 years ago_jit_regs_load_to_top_two: handle the case where the second value
Rhys Weatherley [Tue, 11 May 2004 06:16:32 +0000 (06:16 +0000)]
_jit_regs_load_to_top_two: handle the case where the second value
is on the stack but not the first.

21 years agoFix a bug that caused global variables in Dynamic Pascal
Rhys Weatherley [Tue, 11 May 2004 06:13:17 +0000 (06:13 +0000)]
Fix a bug that caused global variables in Dynamic Pascal
to be incorrectly allocated as locals.

21 years agoImplement the exception-handling opcodes for the interpreter.
Rhys Weatherley [Tue, 11 May 2004 04:58:12 +0000 (04:58 +0000)]
Implement the exception-handling opcodes for the interpreter.

21 years agoRound out the function call handling opcodes for the interpreter.
Rhys Weatherley [Tue, 11 May 2004 02:04:17 +0000 (02:04 +0000)]
Round out the function call handling opcodes for the interpreter.

21 years agoImplement the "New" and "Dispose" builtins.
Rhys Weatherley [Mon, 10 May 2004 04:47:23 +0000 (04:47 +0000)]
Implement the "New" and "Dispose" builtins.

21 years agoLoading and storing record fields in Dynamic Pascal.
Rhys Weatherley [Mon, 10 May 2004 03:43:11 +0000 (03:43 +0000)]
Loading and storing record fields in Dynamic Pascal.

21 years agoInterpreter code conversion for relative pointer and copy opcodes;
Rhys Weatherley [Mon, 10 May 2004 03:41:49 +0000 (03:41 +0000)]
Interpreter code conversion for relative pointer and copy opcodes;
fix some bugs in stack-based register allocation.

21 years agoUse "objdump" to dump compiled native code.
Rhys Weatherley [Sat, 8 May 2004 10:11:47 +0000 (10:11 +0000)]
Use "objdump" to dump compiled native code.

21 years agoMove the "JIT_TYPE_xxx" constants into the public headers and
Rhys Weatherley [Sat, 8 May 2004 02:31:32 +0000 (02:31 +0000)]
Move the "JIT_TYPE_xxx" constants into the public headers and
add "jit_type_get_kind" so that front end code can classify types quickly.

21 years agoMove the dynlib and C++ name mangling routines into a separate
Rhys Weatherley [Sat, 8 May 2004 01:36:41 +0000 (01:36 +0000)]
Move the dynlib and C++ name mangling routines into a separate
"jitdynamic" library, which will handle all of the cross-language
naming and dynamic invocation logic.

21 years agoRemove the locale-sensitive string comparison routines because
Rhys Weatherley [Sat, 8 May 2004 01:10:22 +0000 (01:10 +0000)]
Remove the locale-sensitive string comparison routines because
they aren't used in libjit, and front ends will normally have
their own functions for this purpose.

21 years agoAdd "_jit_cache_get_end_method", to allow the end of a method's code
Rhys Weatherley [Sat, 8 May 2004 00:42:18 +0000 (00:42 +0000)]
Add "_jit_cache_get_end_method", to allow the end of a method's code
to be located without explicit marking.

21 years agoCode generation for "for" loops.
Rhys Weatherley [Fri, 7 May 2004 04:01:04 +0000 (04:01 +0000)]
Code generation for "for" loops.

21 years agoImplement symbol relocations for the ELF binary reader.
Rhys Weatherley [Fri, 7 May 2004 01:43:12 +0000 (01:43 +0000)]
Implement symbol relocations for the ELF binary reader.

21 years agoAdd the "Flush" and "Terminate" builtins; fix a small bug in string scanning.
Rhys Weatherley [Thu, 6 May 2004 23:10:46 +0000 (23:10 +0000)]
Add the "Flush" and "Terminate" builtins; fix a small bug in string scanning.

21 years agoExecute the "main" method once a Dynamic Pascal program has been compiled;
Rhys Weatherley [Thu, 6 May 2004 22:41:15 +0000 (22:41 +0000)]
Execute the "main" method once a Dynamic Pascal program has been compiled;
fix some calling convention problems with "call_external".

21 years agoGet basic compilation working in Dynamic Pascal.
Rhys Weatherley [Thu, 6 May 2004 11:09:37 +0000 (11:09 +0000)]
Get basic compilation working in Dynamic Pascal.

21 years agoContinue the implementation of the C++ name mangling routines.
Rhys Weatherley [Mon, 3 May 2004 11:12:37 +0000 (11:12 +0000)]
Continue the implementation of the C++ name mangling routines.

21 years agoAdd the beginnings of a C++ name mangler, to help with extracting
Rhys Weatherley [Mon, 3 May 2004 06:32:22 +0000 (06:32 +0000)]
Add the beginnings of a C++ name mangler, to help with extracting
C++ symbols from dynamic shared libraries.

21 years agoTag the system-dependent types so that they can be distinguished from
Rhys Weatherley [Mon, 3 May 2004 01:38:36 +0000 (01:38 +0000)]
Tag the system-dependent types so that they can be distinguished from
the fixed-sized types when it is necessary to do so.

21 years agoAdd more instances of JIT_NOTHROW to the headers; add some special
Rhys Weatherley [Sun, 2 May 2004 23:41:50 +0000 (23:41 +0000)]
Add more instances of JIT_NOTHROW to the headers; add some special
meta tags for types.

21 years agoImprove the maintainability of the apply macros.
Rhys Weatherley [Sun, 2 May 2004 23:40:18 +0000 (23:40 +0000)]
Improve the maintainability of the apply macros.

21 years agoClean up the builder/parser macros and detect padding of
Rhys Weatherley [Sat, 1 May 2004 11:16:15 +0000 (11:16 +0000)]
Clean up the builder/parser macros and detect padding of
the floating-point registers.

21 years agoAdd array access instructions.
Rhys Weatherley [Sat, 1 May 2004 07:25:52 +0000 (07:25 +0000)]
Add array access instructions.

21 years agoImplement x86 code generation for some of the basic operators.
Rhys Weatherley [Sat, 1 May 2004 07:24:27 +0000 (07:24 +0000)]
Implement x86 code generation for some of the basic operators.