Por que o compilador insiste que minha função está embutida quando não está?

Por que estou recebendo

[Erro DCC] ProjectCOWArray.dpr (23): A função embutida E2426 não deve ter bloco 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.

O Delphi XE2 não possuiAtomicIncrement, então como resolvo esse problema?
Gostaria de reter o montador, porque, caso contrário, não posso ter olock prefixo e eu não quero usarInterlockedIncrement porque essa é uma função WinAPI e eu não quero esse tipo de sobrecarga.

questionAnswers(3)

yourAnswerToTheQuestion