Commit Graph

3498 Commits

Author SHA1 Message Date
florian
d6ba5ab341 * another patch for seeking in compressed streams by Danny Milosavljevic, resolves #12830
git-svn-id: trunk@12705 -
2009-02-07 21:31:17 +00:00
florian
0c65d53f45 + added register keyword to Interlocked* definitions as suggested by Jonas, resolves #12255
git-svn-id: trunk@12698 -
2009-02-07 16:09:05 +00:00
Jonas Maebe
ae45a80d46 * allow the usage of symbolic constants to specify the "stored" attribute
of properties (mantis #10492). Not really clean (and Delphi supports
    full expressions, e.g. also "(const1=const2)"), but cannot do better
    without rewriting the complete symlist parsing to use parse trees instead
    of parser tokens as input

git-svn-id: trunk@12696 -
2009-02-06 19:54:29 +00:00
ivost
76694f6ec8 * added new test for interface to tguid or shortstring constants
git-svn-id: trunk@12693 -
2009-02-06 12:08:48 +00:00
Jonas Maebe
adaae268ae * don't perform fmShareDenyNone/fmShareExclusive check for unix, as it
cannot be implemented there

git-svn-id: trunk@12674 -
2009-02-03 13:33:47 +00:00
Jonas Maebe
8a0c16edb6 * fixed the placement of some fileclose() calls
git-svn-id: trunk@12673 -
2009-02-03 13:22:37 +00:00
michael
b1f3d5de97 * Fixed tfile2 so it compiles and runs on windows
git-svn-id: trunk@12672 -
2009-02-03 12:25:16 +00:00
florian
05031b9522 - removed quotes from TEST_REMOTEOPT as mentioned some days ago on fpc-devel
git-svn-id: trunk@12647 -
2009-02-01 17:19:44 +00:00
Jonas Maebe
4a829da2fc * fixed fileopen when not specifying any sharing (should not perform any
locking at all) (= fmShareCompat, as that one is 0)
  * fixed test for this change (and for fmShareDenyNone)

