Commit Graph

48214 Commits

Author SHA1 Message Date
nickysn
d0d940f119 * also declare Intel Nehalem and newer CPUs as 'IA64' in the NASM's 'CPU'
directive, because NASM still doesn't support anything newer than 'PRESCOTT'
  for its CPU directive, and 'IA64' is considered (internally by NASM) to be the
  highest CPU level.

git-svn-id: trunk@33137 -
2016-02-29 21:49:28 +00:00
nickysn
1a56a1a026 * make the asd_cpu directive (which is currently only implemented in the NASM
asm writer), when used with a cpu_none parameter, indicate no restrictions for
  the CPU type. Under NASM, this is achieved by specifying 'IA64' as the
  CPU type, since that's the highest CPU, supported by NASM's 'CPU' directive.

git-svn-id: trunk@33136 -
2016-02-29 21:44:55 +00:00
florian
73aeea73ed + VOpVMov2VOp optimization
git-svn-id: trunk@33135 -
2016-02-28 20:13:16 +00:00
florian
260ea81c82 * improve cse on record/array accesses
git-svn-id: trunk@33134 -
2016-02-28 18:44:45 +00:00
florian
8fe986ba11 + write also node complexity when dumping a node tree
git-svn-id: trunk@33133 -
2016-02-28 18:44:43 +00:00
florian
ce64d77256 * compilation fixed
git-svn-id: trunk@33132 -
2016-02-28 18:44:41 +00:00
sergei
17256e8387 * fpc_exp_real: replaced pushing immediate values on stack with Darwin-style PIC. This change increases performance on Intel E7200 almost twice. On AMD CPUs performance increase is not that large, but still noticeable.
git-svn-id: trunk@33131 -
2016-02-28 16:03:02 +00:00
michael
364abc3c07 * Author retracted erf/erfc functions due to copyright issues
git-svn-id: trunk@33130 -
2016-02-28 08:27:01 +00:00
michael
7d38224c65 * Do not activate client/server in design mode
git-svn-id: trunk@33129 -
2016-02-27 15:16:36 +00:00
michael
3da0f82995 * Add error functions erf/erfc, bug ID #29740
git-svn-id: trunk@33128 -
2016-02-27 14:59:51 +00:00
michael
9de8ad93ba * Make GetObjectNames public
git-svn-id: trunk@33127 -
2016-02-27 09:27:11 +00:00
michael
d37d99a24f * Move simpleipc samples to appropriate directory
git-svn-id: trunk@33126 -
2016-02-27 09:21:00 +00:00
michael
b7484d4a81 * Fix bug #29717
git-svn-id: trunk@33125 -
2016-02-27 09:19:31 +00:00
michael
532bf25233 * Add possibility to specify JSON options
git-svn-id: trunk@33124 -
2016-02-27 09:13:31 +00:00
nickysn
5576caada6 * handle the asd_cpu asd_cpu directive and keep track of the currently selected
CPU in the internal assembler

git-svn-id: trunk@33123 -
2016-02-27 00:50:01 +00:00
nickysn
e1f21fb1e3 + handle the asd_cpu directive (commented out, but without producing an internal
error) on all the remaining external assemblers, so it is safe to emit on all
  platforms

git-svn-id: trunk@33122 -
2016-02-26 20:50:41 +00:00
nickysn
178dab45d3 + added new asm directive 'asd_cpu' (specifies the CPU's instruction set) in the
compiler's internal assembly representation. It is not yet generated by the
  compiler and is only implemented properly in the NASM writer (but will
  eventually be implemented in the other assembler writers as well, including
  the internal assembler). In the future, it is intended to allow:
  1) catching instructions, generated by the compiler and not supported by the
     target CPU, due to a bug in the code generator
  2) allowing a different instruction set to be used in inline asm blocks (I'm
     planning a new directive for that - {$asmcpu XXX}), because the code
     generator will be able to switch target CPU in the middle of the asm output
     stream

git-svn-id: trunk@33121 -
2016-02-25 21:47:13 +00:00
Jonas Maebe
0deacf9fba * fixed missing range checks in r33056
* fixed pos(unicodestring) with a non-zero offset added in r33056 (fixes
    tests/test/units/system/tstring.pp)

git-svn-id: trunk@33120 -
2016-02-25 19:56:49 +00:00
Jeppe Johansen
03d4ada29e Use a temporary variable to avoid potential problems of overwriting the argument.
git-svn-id: trunk@33119 -
2016-02-25 10:38:18 +00:00
sergei
cc3e09ee46 * Handle possible relocation types in assembler reader using a single AS_RELTYPE token, rather than with individual tokens for each case. Since possible relocations are target-dependent, this will allow to support any amount of them without modifying the base tattreader class.
git-svn-id: trunk@33117 -
2016-02-23 21:28:46 +00:00
sergei
4e7c0d0670 * MIPS: removed ConvertCalljmp method. Testing shows that it never changes instructions.
* Treat numerical expressions in operands as constants, not as references by default. A reference cannot be represented by number alone on MIPS.

