Martin schrieb:
Just to confirm my observations. (again trying to get pascal script to work)
64 bit windows

procedure FOO(Sender: TSynEdit; const M: String; const P1, P2: TPoint);

"const P1, P2: TPoint" versus "P1, P2: TPoint"

if "const" is NOT used, then TPoint is put into a register
if "const" is used, then TPoint is in mem, and the register is a reference.

Is that right? (I know the doc says, no assumption, and can be ref or value)

In Delphi it's clear:

Without "const" the data *must* be copied (by-val), so that the subroutine cannot change the original data.

"const" *allows* the compiler to pass the original data structure by-ref, because the subroutine will not change the data. Whether the parameter is passed by value or reference depends, on e.g. the sizeof the data structures and pointers, and whether optimizing for speed or size.

FPC has added "constref", definitely forcing by-ref. AFAIR this was required for the ObjectiveC interface.

DoDi

_______________________________________________
fpc-devel maillist  -  [email protected]
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to