git-svn-id: trunk@12634 -
2009-01-31 18:46:11 +00:00
Jonas Maebe
a730ee7f10 + support for file locking for *nix systems based on flock (mantis #13012)
git-svn-id: trunk@12630 -
2009-01-30 15:08:30 +00:00
Jonas Maebe
b912e00440 * renamed rol/ror functions into rolbyte/rolword/roldword/rolqword
(and the same for ror), because their operation is very dependent on the
    operand size, and it's fairly easy to misjudge the bitwidth of the outcome
    of an expression in Pascal if you are not intimately familiar with the
    language (or if you don't know the exact types of all involved values in
    an expression)

git-svn-id: trunk@12621 -
2009-01-28 12:56:27 +00:00
Jonas Maebe
2929624ffc * accept overloaded operators that return any shortstring type when needing
a conversion to a shortstring type (so an operator := that returns a
    string[255] can be used to assign this type to a string[80]) (mantis
    #12109)
  * do not allow overloading := with a string[x<>255] as result type,
    because we want one such overload to satisfy all conversions (see
    previous point)

git-svn-id: trunk@12590 -
2009-01-24 15:12:19 +00:00
Jonas Maebe
9d81148986 * only convert character constants into widechar/widestring when assigned
to a widechar/widestring (compatible with constant string handling,
    mantis #13036)

git-svn-id: trunk@12588 -
2009-01-24 12:45:03 +00:00
Jonas Maebe
bfbfa2eb64 * when converting a constant char (not widechar) with ord>=128 to a string,
convert it into a widechar at compile time using the current source file's
    code page (and in case it was to a non-widestring, then convert it at run
    time into the current run time ansi code page) (mantis #12993)

    Previously, the characters were either stuffed into the string without
    conversion (widestring), or passed to the run time "ansi-character to
    stringtype" routine (other string types; which was also wrong, since
    that routine expects the character to be in ansi-encoding, which is
    not necessarily the same as whatever the source file encoding was)

git-svn-id: trunk@12580 -
2009-01-21 18:58:37 +00:00
joost
9abc13aff1 * Lookup should return an empty variant instead of false in case of failure (+test)
git-svn-id: trunk@12538 -
2009-01-11 13:41:46 +00:00
Jonas Maebe
8ad1500438 * disallow passing descendent interfaces to var parameters (mantis #12933)
git-svn-id: trunk@12535 -
2009-01-10 19:47:52 +00:00
Jonas Maebe
3a68484434 * skip for darwin/i386 (contains non-pic assembler)
git-svn-id: trunk@12534 -
2009-01-10 19:45:47 +00:00
Jonas Maebe
6e1dc583b2 + also test qword->float conversion
git-svn-id: trunk@12529 -
2009-01-08 19:31:03 +00:00
Jonas Maebe
1a1fc1357d * honour the specified stack size when creating new threads on unix
platforms + test (mantis #12942)

git-svn-id: trunk@12527 -
2009-01-08 18:37:24 +00:00
joost
d844200495 * On TDataset.Edit exit the method when the state is dsEdit or dsInsert before CheckBrowseMode is called, because CheckBrowseMode will always set the state to dsBrowse. (+test)
git-svn-id: trunk@12515 -
2009-01-05 20:46:14 +00:00
Jonas Maebe
bb9e962490 * fixed procvar parameter passing on ppc/sysv (by value instead of by
reference -- except for method procvars, for tmethod record compatibility)
  * adapted tw11563 for corrected calling convention

git-svn-id: trunk@12475 -
2009-01-02 15:36:27 +00:00
Jonas Maebe
22aacd2a60 * return 0 for length(pchar(0)), like Kylix does (using corrected and
multi-platform version of patch in r12461, which caused the i386 version
    of fpc_pchar_length to return 0 in all cases, which used tabs, and did
    not include a test case)

git-svn-id: trunk@12464 -
2009-01-01 22:02:17 +00:00
joost
e89b30abef * TDateTimeField.SetAsString now sets the field to NULL if an empty string is provided, bug #12875 + testsuite test
git-svn-id: trunk@12455 -
2008-12-29 20:55:02 +00:00
Jonas Maebe
0d4c4a213e * only excute tests on platforms for which -gc is supported
git-svn-id: trunk@12453 -
2008-12-29 11:18:26 +00:00
florian
3329a9b895 + ascii85 decoder stream by Danny Milosavljevic, resolves #0012833
+ test case

git-svn-id: trunk@12433 -
2008-12-24 16:16:23 +00:00
florian
499c523346 * accept only valid guid as iid for com and dispinterfaces, resolves #12030; I'am not sure though if this isn't a feature used by people already
git-svn-id: trunk@12380 -
2008-12-17 22:09:21 +00:00
Tomas Hajny
5432694059 * compilation fix for OS/2 and (hopefully) MacOS
git-svn-id: trunk@12379 -
2008-12-17 21:49:25 +00:00
Jonas Maebe
d3923b315a * generic support for setting islibrary to true for libraries (+ changed
tlibrary1 to test this)

git-svn-id: trunk@12377 -
2008-12-17 17:49:16 +00:00
florian
e213be26fd + write proper rtti for large sets, resolves #12788
git-svn-id: trunk@12371 -
2008-12-16 17:18:16 +00:00
Jonas Maebe
47ba5b19ec * ignore vmtloadaddrnodes created in dead strip removed code
for wpo

git-svn-id: trunk@12364 -
2008-12-14 18:56:02 +00:00
Jonas Maebe
f104ec1346 * fixed one change too many from {ifdef macos} into {ifdef usedos}
git-svn-id: trunk@12363 -
2008-12-14 18:01:16 +00:00
Jonas Maebe
3a56f2403c * fixed windows compilation (currently uses Dos again instead of sysutils)
git-svn-id: trunk@12362 -
2008-12-14 17:58:01 +00:00
Jonas Maebe
c1bc1cd94d + test that already works (mantis #12151)
git-svn-id: trunk@12358 -
2008-12-12 19:45:07 +00:00
Jonas Maebe
3216e8c7bc * mark produced object files as "does not require executable stack" by
default for Linux (overridable using -WX switch) (mantis #11563)

git-svn-id: trunk@12356 -
2008-12-12 16:26:25 +00:00
Jonas Maebe
060d81b8fa Merged revisions 11878,11881-11882,11889,11891-11893,11895,11899-11902,11935,11938,12212,12304,12308-12310,12316,12330-12332,12334,12339-12340 via svnmerge from
svn+ssh://jonas@svn.freepascal.org/FPC/svn/fpc/branches/wpo

........
r11878 | jonas | 2008-10-11 02:25:18 +0200 (Sat, 11 Oct 2008) | 19 lines

  + initial implementation of whole-program optimisation framework
  + implementation of whole-program devirtualisation
  o use:
     a) generate whole-program optimisation information (no need
        to completely compile the program and all of its units
        with -OW/-FW, only the main program is sufficient)
      fpc -OWdevirtcalls -FWmyprog.wpo myprog
     b) use it to optimise the program
      fpc -B -Owdevirtcalls -Fwmyprog.wpo myprog
     (the -B is not required, but only sources recompiled during
      the second pass will actually be optimised -- if you want,
      you can even rebuild the rtl devirtualised for a particular 
      program; and these options can obviously also be used         
      together with regular optimisation switches)
  o warning:
    - there are no checks yet to ensure that you do not use 
      units optimised for a particular program with another
      program (or with a changed version of the same program)

........
r11881 | jonas | 2008-10-11 19:35:52 +0200 (Sat, 11 Oct 2008) | 13 lines

  * extracted code to detect constructed class/object types from
    tcallnode.gen_vmt_tree into its own method to avoid clutter
  * detect x.classtype.create constructs (with classtype = the
    system.tobject.classtype method), and treat them as if a
    "class of x" has been instantiated rather than a
    "class of tobject". this required storing the instantiated
    classrefs in their own array though, because at such a
    point we don't have a "class of x" tdef available (so
    now "x", and all other defs instantiated via a classref,
    are now stored as tobjectdefs in a separate array)
  + support for devirtualising class methods (including
    constructors)

........
r11882 | jonas | 2008-10-11 20:44:02 +0200 (Sat, 11 Oct 2008) | 7 lines

  + -Owoptvmts whole program optimisation which replaces vmt entries
    with method names of child classes in case the current class'
    method can never be called (e.g., because this class is never
    instantiated). As a result, such methods can then be removed
    by dead code removal/smart linking (not much effect for either
    the compiler, lazarus or a trivial lazarus app though).

........
r11889 | jonas | 2008-10-12 14:29:54 +0200 (Sun, 12 Oct 2008) | 2 lines

  * some comment fixes

........
r11891 | jonas | 2008-10-12 18:49:13 +0200 (Sun, 12 Oct 2008) | 4 lines

  * fixed twpofilereader.getnextnoncommentline() when reusing a previously
    read line
  * fixed skipping of unnecessary wpo feedback file sections

........
r11892 | jonas | 2008-10-12 23:42:43 +0200 (Sun, 12 Oct 2008) | 31 lines

  + symbol liveness wpo information extracted from smartlinked programs
    (-OW/-Owsymbolliveness)
  + use symbol liveness information to improve devirtualisation (don't
    consider classes created in code that has been dead code stripped).
    This requires at least two passes of using wpo (first uses dead code
    info to locate classes that are constructed only in dead code,
    second pass uses this info to potentially further devirtualise).
    I.e.:
     1) generate initial liveness and devirtualisation feedback
       fpc -FWtt.wpo -OWall tt.pp -Xs- -CX -XX
     2) use previously generated feedback, and regenerate new feedback
        based on this (i.e., disregard classes created in dead code)
       fpc -FWtt-1.wpo -OWall -Fwtt.wo -Owall tt.pp -Xs- -CX -XX
     3) use the newly generated feedback (in theory, it is possible
        that even more opportunities pop up afterwards; you can
        continue until the program does not get smaller anymore)
       fpc -Fwtt-1.wpo -Owall tt.pp -CX -XX
  * changed all message() to cgmessage() calls so the set codegenerror
  * changed static fsectionhandlers field to a regular field called
    fwpocomponents
  * changed registration of wpocomponents: no longer happens in the
    initialization section of their unit, but in the InitWpo routine
    (which has been moved from the woinfo to the wpo unit). This way
    you can register different classes based on the target/parameters.
  + added static method to twpocomponentbase for checking whether
    the command line parameters don't conflict with the requested
    optimisations (e.g. generating liveness info requires that
    smartlinking is turned on)
  + added static method to twpocomponentbase to request the
    section name

........
r11893 | jonas | 2008-10-12 23:53:57 +0200 (Sun, 12 Oct 2008) | 3 lines

  * fixed comment error (twpodeadcodeinfo keeps a list of live,
    not dead symbols)

........
r11895 | jonas | 2008-10-13 00:13:59 +0200 (Mon, 13 Oct 2008) | 2 lines

  + documented -OW<x>, -Ow<x>, -FW<x> and -Fw<x> wpo parameters

........
r11899 | jonas | 2008-10-14 22:14:56 +0200 (Tue, 14 Oct 2008) | 2 lines

  * replaced hardcoded string with objdumpsearchstr constant

........
r11900 | jonas | 2008-10-14 22:15:25 +0200 (Tue, 14 Oct 2008) | 2 lines

  * reset wpofeedbackinput and wpofeedbackoutput in wpodone

........
r11901 | jonas | 2008-10-14 22:16:07 +0200 (Tue, 14 Oct 2008) | 2 lines

  * various additional comments and comment fixes

........
r11902 | jonas | 2008-10-15 18:09:42 +0200 (Wed, 15 Oct 2008) | 5 lines

  * store vmt procdefs in the ppu files so we don't have to use a hack to
    regenerate them for whole-program optimisation
  * fixed crash when performing devirtualisation optimisation on programs
    that do not construct any classes/objects with optimisable vmts

........
r11935 | jonas | 2008-10-19 12:24:26 +0200 (Sun, 19 Oct 2008) | 4 lines

  * set the vmt entries of non-class virtual methods of not instantiated
    objects/classes to FPC_ABSTRACTERROR so the code they refer to can
    be thrown away if it is not referred to in any other way either

........
r11938 | jonas | 2008-10-19 20:55:02 +0200 (Sun, 19 Oct 2008) | 7 lines

  * record all classrefdefs/objdefs for which a loadvmtaddrnode is generated,
    and instead of marking all classes that derive from instantiated
    classrefdefs as instantiated, only mark those classes from the above
    collection that derive from instantiated classrefdefs as
    instantiated (since to instantiate a class, you have to load its vmt
    somehow -- this may be broken by using assembler code though)

........
r12212 | jonas | 2008-11-23 12:26:34 +0100 (Sun, 23 Nov 2008) | 3 lines

  * fixed to work with the new vmtentries that are always available and
    removed previously added code to save/load vmtentries to ppu files

........
r12304 | jonas | 2008-12-05 22:23:30 +0100 (Fri, 05 Dec 2008) | 4 lines

  * check whether the correct wpo feedback file is used in the current
    compilation when using units that were compiled using wpo information
    during a previous compilation run

........
r12308 | jonas | 2008-12-06 18:03:39 +0100 (Sat, 06 Dec 2008) | 2 lines

  * abort compilation if an error occurred during wpo initialisation

........
r12309 | jonas | 2008-12-06 18:04:28 +0100 (Sat, 06 Dec 2008) | 3 lines

  * give an error message instead of crashing with an io exception if the
    compiler is unable to create the wpo feedback file specified using -FW

........
r12310 | jonas | 2008-12-06 18:12:43 +0100 (Sat, 06 Dec 2008) | 3 lines

  * don't let the used wpo feedback file influence the interface crc (there's
    a separate check for such changes)

