Commit Graph

41383 Commits

Author SHA1 Message Date
nickysn
378afb69b2 * optimization in tcg386.g_intf_wrapper: use the much more efficient case 1
for virtual methods, that use the register calling convention, but have at
  least one free register (i.e. not used as a parameter and not required to be
  preserved by the function)

git-svn-id: trunk@25830 -
2013-10-19 17:40:38 +00:00
nickysn
bfd31e7516 * optimizations in tcg8086.g_copyvaluepara_openarray:
- when elesize=2, avoid the SHR CX,1 instruction
  - use rep movsw even for odd elesizes, unless cs_opt_size is set

git-svn-id: trunk@25829 -
2013-10-19 15:07:55 +00:00
nickysn
aca22a59f7 * optimizations in tcg386.g_copyvaluepara_openarray in order to avoid the
second IMUL

git-svn-id: trunk@25828 -
2013-10-19 12:56:58 +00:00
nickysn
0f69362edd - rm LEA reg,imm from x86ins.dat, as that's not a valid x86 instruction,
using it in inline asm causes an internal error and removing it didn't show
  any regressions after running the testsuite on i386-linux.

git-svn-id: trunk@25827 -
2013-10-18 23:26:58 +00:00
nickysn
ff9ce0d20d * tcg8086.g_copyvaluepara_openarray improvements:
- use a_op_const_reg for the multiplication, instead of emitting directly
    instructions, which are 186+
  - avoid using IMUL twice, when the element size is not power of two
  - rm the system_i386_win32 leftovers

git-svn-id: trunk@25826 -
2013-10-18 22:35:51 +00:00
nickysn
8744fbefbb * add $parentfp as a first parameter on i8086, instead of last. This makes
regular non-nested procedures compatible with nested var procvars and fixes
  the tmaclocalprocparam*.pp tests on i8086

git-svn-id: trunk@25825 -
2013-10-18 21:37:06 +00:00
nickysn
7e7ab2fd4d * also handle nested proc ptrs in thlcgcpu.location_force_mem on i8086
git-svn-id: trunk@25824 -
2013-10-18 20:09:01 +00:00
nickysn
aab978fd19 * fixed test tmacprocvar for i8086 far code memory models
git-svn-id: trunk@25823 -
2013-10-18 17:23:25 +00:00
nickysn
38ad4974fd * i8086 medium/compact memory model fixes in tests tb0368,tb0423,tb0433,tb0433a,
tb0508 and tb0594

git-svn-id: trunk@25822 -
2013-10-18 15:43:14 +00:00
nickysn
7e3d041a11 * fixed test tb0309.pp for i8086 medium/compact memory models
git-svn-id: trunk@25821 -
2013-10-18 14:24:27 +00:00
nickysn
2a11883ad6 * fixed test units/system/tassignd.pp for i8086 medium/compact memory model
git-svn-id: trunk@25820 -
2013-10-18 14:18:36 +00:00
nickysn
f006476ff0 * fixed tests tprocvar1 and tprocvar3 for i8086 medium/compact memory model
git-svn-id: trunk@25819 -
2013-10-18 14:08:11 +00:00
nickysn
1795368cff * fixed test tchlp24 for i8086 medium/compact memory models
git-svn-id: trunk@25818 -
2013-10-18 13:28:10 +00:00
nickysn
ef51c8c5a2 * fixed the interface wrapper code generation for virtual methods on i8086 in
the medium memory model

git-svn-id: trunk@25817 -
2013-10-18 12:11:50 +00:00
nickysn
116d3746ca * fixed the stack offset to the self parameter when generating an interface
wrapper for a virtual method in tcg8086.g_intf_wrapper

git-svn-id: trunk@25816 -
2013-10-18 10:56:04 +00:00
marco
655428a467 * fix for mantis #25202 macpascal->macpas, patch by Thaddy.
git-svn-id: trunk@25815 -
2013-10-18 08:40:34 +00:00
sergei
8afc5b8ebf + Basic implementation of TXPathNSResolver class, Mantis #25183.
git-svn-id: trunk@25814 -
2013-10-18 08:36:19 +00:00
nickysn
5abeb67bff * the i8086 versions of InterLockedDecrement and InterLockedIncrement were
missing 'nostackframe'. Fixed.

git-svn-id: trunk@25813 -
2013-10-17 22:38:59 +00:00
nickysn
83aa50de74 * emit a far jmp in the interface wrapper on i8086 in far code memory models
git-svn-id: trunk@25812 -
2013-10-17 21:55:45 +00:00
nickysn
e0e4c04456 * the Ptr(sel,ofs) parameters changed from longint to word on i8086
git-svn-id: trunk@25811 -
2013-10-17 20:44:58 +00:00
nickysn
e0350d6f44 + added test tlea2.pp, which tests the LEA instruction with a 64-bit, 32-bit and
16-bit operand size on x86_64

git-svn-id: trunk@25810 -
2013-10-17 18:25:17 +00:00
nickysn
f30fddec53 * use 16-bit LEA directly in fpc_SetJmp, since that instruction is now supported
by the compiler