git-svn-id: trunk@33116 -
2016-02-23 21:19:46 +00:00
sergei
5f6442074a - MIPS,SPARC: removed method ReadSym which is never used.
- SPARC: also removed PowerPC-style parsing of address type (e.g. foo@hi). SPARC syntax is %hi(foo).

git-svn-id: trunk@33113 -
2016-02-23 12:49:18 +00:00
Jonas Maebe
356a5aff05 * apparently, Darwin/x86-64 also uses an opaque ISA pointer on OS X 10.11
-> assume it is always the case for non-fragile ABI platforms
    (mantis #29667)

git-svn-id: trunk@33112 -
2016-02-22 08:44:00 +00:00
svenbarth
94c0938edd Reverted accidentally committed inline if-then-else expression (committed in r33048 when I reverted the IfThen()... -.- )
git-svn-id: trunk@33111 -
2016-02-19 21:51:56 +00:00
svenbarth
25744dd3f1 Fix for Mantis #29609.
pexpr.pas, factor.factor_read_id:
  * don't use a cloadvmtaddrnode for accessing class properties in records

+ added test

git-svn-id: trunk@33110 -
2016-02-19 21:37:02 +00:00
svenbarth
1945bf64b4 Merged revision(s) 32302-32305, 32310 from branches/svenbarth/packages:
+ new stream class TCRangeStream that represents a substream of another stream while being also extendable
........
Extend tentryfile so that it can be opened from a stream in addition to a file

entfile.pas, tentryfile:
  + new method openstream() to open a readable tentryfile based on a stream
  + new method createstream() to open a writeable tentryfile based on a stream
  * adjust openfile() to use openstream()
  * adjust createfile() to use createstream()
........
A few extensions for tentryfile needed for package files

entfile.pas, tentryfile:
  + new property position to retrieve/control the position of the underlying stream (works also with tempclose()/tempopen())
  + new method substream() to retrieve a stream that goes from the specified offset with the specified length (-1 create a stream that is extendable, aka for writing)
  + new property stream to get the underlying stream directly; be careful when using this!
........
Extend tppumodule so that it can be opened from a stream as well.

fppu.pas, tppumodule:
  * rename openppu() to openppufile()
  + new method openppustream() to open a module based on a stream
  + put the common part of openppufile() and openppustream() into a new method openppu()
........
Fix compilation.

fppu.pas, tppumodule:
  * openppu: add parameter ppufiletime for printing the time of the file (only if filetime is not -1)
  * openppufile: pass the retrieve time of the PPU to openppu()
  * openppustream: pass -1 to openppu()
........

git-svn-id: trunk@33109 -
2016-02-19 17:13:58 +00:00
svenbarth
0226195272 With the TlsKey and SysInstance changes in revisions r33091 and r33107 respectively revisions r29009, r32580 and r32581 can be considered as merged.
git-svn-id: trunk@33108 -
2016-02-19 16:26:05 +00:00
svenbarth
af53fcb48c Adjust SysInstance so that it is correctly handled with the indirect entry information on Win32
win/sysosh.inc, TEntryInformationOS:
  + new field SysInstance that will hold the address to the main program's SysInstance variable
win32/system.pp:
  * rename SysInstance to FPCSysInstance and make it a PLongInt
  * OsSetupEntryInformation: setup FPCSysInstance
  * adjust initialization of SysInstance to use FPCSysInstance instead
win32/sysinit.inc:
  * SysInstance is no longer an external
  * initialize the OS.SysInstance field of EntryInformation
win64/system.pp:
  * add a FPCSysInstance that's a pointer to SysInstance
win/winres.inc:
  * SysInstance is now a pointer and has the same name on both Win32 and Win64

git-svn-id: trunk@33107 -
2016-02-19 16:22:20 +00:00
svenbarth
6d81760136 typinfo.pp, TTypeData:
* document the property data that follows for interface types (both COM and Corba)

git-svn-id: trunk@33106 -
2016-02-19 15:23:52 +00:00
svenbarth
8152d1185c Only write the IIDStr for Corba interfaces (it's completely redundant for COM ones)
ncgrtti.pas, TRTTIWriter.write_rtti_data.objectdef_rtti.objectdef_rtti_interface_full:
  * only set the ifHasStrGUID flag for Corba interfaces and if the IIDStr is not '' (which it is by default)
  * only write the IIDStr for Corba interfaces

git-svn-id: trunk@33105 -
2016-02-19 15:22:46 +00:00
Jonas Maebe
f3df3a7a67 + test for mantis #28668
git-svn-id: trunk@33104 -
2016-02-18 22:03:46 +00:00
Jonas Maebe
001417bb47 + test from mantis #28667
git-svn-id: trunk@33103 -
2016-02-18 21:58:34 +00:00
michael
2a33ee63bb * Forgot to commit, constant for TThread.ExecuteInthread
git-svn-id: trunk@33101 -
2016-02-17 07:46:56 +00:00
michael
789b80f702 * ExecuteInThread added
git-svn-id: trunk@33100 -
2016-02-16 18:59:35 +00:00
michael
ae3b0eab2a * Fix stringlist addstrings so virtual method is preserved (bug id 0029630)
git-svn-id: trunk@33099 -
2016-02-16 18:59:01 +00:00
michael
a7963d7877 * Fix bug #29506
git-svn-id: trunk@33098 -
2016-02-14 17:27:03 +00:00
Jeppe Johansen
1c0c944311 Added x86_64-embedded target. Patch from Benjamin Rosseaux
git-svn-id: trunk@33097 -
2016-02-14 10:57:00 +00:00
sergei
161f812113 * Explicitly typecast (-longint) to longint, otherwise it becomes an int64 on 64-bit targets, causing wrong result of sign(longint). Mantis #29649.
git-svn-id: trunk@33096 -
2016-02-14 10:29:11 +00:00
sergei
41751bc5b4 + Next portion of MIPS peephole optimizations. Get more aggressive and do more than a single pass if needed, enabling optimization of instructions that logically turn into MOVE due to register renaming.
git-svn-id: trunk@33095 -
2016-02-13 12:33:30 +00:00
michael
263c888555 * Fix bug ID #28723
git-svn-id: trunk@33094 -
2016-02-13 11:47:17 +00:00
sergei
e8f2f42b75 * Reverted r29373 and replaced it with more appropriate fix.
git-svn-id: trunk@33093 -
2016-02-13 11:09:31 +00:00
michael
db19d73ec0 * Add ClearFirst parameter to AddStrings (bug ID 29630)
git-svn-id: trunk@33092 -
2016-02-13 11:03:51 +00:00
svenbarth
6afda909d4 Rework TlsKey handling on Windows so that it works as intended with indirect main information
rtl/inc/system.inc:
  * SetupEntryInformation: call new, optional function OSSetupEntryInformation to handle platform specific entry information initialization
rtl/win/sysosh.inc, TEntryInformationOS:
  + new field TlsKeyAddr which will hold the address to the main binary's TlsKey variable
win32/sysinit.inc:
  + provide the variable holding the TlsKey and pass that on to the entry information record
win32/system.pp:
  + new OS specific entry information initialization (currently only the TlsKey)
win/systhrd.inc:
  * declare TlsKey as a pointer to a DWord value instead of a DWord; on non-indirect entry platforms this is initialized with the address of new variable TlsKeyVar, on indirect entry platforms it will be initialized by the entry information initialization
  * adjust usages of TlsKey from DWord to PDWord
win/systlsdir.inc:
  * TlsKey is now a PDWord and (in sysinit) points to TlsKeyVar
win/syswin.inc:
  * adjust TlsKey usage
inc/heaptrc.pp:
  * TlsKey is now a PDWord, thus adjust the import and the usage

git-svn-id: trunk@33091 -
2016-02-12 17:03:52 +00:00
svenbarth
8775897621 * fix copy & paste error (didn't influence the test as str3 isn't changed, but at least it's consistent that way...)
git-svn-id: trunk@33090 -
2016-02-12 16:09:32 +00:00
svenbarth
77cb13c38c Revert r33057. MaxLen is the maximum value that Pos can return and does not need to be adjusted by (Offset - 1). Also there's no buffer that could be overrun as i is not used to access the string's buffer. Fixes failure of tests/test/units/system/tstring.pp
git-svn-id: trunk@33089 -
2016-02-12 16:07:26 +00:00
sergei
e23ed15634 * MIPS: reworked and fixed procedure fixup_jmps:
* support conditional branches with 2 parameters
  * factored out common parts
  * adjusted range limits, they were copy-pasted from PowerPC target which uses 14-bit offsets. MIPS however uses 16-bit offsets, i.e. can branch 4 times farther.

git-svn-id: trunk@33088 -
2016-02-12 13:53:04 +00:00
lacak
6ca424900b fcl-db: datadict: when querying for table indexes use ServerIndexDefs instead of local IndexDef
git-svn-id: trunk@33087 -
2016-02-12 13:27:23 +00:00
lacak
b38b441d53 fcl-db: dbase: Bug #28734, Patch by Luiz Americo
git-svn-id: trunk@33086 -
2016-02-12 11:43:40 +00:00
lacak
f55ab74e6a fcl-db: dbase: call inherited InternalPost to check required fields. Revealed by test TestRequired
git-svn-id: trunk@33085 -
2016-02-12 10:07:08 +00:00
sergei
ed2488eb03 - MIPS: removed the ugly hack of splitting LDC1/SDC1 instructions into pairs of LWC1/SWC1 at assembler writer level. It probably was there as a workaround for insufficient alignment of double-precision variables, which was present once, but fixed a long time ago.
git-svn-id: trunk@33084 -
2016-02-11 15:09:19 +00:00