........
r12316 | jonas | 2008-12-08 19:08:25 +0100 (Mon, 08 Dec 2008) | 3 lines

  * document the format of the sections of the wpo feedback file inside the
    feedback file itself

........
r12330 | jonas | 2008-12-10 22:26:47 +0100 (Wed, 10 Dec 2008) | 2 lines

  * use sysutils instead of dos to avoid command line length limits

........
r12331 | jonas | 2008-12-10 22:31:11 +0100 (Wed, 10 Dec 2008) | 3 lines

  + support for testing whole program optimisation tests (multiple
    compilations using successively generated feedback files)

........
r12332 | jonas | 2008-12-10 22:31:40 +0100 (Wed, 10 Dec 2008) | 2 lines

  + whole program optimisation tests

........
r12334 | jonas | 2008-12-10 22:38:07 +0100 (Wed, 10 Dec 2008) | 2 lines

  - removed unused local variable

........
r12339 | jonas | 2008-12-11 18:06:36 +0100 (Thu, 11 Dec 2008) | 2 lines

  + comments for newly added fields to tobjectdef for devirtualisation

........
r12340 | jonas | 2008-12-11 18:10:01 +0100 (Thu, 11 Dec 2008) | 2 lines

  * increase ppu version (was no longer different from trunk due to merging)

