|
@@ -74,29 +74,15 @@ end;
|
|
|
|
|
|
Function fpc_PushExceptAddr (Ft: Longint;_buf,_newaddr : pointer): PJmp_buf ;
|
|
Function fpc_PushExceptAddr (Ft: Longint;_buf,_newaddr : pointer): PJmp_buf ;
|
|
[Public, Alias : 'FPC_PUSHEXCEPTADDR'];compilerproc;
|
|
[Public, Alias : 'FPC_PUSHEXCEPTADDR'];compilerproc;
|
|
-
|
|
|
|
-var
|
|
|
|
- Buf : PJmp_buf;
|
|
|
|
- NewAddr : PExceptAddr;
|
|
|
|
begin
|
|
begin
|
|
{$ifdef excdebug}
|
|
{$ifdef excdebug}
|
|
writeln ('In PushExceptAddr');
|
|
writeln ('In PushExceptAddr');
|
|
{$endif}
|
|
{$endif}
|
|
- If ExceptAddrstack=Nil then
|
|
|
|
- begin
|
|
|
|
- ExceptAddrStack:=PExceptAddr(_newaddr);
|
|
|
|
- ExceptAddrStack^.Next:=Nil;
|
|
|
|
- end
|
|
|
|
- else
|
|
|
|
- begin
|
|
|
|
- NewAddr:=PExceptAddr(_newaddr);
|
|
|
|
- NewAddr^.Next:=ExceptAddrStack;
|
|
|
|
- ExceptAddrStack:=NewAddr;
|
|
|
|
- end;
|
|
|
|
- buf:=PJmp_Buf(_buf);
|
|
|
|
- ExceptAddrStack^.Buf:=Buf;
|
|
|
|
- ExceptAddrStack^.FrameType:=ft;
|
|
|
|
- fpc_PushExceptAddr:=Buf;
|
|
|
|
|
|
+ PExceptAddr(_newaddr)^.Next:=ExceptAddrstack;
|
|
|
|
+ ExceptAddrStack:=PExceptAddr(_newaddr);
|
|
|
|
+ PExceptAddr(_newaddr)^.Buf:=PJmp_Buf(_buf);
|
|
|
|
+ PExceptAddr(_newaddr)^.FrameType:=ft;
|
|
|
|
+ result:=PJmp_Buf(_buf);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
@@ -193,19 +179,21 @@ end;
|
|
|
|
|
|
|
|
|
|
Procedure fpc_PopAddrStack;[Public, Alias : 'FPC_POPADDRSTACK']; compilerproc;
|
|
Procedure fpc_PopAddrStack;[Public, Alias : 'FPC_POPADDRSTACK']; compilerproc;
|
|
-
|
|
|
|
|
|
+var
|
|
|
|
+ hp : ^PExceptAddr;
|
|
begin
|
|
begin
|
|
{$ifdef excdebug}
|
|
{$ifdef excdebug}
|
|
writeln ('In Popaddrstack');
|
|
writeln ('In Popaddrstack');
|
|
{$endif}
|
|
{$endif}
|
|
- If ExceptAddrStack=nil then
|
|
|
|
|
|
+ hp:=@ExceptAddrStack;
|
|
|
|
+ If hp^=nil then
|
|
begin
|
|
begin
|
|
writeln ('At end of ExceptionAddresStack');
|
|
writeln ('At end of ExceptionAddresStack');
|
|
halt (255);
|
|
halt (255);
|
|
end
|
|
end
|
|
else
|
|
else
|
|
begin
|
|
begin
|
|
- ExceptAddrStack:=ExceptAddrStack^.Next;
|
|
|
|
|
|
+ hp^:=hp^^.Next;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|