¿Por qué el compilador insiste en que mi función está en línea cuando no lo está?

¿Por qué me estoy poniendo

[Error de DCC] ProjectCOWArray.dpr (23): E2426 La función en línea no debe tener bloque asm

program ProjectCOWArray;

{$APPTYPE CONSOLE}

{$R *.res}

type
  PRefCount = ^TRefCount;
  TRefCount = array[0..1] of integer;


  TCOWArray<T> = record
  private
    fData: TArray<T>;
  private
    procedure IncRefCount;  <<-- not inline  
  end;


{ TCOWArray<T> }

procedure TCOWArray<T>.IncRefCount;
asm
  {$if defined(win32)}
  mov eax,fData;
  lock inc dword ptr [eax - 8];
  {$ifend}
  {$if defined(win64)}
  mov rax,fData;
  lock inc dword ptr[rax -12];
  {$ifend}
end;

begin
end.

Delphi XE2 no tieneAtomicIncrementEntonces, ¿cómo resuelvo este problema?
Me gustaría conservar el ensamblador, porque de lo contrario no puedo tener ellock prefijo y no quiero usarInterlockedIncrement porque esa es una función WinAPI y no quiero ese tipo de sobrecarga.

Respuestas a la pregunta(3)

Su respuesta a la pregunta