FpDebug: Callcontext, rename TFpValueCallParamStringByRef to TFpSymbolCallParamOrdinalOrPointer

This commit is contained in:
Martin 2022-07-24 18:33:53 +02:00
parent c6ab397e07
commit f3476e5274

View File

@ -14,16 +14,17 @@ uses
type type
{ TFpValueCallParamStringByRef } { TFpSymbolCallParamOrdinalOrPointer }
TFpValueCallParamStringByRef = class(TFpValueDwarfPointer) TFpSymbolCallParamOrdinalOrPointer = class(TFpSymbolDwarfTypeBasic) // act as pointer
function GetDwarfDataAddress(out AnAddress: TFpDbgMemLocation; private type
ATargetType: TFpSymbolDwarfType = nil): Boolean; override; { TFpValueCallParamStringByRef }
end;
{ TFpSymbolCallParamStringByRef } TFpValueCallParamStringByRef = class(TFpValueDwarfPointer)
function GetDwarfDataAddress(out AnAddress: TFpDbgMemLocation;
ATargetType: TFpSymbolDwarfType = nil): Boolean; override;
end;
TFpSymbolCallParamStringByRef = class(TFpSymbolDwarfTypeBasic) // act as pointer
protected protected
procedure KindNeeded; override; procedure KindNeeded; override;
procedure Init; override; procedure Init; override;
@ -96,35 +97,35 @@ implementation
var var
FPDBG_FUNCCALL: PLazLoggerLogGroup; FPDBG_FUNCCALL: PLazLoggerLogGroup;
{ TFpValueCallParamStringByRef } { TFpSymbolCallParamOrdinalOrPointer.TFpValueCallParamStringByRef }
function TFpValueCallParamStringByRef.GetDwarfDataAddress(out function TFpSymbolCallParamOrdinalOrPointer.TFpValueCallParamStringByRef.GetDwarfDataAddress
AnAddress: TFpDbgMemLocation; ATargetType: TFpSymbolDwarfType): Boolean; (out AnAddress: TFpDbgMemLocation; ATargetType: TFpSymbolDwarfType): Boolean;
begin begin
AnAddress := Address; AnAddress := Address;
Result := IsReadableLoc(AnAddress); Result := IsReadableLoc(AnAddress);
end; end;
{ TFpSymbolCallParamStringByRef } { TFpSymbolCallParamOrdinalOrPointer }
procedure TFpSymbolCallParamStringByRef.KindNeeded; procedure TFpSymbolCallParamOrdinalOrPointer.KindNeeded;
begin begin
SetKind(skPointer); SetKind(skPointer);
end; end;
procedure TFpSymbolCallParamStringByRef.Init; procedure TFpSymbolCallParamOrdinalOrPointer.Init;
begin begin
inherited Init; inherited Init;
EvaluatedFields := EvaluatedFields + [sfiAddress]; EvaluatedFields := EvaluatedFields + [sfiAddress];
end; end;
function TFpSymbolCallParamStringByRef.GetTypedValueObject(ATypeCast: Boolean; function TFpSymbolCallParamOrdinalOrPointer.GetTypedValueObject(ATypeCast: Boolean;
AnOuterType: TFpSymbolDwarfType): TFpValueDwarf; AnOuterType: TFpSymbolDwarfType): TFpValueDwarf;
begin begin
Result := TFpValueCallParamStringByRef.Create(AnOuterType); Result := TFpValueCallParamStringByRef.Create(AnOuterType);
end; end;
constructor TFpSymbolCallParamStringByRef.Create(AName: String; constructor TFpSymbolCallParamOrdinalOrPointer.Create(AName: String;
AStringVarAddress: TDBGPtr); AStringVarAddress: TDBGPtr);
begin begin
inherited Create(AName, skPointer, TargetLoc(AStringVarAddress)); inherited Create(AName, skPointer, TargetLoc(AStringVarAddress));
@ -345,9 +346,9 @@ end;
function TFpDbgInfoCallContext.InternalAddStringResult: Boolean; function TFpDbgInfoCallContext.InternalAddStringResult: Boolean;
var var
ParamSymbol: TFpValue; ParamSymbol: TFpValue;
RefSym: TFpSymbolCallParamStringByRef; RefSym: TFpSymbolCallParamOrdinalOrPointer;
begin begin
RefSym := TFpSymbolCallParamStringByRef.Create('', 0); RefSym := TFpSymbolCallParamOrdinalOrPointer.Create('', 0);
ParamSymbol := InternalCreateParamSymbol(FNextParamRegister, RefSym, ''); ParamSymbol := InternalCreateParamSymbol(FNextParamRegister, RefSym, '');
try try
Result := ParamSymbol <> nil; Result := ParamSymbol <> nil;
@ -434,7 +435,7 @@ var
begin begin
Result := False; Result := False;
if AParamSymbolType = nil then if AParamSymbolType = nil then
AParamSymbolType := TFpSymbolCallParamStringByRef.Create('', 0) AParamSymbolType := TFpSymbolCallParamOrdinalOrPointer.Create('', 0)
else else
AParamSymbolType.AddReference; AParamSymbolType.AddReference;
ParamSymbol := InternalCreateParamSymbol(FNextParamRegister, AParamSymbolType, ''); ParamSymbol := InternalCreateParamSymbol(FNextParamRegister, AParamSymbolType, '');
@ -474,10 +475,10 @@ function TFpDbgInfoCallContext.AddOrdinalViaRefAsParam(AValue: QWord): Boolean;
var var
ParamSymbol: TFpValue; ParamSymbol: TFpValue;
m: TDBGPtr; m: TDBGPtr;
RefSym: TFpSymbolCallParamStringByRef; RefSym: TFpSymbolCallParamOrdinalOrPointer;
begin begin
m := AllocStack(32); m := AllocStack(32);
RefSym := TFpSymbolCallParamStringByRef.Create('', m); RefSym := TFpSymbolCallParamOrdinalOrPointer.Create('', m);
ParamSymbol := InternalCreateParamSymbol(FNextParamRegister, RefSym, ''); ParamSymbol := InternalCreateParamSymbol(FNextParamRegister, RefSym, '');
try try
Result := ParamSymbol <> nil; Result := ParamSymbol <> nil;