........

git-svn-id: trunk@12341 -
2008-12-11 17:40:18 +00:00
michael
b0eee3cb7d * More testcases (and they will fail)
git-svn-id: trunk@12336 -
2008-12-11 10:37:17 +00:00
michael
e357cd02ac * Added more testcases for more digits and positive versus negative tests. FPC matches Delphi now
git-svn-id: trunk@12325 -
2008-12-10 20:45:56 +00:00
sekelsenmat
557fd1e1c6 Moves gettext test to correct position
git-svn-id: trunk@12291 -
2008-12-02 16:35:29 +00:00
sekelsenmat
15e597682e Fixes gettext crash under Windows CE and adds test case for it.
git-svn-id: trunk@12290 -
2008-12-02 16:01:25 +00:00
joost
856ee3f7c1 * Removed the dependency on the ini-file, specified DBConnectorName manually
git-svn-id: trunk@12224 -
2008-11-24 10:04:27 +00:00
joost
9f2e076cb3 * Added two fcl-db tests to the general testsuite
git-svn-id: trunk@12216 -
2008-11-23 15:29:13 +00:00
Jonas Maebe
3d25478436 * fixed writing memory references on ppc when there is only an offset
(mantis #12685 and also the error message noted in mantis #12576,
     although in case of the latter it's only a symptom of another bug)

git-svn-id: trunk@12199 -
2008-11-22 15:13:16 +00:00
micha
4594758ae5 + add poll support for unix
git-svn-id: trunk@12128 -
2008-11-16 17:05:47 +00:00
florian
706f8085f4 * convert int64 properly to c-bools, resolves #12614
git-svn-id: trunk@12120 -
2008-11-16 13:27:59 +00:00
florian
17a08efb82 * handle methodpointer function results like records of the same size, resolves #12318
git-svn-id: trunk@12118 -
2008-11-15 23:05:36 +00:00
michael
ea29eb439f * Test for default of property override: default of parent must be preserved
git-svn-id: trunk@12117 -
2008-11-15 22:35:36 +00:00
michael
1718b7ab6d * Added test for bug #12385
git-svn-id: trunk@12092 -
2008-11-14 13:41:52 +00:00
Jonas Maebe
53213844d8 + new test (not yet fixed)
git-svn-id: trunk@12050 -
2008-11-11 20:20:29 +00:00
florian
53ffda14f3 * fixes taking the address of an assembler block defined label
* create short jumps also for asm blocks, thanks to Sergej Gorelkin for the patch, resolves #11638

git-svn-id: trunk@12043 -
2008-11-09 21:14:45 +00:00
florian
49195b0ac0 * fixes assembling of mov ax,<mem16>
* fixes assembling of test <mem8>,reg8; resolves #11786

git-svn-id: trunk@12040 -
2008-11-09 10:24:59 +00:00