[fpc-pascal] FPC bug or brain bug ?

Jonas Maebe jonas.maebe at elis.ugent.be
Sat May 29 15:51:35 CEST 2010


On 29 May 2010, at 13:22, Tomas Hajny wrote:

> I believe the same is the case with FPC and _objects_ (not classes) and
> FPC is thus compatible here. The text above (mentioning constructors
> allocating the memory) probably refers to classes. In case of objects,
> constructor does not need to allocate memory because the object is either
> declared statically, or it's declared dynamically, but the allocation
> happens before the constructor is invoked.

Semantically, yes. Implementation-wise, no:

# [13] new(o,init);
        movl    _U_P$PROGRAM_O,%ebx
        movl    L_VMT_P$PROGRAM_TOBJ$non_lazy_ptr,%edx
        movl    $0,%eax
        call    L_P$PROGRAM_TOBJ_$__INIT$$LONGBOOL$stub
        movl    %eax,_U_P$PROGRAM_O

The first $0 parameter (in %eax) indicates that memory still has to be reserved. P$PROGRAM_TOBJ_$__INIT$$LONGBOOL (= tobj.init) calls fpc_help_constructor, which allocates the memory if necessary (based on the size in the VMT, and the VMT is loaded in %edx in the code above).


Jonas


More information about the fpc-pascal mailing list