[fpc-pascal] Re: UnicodeString comparison performance

2012-07-20 Thread leledumbo
I look at the generated code and in the direct one there's additional overhead of decrementing the reference counter on each iteration. Here's what the core code looks like: Direct: leal -56(%ebp),%eax call fpc_unicodestr_decr_ref leal -56(%ebp),%eax call P$TEST_$$_GETSOMESTRING$$UNICO

Re: [fpc-pascal] Inter-process communication, a cautionary tale

2012-07-20 Thread Marco van de Voort
In our previous episode, waldo kitty said: > > However I always think of named > > pipes, threads etc. as being primarily OS/2 v1 innovations, although some > > might > > have been introduced by the obscure Microsoft OS usually referred to as > > "European MS-DOS v4.0". > > for some reason i was

Re: [fpc-pascal] Inter-process communication, a cautionary tale

2012-07-20 Thread Mark Morgan Lloyd
waldo kitty wrote: FWIW: DOS does have and has had pipes... otherwise things like DIR | MORE would not work... maybe you mean named pipes? ;) Yes, I do. And I'm obviously aware that there are plenty of addons that graft named pipes (and mailslots etc.) onto DOS. i never used any of that..

[fpc-pascal] UnicodeString comparison performance

2012-07-20 Thread OBones
Hello all, As I'm moving further into my experiments with FreePascal 2.6.0, I have run into a strange issue related to UnicodeString comparisons. Basically, I'm comparing the result of a function with a constant value and find that the comparison is faster if I first assign the result of the f

Re: [fpc-pascal] Inter-process communication, a cautionary tale

2012-07-20 Thread waldo kitty
On 7/19/2012 03:12, Mark Morgan Lloyd wrote: waldo kitty wrote: On 7/18/2012 08:48, Mark Morgan Lloyd wrote: I was reminded of this when somebody was asking about portable signalling APIs the other day, but I think it's also relevant to discussion of e.g. how to pass a keyword to a help viewer.

Re: [fpc-pascal] Floating point discrepancy in x64 mode

2012-07-20 Thread OBones
Jonas Maebe wrote: Possible solutions: a) typecast one of the operands of the division to double (not that this is Delphi-incompatible) b) Compile with -CF64 to force all floating point constants to become at least 64 bit in precision, even if they can be represented exactly using 32 bit I wen

Re: [fpc-pascal] Cross-compiling Win64=>Win32 fails

2012-07-20 Thread Reinier Olislagers
On 20-7-2012 13:11, Jonas Maebe wrote: > > On 20 Jul 2012, at 12:20, Reinier Olislagers wrote: > >> I've been extending fpcup, trying to add Win64=>Win32 cross compiler ... >> see latest revision on >> https://bitbucket.org/reiniero/fpcup/changesets >> >> With FPC trunk, I get this error: >> fpcd

Re: [fpc-pascal] Floating point discrepancy in x64 mode

2012-07-20 Thread Jonas Maebe
On 20 Jul 2012, at 11:59, OBones wrote: > When I compile it with ppc386 and run it, I get the following output: > > 4.17E-002 > 4.17E-002 > > which is totally expected. > However, when I compile it with ppcrossx64 and run it, I get the following > output: > > 4.167

Re: [fpc-pascal] Cross-compiling Win64=>Win32 fails

2012-07-20 Thread Jonas Maebe
On 20 Jul 2012, at 12:20, Reinier Olislagers wrote: > I've been extending fpcup, trying to add Win64=>Win32 cross compiler ... > see latest revision on > https://bitbucket.org/reiniero/fpcup/changesets > > With FPC trunk, I get this error: > fpcdefs.inc(216,2) Error: User defined: Cross-compilin

[fpc-pascal] Cross-compiling Win64=>Win32 fails

2012-07-20 Thread Reinier Olislagers
Hi list, I've been extending fpcup, trying to add Win64=>Win32 cross compiler ... see latest revision on https://bitbucket.org/reiniero/fpcup/changesets With FPC trunk, I get this error: fpcdefs.inc(216,2) Error: User defined: Cross-compiling from systems without support for an 80 bit extended fl

[fpc-pascal] Floating point discrepancy in x64 mode

2012-07-20 Thread OBones
Hello all, Let's consider the following test program: program test; function DirectCompute: Double; var k: Integer; begin k := 0; Result := (k+0.5)/12; end; function IntermediateCompute: Double; var k: Integer; begin k := 0; Result := k+0.5; Result := Result / 12; end; begin W