git-svn-id: trunk@25809 -
2013-10-17 17:33:55 +00:00
nickysn
4aa010eedc + support LEA with 16-bit operand size
git-svn-id: trunk@25808 -
2013-10-17 16:11:08 +00:00
Jonas Maebe
8dd956cbde * convert unicode/widestring constants to ansistring in resourcestring
declarations (mantis #25198)

git-svn-id: trunk@25807 -
2013-10-17 12:43:39 +00:00
nickysn
9be15583af * compilation of i8086 rtl fixed (seems like the fpc asm reader doesn't support 16-bit LEA, so hardcode it with DB for now)
git-svn-id: trunk@25806 -
2013-10-16 16:34:48 +00:00
nickysn
c9d021aeb8 * prefer to use ax in fpc_SetJmp for i8086, because it's faster on old CPUs (and makes no difference on newer CPUs)
git-svn-id: trunk@25805 -
2013-10-16 15:17:23 +00:00
nickysn
acbf73ec6e * stack frame eliminated also in fpc_longJmp for i8086
git-svn-id: trunk@25804 -
2013-10-16 13:50:18 +00:00
nickysn
0d24dcc21b * optimizations in fpc_SetJmp for i8086 by stack frame elimination and using SI instead of BP
git-svn-id: trunk@25803 -
2013-10-16 12:49:38 +00:00
nickysn
6596ba9036 * fixed the stack param offsets in Ptr, get_caller_addr and get_caller_frame after the stackframe elimination
git-svn-id: trunk@25802 -
2013-10-16 12:39:39 +00:00
nickysn
9bf3d1edff * optimized get_caller_addr and get_caller_frame on i8086 by eliminating the stack frame and using si, instead of bp
git-svn-id: trunk@25801 -
2013-10-16 12:35:05 +00:00
nickysn
aa9fe36fd3 * optimized version of Ptr() for i8086
git-svn-id: trunk@25800 -
2013-10-16 12:29:22 +00:00
nickysn
1c53d24743 * fixed typo (bug) in i8086 get_pc_addr. Use SP instead of BP to obtain the
return address.

git-svn-id: trunk@25799 -
2013-10-16 09:32:55 +00:00
nickysn
814e1297ed * tcg8086.g_adjust_self_value fixed for far code memory models
git-svn-id: trunk@25798 -
2013-10-15 23:34:18 +00:00
nickysn
60537a94ea * fixed test tintuint for i8086 medium memory model
git-svn-id: trunk@25797 -
2013-10-15 22:49:40 +00:00
nickysn
7ff97d9b7d * specify AT_DATA when refering to the 'RESSTR' symbols; among other things,
this fixes resourcestring constants in the i8086 memory model.

git-svn-id: trunk@25796 -
2013-10-15 22:06:16 +00:00
nickysn
ea1370a89e + implementated get_frame() and get_pc_addr() for the i8086
git-svn-id: trunk@25795 -
2013-10-15 20:16:13 +00:00
nickysn
bf07fc077b * specify AT_DATA in all references to the tobjectdef.vmt_mangledname symbol.
This fixes a lot of bugs, related to objects and classes in the i8086 medium
  memory model

git-svn-id: trunk@25794 -
2013-10-15 18:56:27 +00:00
nickysn
9b2b5a9565 * fixed a bug in fpc_SetJmp on i8086, that caused an incorrect value of sp to
be written in Jmp_buf.sp

git-svn-id: trunk@25793 -
2013-10-15 16:28:37 +00:00
nickysn
e160dab697 + added i8086 to the list of supported CPUs by FPC.exe
git-svn-id: trunk@25792 -
2013-10-15 13:29:51 +00:00
lacak
64df3503f3 fcl-db: dbase: rename new TLargeIntegerConstant to TLargeIntConstant to align naming with existing identifiers like etLargeInt and TLargeIntVariable
git-svn-id: trunk@25791 -
2013-10-15 13:00:58 +00:00
lacak
47404444b9 fcl-db: tests: minor formatting changes and fix Filter test for SQL datasets (do not close/open because edits are lost)
git-svn-id: trunk@25790 -
2013-10-15 06:18:50 +00:00
Jonas Maebe
a28917086b * updated *crt1* linking logic for OS X 10.8+:
o don't link by default
   o when generating profiling info, link gcrt1.o and specify "-no_new_main"
     linker parameter
  * don't use version-specific crt1.o files when targetting the
    iPhoneSimulator platform
  * don't link a crt1.o file when targetting iOS 6 or later
  (all info from
   http://llvm.org/svn/llvm-project/cfe/trunk/lib/Driver/Tools.cpp )

git-svn-id: trunk@25789 -
2013-10-14 21:38:38 +00:00
Jonas Maebe
2b1a077b98 + added now that the iOS SDK files aren't under NDA anymore
git-svn-id: trunk@25788 -
2013-10-14 19:29:39 +00:00
nickysn
3fb87cb529 * go32.map_device_in_memory_block result checking made consistent with all the
other functions in the go32 unit

git-svn-id: trunk@25787 -
2013-10-14 19:20:28 +00:00
nickysn
59f441269e + added function free_linear_addr_mapping to unit go32
git-svn-id: trunk@25786 -
2013-10-14 19:15:18 +00:00
nickysn
8bad012e83 + added functions get_page_attributes and set_page_attributes to unit go32
git-svn-id: trunk@25785 -
2013-10-14 18:46:44 +00:00
nickysn
1b36781dd8 + added function get_dpmi_version to unit go32
git-svn-id: trunk@25784 -
2013-10-14 18:42:05 +00:00
reiniero
46bdee3f52 * fcl-db: dbase/bufdataset expression parser: allow negative integers/large integers/floats; fixes issue #25168
git-svn-id: trunk@25783 -
2013-10-14 17:09:45 +00:00
reiniero
16f157d6db * fcl-db: tests: fix negative integer filter test from r25754; add subtest with integer constants
git-svn-id: trunk@25782 -
2013-10-14 17:07:14 +00:00
nickysn
aea281f4cc + added the include file dependency to vesa.inc and vesah.inc from unit graph on go32v2 and msdos
git-svn-id: trunk@25781 -
2013-10-14 14:56:45 +00:00