54 Commits

Author SHA1 Message Date
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