> > is it possible inline also methods of objects (not regular procedures) ?
> > I have very simple class method, which call I need inline.
> > (looking at assembler code it is not inlined; I have looked also in documentation, but I do not found article about inline and methods)
> >
> > Example:
> >
> > function T2DArray.Data(x, y: integer): PElement; inline;
> > begin
> >   Result := @FArray[x+y*Fx];
> > end;
>
> Yes. Inline needs to be declared at the declaration however and not the implementation

I have "inline" on both places also on declaration

and any function or method that uses it (in the same unit) needs to come afterwards

Yes it comes afterwards

if you want it to be inlined (for other units that doesn't matter as long as you don't have circular dependencies, cause then things get messy). On addition to that "inline" is only a hint for the compiler, so there might be cases when the compiler decides not to inline.

Oh and it obviously won't work with virtual methods.

In my case it is not virtual method.

But I forgot to mention, that it is method of generic object:

  generic T2DArray<T> = object
   ...
    public
      constructor Init(oobMode: TOutOfBoundsMode); overload;
      constructor Init(x,y: integer); overload;
      ...
      function Data(x,y: integer): PElement; overload; inline;
  end;

So what can be a case, that method is not inlined, can it be track down or is there something which I can do to force inlining ?
(FPC 2.6.4)
Thanks
-Laco.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to