Почему компилятор настаивает на том, что моя функция встроена, а она нет?

Почему я получаю

[Ошибка DCC] ProjectCOWArray.dpr (23): E2426 Встроенная функция не должна иметь блок 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 не имеетAtomicIncrementИтак, как мне решить эту проблему?
Он хотел бы сохранить ассемблер, потому что в противном случае я не могу иметьlock префикс в и я не хочу использоватьInterlockedIncrement потому что это функция WinAPI, и я не хочу такого рода накладные расходы.

Ответы на вопрос(3)

Ваш ответ на вопрос