Joel Dice
68c3b241ce
handle sign extension of constants of various lengths
...
This is a generalization of 9918ea6 which handles 8-bit and 16-bit as
well as 32-bit values.
2013-04-22 21:15:49 -06:00
Joel Dice
d8729a7a8d
fix zero-extension of constants in x86 compiler
...
scalac may emit a ldc followed by an i2c, whereas javac does the
conversion (including zero extension if necessary) at compile time.
This commit ensures we handle the i2c case properly.
2013-04-22 19:00:54 -06:00
Joel Dice
9918ea6cdd
fix sign extension from constant to register on x86
...
scalac may generate a ldc followed by an l2i, whereas javac always
seems to condense this into a single ldc_w. The former exposed a bug
in the JIT compiler which we never hit with javac-generated bytecode.
2013-04-18 11:27:05 -06:00
Joel Dice
8c1419fb89
jump to target if JumpIfFloatNotEqual comparison is unordered
...
A dcmpl or dcmpg followed by an ifneq should take the branch if an NaN
is involved.
2013-04-04 20:02:49 -06:00
Joel Dice
b436bd460a
fix NaN handling in floating point comparisons
2013-04-03 16:19:33 -06:00
Joel Dice
54b560b149
fix Windows 32-bit bootimage build regression
2013-03-15 14:35:29 -06:00
Joshua Warner
add029ad3c
fix powerpc build
...
Evidently, the powerpc gcc compiler feels it necessary to #define powerpc to 1. Seriously? SERIOUSLY????
2013-02-28 16:41:44 -07:00
Joshua Warner
0b01dd565a
fix multiple-include-of-stdint errors
2013-02-28 15:57:09 -07:00
Joshua Warner
9327043bc5
Merge branch 'master' into wip
...
Conflicts:
makefile
src/codegen/arm/assembler.cpp
src/codegen/powerpc/assembler.cpp
src/codegen/x86/assembler.cpp
2013-02-27 19:27:07 -07:00
Joel Dice
5e2d00010b
move headers from src to src/avian
...
This is necessary to avoid name conflicts on various platforms. For
example, iOS has its own util.h, and Windows has a process.h. By
including our version as e.g. "avian/util.h", we avoid confusion with
the system version.
2013-02-27 13:33:29 -07:00
Joshua Warner
4d38873096
begin merging target assembler multimethod code
2013-02-24 22:38:58 -07:00
Joshua Warner
82eec28856
rename x86 Offset for consistency with arm and powerpc OffsetPromise
2013-02-24 20:48:06 -07:00
Joshua Warner
d2caf50772
fix debug build
2013-02-24 16:03:19 -07:00
Joshua Warner
4c8b593539
break Architecture out of Assembler
2013-02-23 23:03:01 -07:00
Joshua Warner
56625b89d8
group x86, arm, and powerpc target directories into 'target'
2013-02-23 22:47:52 -07:00
Joshua Warner
3d1ae1d517
fix include-what-you-use violations in x86 assembler
2013-02-23 22:29:58 -07:00
Joshua Warner
900b447e27
further break out powerpc assembler
2013-02-23 22:29:03 -07:00
Joshua Warner
73dda9c26e
begin splitting out powerpc assembler
2013-02-23 22:26:48 -07:00
Joshua Warner
22d6ed1bec
further split out arm assembler
2013-02-23 22:25:15 -07:00
Joshua Warner
fd59e1e08d
begin splitting out arm assembler
2013-02-22 20:47:56 -07:00
Joshua Warner
fe7bb5e640
Merge branch 'master' into wip
...
Conflicts:
makefile
2013-02-21 19:33:38 -07:00
Joshua Warner
a9e2984aaf
fix arm and powerpc build
2013-02-21 16:51:31 -07:00
Joshua Warner
1f0833252d
Merge branch 'master' into wip
...
Conflicts:
src/codegen/compiler/event.cpp
src/codegen/x86/assembler.cpp
src/common.h
2013-02-20 11:27:39 -07:00
Joshua Warner
52b2fd74ef
move math functions out of common.h, and into include/avian/util/math.h
2013-02-20 07:51:57 -07:00
Joshua Warner
b9e281612b
move runtime-array to include
2013-02-19 22:56:05 -07:00
Joshua Warner
263c0dee4f
move abort.h to include, add namespacing
2013-02-19 22:51:38 -07:00
Joshua Warner
987af120d8
move codegen headers to include/
2013-02-19 22:21:22 -07:00
Joshua Warner
984f987e03
further break out x86 assembler
2013-02-19 09:05:31 -07:00
Joshua Warner
61f03643e0
begin splitting up x86 assembler
2013-02-19 09:05:31 -07:00
Joshua Warner
49bfda3932
construct SiteMasks based on OperationMasks
2013-02-19 09:05:30 -07:00
Joshua Warner
4462b87f10
group typeMask and registerMask into OperandMask, for Architecture::plan
2013-02-19 09:05:30 -07:00
Joshua Warner
2db0303e2f
further compiler cleanup / organization
2013-02-13 23:23:07 -07:00
Joshua Warner
94ddb62b5f
move FrameSiteEvent out of compiler.cpp
2013-02-13 22:13:56 -07:00
Joshua Warner
be86d26512
move BoundsCheckEvent out of compiler.cpp
2013-02-13 22:13:56 -07:00
Joshua Warner
d00950458f
move JumpEvent out of compiler.cpp
2013-02-13 22:13:56 -07:00
Joshua Warner
65b7cf047c
move BranchEvent out of compiler.cpp
2013-02-13 22:13:56 -07:00
Joshua Warner
18e6f28ff4
move MemoryEvent out of compiler.cpp
2013-02-13 22:13:55 -07:00
Joshua Warner
9c102bc1a8
move OperationEvent out of compiler.cpp
2013-02-13 22:13:55 -07:00
Joshua Warner
70f9209a6e
move TranslateEvent out of compiler.cpp
2013-02-13 22:13:55 -07:00
Joshua Warner
8a61b38a01
move CombineEvent out of compiler.cpp
2013-02-13 22:13:55 -07:00
Joshua Warner
5ad0eb86d3
move MoveEvent out of compiler.cpp
2013-02-13 22:13:55 -07:00
Joshua Warner
165c77d772
move ReturnEvent out of compiler.cpp
2013-02-13 22:13:55 -07:00
Joshua Warner
0f6e098b69
move CallEvent out of compiler.cpp
2013-02-13 22:13:55 -07:00
Joshua Warner
6d265374ec
move Reads out of compile.cpp
2013-02-13 22:13:55 -07:00
Joshua Warner
b0abc4e1e5
further split up compiler.cpp
2013-02-13 22:13:55 -07:00
Joshua Warner
952cad2360
move site out of compiler.cpp
2013-02-13 22:13:55 -07:00
Joshua Warner
740886d58e
begin splitting up compiler.cpp
2013-02-13 22:13:55 -07:00
Joshua Warner
ef5e534e1e
begin moving register allocator out of compiler.cpp
2013-02-13 22:13:55 -07:00
Joshua Warner
34471e5d60
factor out assert / abort / expect implementations
2013-02-13 22:13:52 -07:00
Joshua Warner
d7f088c9e7
adjust package structure in codegen (vm -> avian::codegen and avian::codegen::lir)
...
The eventual intent with the lir namespace is to formalize some of
the important bits of Assembler interface, to be tested, debug-printed,
and potentially, serialized.
Also, group arguments to apply(...) in OperandInfos
2013-02-12 17:47:57 -07:00