mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-19 03:59:28 +02:00
* farpointerdef moved into pointerdef.is_far
This commit is contained in:
parent
c36956fffe
commit
49786e5fe5
@ -312,7 +312,7 @@ implementation
|
||||
p^.location.reference.base:=hr;
|
||||
end;
|
||||
end;
|
||||
if p^.left^.resulttype^.deftype=farpointerdef then
|
||||
if ppointerdef(p^.left^.resulttype)^.is_far then
|
||||
p^.location.reference.segment:=R_FS;
|
||||
end;
|
||||
|
||||
@ -635,7 +635,7 @@ implementation
|
||||
emitrangecheck(p^.right,p^.left^.resulttype);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
case p^.right^.location.loc of
|
||||
LOC_REGISTER:
|
||||
begin
|
||||
@ -882,7 +882,10 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.33 1999-03-26 11:43:26 pierre
|
||||
Revision 1.34 1999-04-26 18:29:54 peter
|
||||
* farpointerdef moved into pointerdef.is_far
|
||||
|
||||
Revision 1.33 1999/03/26 11:43:26 pierre
|
||||
* bug0236 fixed
|
||||
|
||||
Revision 1.32 1999/03/24 23:16:53 peter
|
||||
|
@ -1201,7 +1201,7 @@ unit pexpr;
|
||||
CARET:
|
||||
begin
|
||||
consume(CARET);
|
||||
if not(pd^.deftype in [pointerdef,farpointerdef]) then
|
||||
if (pd^.deftype<>pointerdef) then
|
||||
begin
|
||||
{ ^ as binary operator is a problem!!!! (FK) }
|
||||
again:=false;
|
||||
@ -1972,7 +1972,10 @@ unit pexpr;
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.97 1999-04-19 09:27:48 peter
|
||||
Revision 1.98 1999-04-26 18:29:56 peter
|
||||
* farpointerdef moved into pointerdef.is_far
|
||||
|
||||
Revision 1.97 1999/04/19 09:27:48 peter
|
||||
* removed my property fix
|
||||
|
||||
Revision 1.96 1999/04/19 09:13:47 peter
|
||||
|
@ -384,7 +384,7 @@ unit pmodules;
|
||||
st : punitsymtable;
|
||||
second_time : boolean;
|
||||
old_current_ppu : pppufile;
|
||||
old_current_module,hp,hp2 : pmodule;
|
||||
old_current_module,hp,hp2,hp3 : pmodule;
|
||||
name : string;{ necessary because
|
||||
current_module^.mainsource^ is reset in compile !! }
|
||||
scanner : pscannerfile;
|
||||
@ -505,7 +505,7 @@ unit pmodules;
|
||||
if hp2^.do_reload then
|
||||
begin
|
||||
hp2^.do_reload:=false;
|
||||
loadunit(hp^.modulename^,false);
|
||||
hp3:=loadunit(hp^.modulename^,false);
|
||||
end;
|
||||
hp2:=pmodule(hp2^.next);
|
||||
end;
|
||||
@ -1357,7 +1357,10 @@ unit pmodules;
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.114 1999-04-26 13:31:39 peter
|
||||
Revision 1.115 1999-04-26 18:29:58 peter
|
||||
* farpointerdef moved into pointerdef.is_far
|
||||
|
||||
Revision 1.114 1999/04/26 13:31:39 peter
|
||||
* release storenumber,double_checksum
|
||||
|
||||
Revision 1.113 1999/04/25 17:32:14 peter
|
||||
|
@ -110,7 +110,6 @@ const
|
||||
iblongstringdef = 54;
|
||||
ibansistringdef = 55;
|
||||
ibwidestringdef = 56;
|
||||
ibfarpointerdef = 57;
|
||||
|
||||
{ unit flags }
|
||||
uf_init = $1;
|
||||
@ -869,7 +868,10 @@ end;
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.29 1999-04-26 13:31:41 peter
|
||||
Revision 1.30 1999-04-26 18:30:00 peter
|
||||
* farpointerdef moved into pointerdef.is_far
|
||||
|
||||
Revision 1.29 1999/04/26 13:31:41 peter
|
||||
* release storenumber,double_checksum
|
||||
|
||||
Revision 1.28 1999/04/26 09:33:07 peter
|
||||
|
@ -1283,6 +1283,17 @@
|
||||
inherited init;
|
||||
deftype:=pointerdef;
|
||||
definition:=def;
|
||||
is_far:=false;
|
||||
savesize:=target_os.size_of_pointer;
|
||||
end;
|
||||
|
||||
|
||||
constructor tpointerdef.initfar(def : pdef);
|
||||
begin
|
||||
inherited init;
|
||||
deftype:=pointerdef;
|
||||
definition:=def;
|
||||
is_far:=true;
|
||||
savesize:=target_os.size_of_pointer;
|
||||
end;
|
||||
|
||||
@ -1293,6 +1304,7 @@
|
||||
deftype:=pointerdef;
|
||||
{ the real address in memory is calculated later (deref) }
|
||||
definition:=readdefref;
|
||||
is_far:=(readbyte<>0);
|
||||
savesize:=target_os.size_of_pointer;
|
||||
end;
|
||||
|
||||
@ -1307,6 +1319,7 @@
|
||||
begin
|
||||
inherited write;
|
||||
writedefref(definition);
|
||||
writebyte(byte(is_far));
|
||||
current_ppu^.writeentry(ibpointerdef);
|
||||
end;
|
||||
|
||||
@ -1366,34 +1379,6 @@
|
||||
{$endif GDB}
|
||||
|
||||
|
||||
{****************************************************************************
|
||||
TFARPOINTERDEF
|
||||
****************************************************************************}
|
||||
|
||||
constructor tfarpointerdef.init(def : pdef);
|
||||
begin
|
||||
inherited init(def);
|
||||
deftype:=farpointerdef;
|
||||
savesize:=target_os.size_of_pointer;
|
||||
end;
|
||||
|
||||
|
||||
constructor tfarpointerdef.load;
|
||||
begin
|
||||
inherited load;
|
||||
deftype:=farpointerdef;
|
||||
savesize:=target_os.size_of_pointer;
|
||||
end;
|
||||
|
||||
|
||||
procedure tfarpointerdef.write;
|
||||
begin
|
||||
tdef.write;
|
||||
writedefref(definition);
|
||||
current_ppu^.writeentry(ibfarpointerdef);
|
||||
end;
|
||||
|
||||
|
||||
{****************************************************************************
|
||||
TCLASSREFDEF
|
||||
****************************************************************************}
|
||||
@ -1419,6 +1404,7 @@
|
||||
{ be careful, tclassdefref inherits from tpointerdef }
|
||||
tdef.write;
|
||||
writedefref(definition);
|
||||
writebyte(byte(is_far));
|
||||
current_ppu^.writeentry(ibclassrefdef);
|
||||
end;
|
||||
|
||||
@ -3465,7 +3451,10 @@ Const local_symtable_index : longint = $8001;
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.105 1999-04-26 13:31:47 peter
|
||||
Revision 1.106 1999-04-26 18:30:01 peter
|
||||
* farpointerdef moved into pointerdef.is_far
|
||||
|
||||
Revision 1.105 1999/04/26 13:31:47 peter
|
||||
* release storenumber,double_checksum
|
||||
|
||||
Revision 1.104 1999/04/21 09:43:50 peter
|
||||
|
@ -28,7 +28,7 @@
|
||||
tdeftype = (abstractdef,arraydef,recorddef,pointerdef,orddef,
|
||||
stringdef,enumdef,procdef,objectdef,errordef,
|
||||
filedef,formaldef,setdef,procvardef,floatdef,
|
||||
classrefdef,farpointerdef);
|
||||
classrefdef);
|
||||
|
||||
pdef = ^tdef;
|
||||
{$ifndef OLDPPU}
|
||||
@ -157,25 +157,19 @@
|
||||
tpointerdef = object(tdef)
|
||||
definition : pdef;
|
||||
defsym : ptypesym;
|
||||
is_far : boolean;
|
||||
constructor init(def : pdef);
|
||||
constructor initfar(def : pdef);
|
||||
constructor load;
|
||||
procedure write;virtual;
|
||||
{$ifdef GDB}
|
||||
function stabstring : pchar;virtual;
|
||||
function stabstring : pchar;virtual;
|
||||
procedure concatstabto(asmlist : paasmoutput);virtual;
|
||||
{$endif GDB}
|
||||
procedure deref;virtual;
|
||||
end;
|
||||
|
||||
|
||||
pfarpointerdef = ^tfarpointerdef;
|
||||
tfarpointerdef = object(tpointerdef)
|
||||
constructor init(def : pdef);
|
||||
constructor load;
|
||||
procedure write;virtual;
|
||||
end;
|
||||
|
||||
|
||||
pobjectdef = ^tobjectdef;
|
||||
tobjectdef = object(tdef)
|
||||
childof : pobjectdef;
|
||||
@ -512,7 +506,10 @@
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.22 1999-04-26 13:31:49 peter
|
||||
Revision 1.23 1999-04-26 18:30:02 peter
|
||||
* farpointerdef moved into pointerdef.is_far
|
||||
|
||||
Revision 1.22 1999/04/26 13:31:49 peter
|
||||
* release storenumber,double_checksum
|
||||
|
||||
Revision 1.21 1999/04/21 09:43:52 peter
|
||||
|
@ -293,7 +293,7 @@ unit symtable;
|
||||
|
||||
voidpointerdef : ppointerdef; { pointer for Void-Pointerdef }
|
||||
charpointerdef : ppointerdef; { pointer for Char-Pointerdef }
|
||||
voidfarpointerdef : pfarpointerdef;
|
||||
voidfarpointerdef : ppointerdef;
|
||||
|
||||
voiddef : porddef; { Pointer to Void (procedure) }
|
||||
cchardef : porddef; { Pointer to Char }
|
||||
@ -318,6 +318,8 @@ unit symtable;
|
||||
cwidestringdef : pstringdef; { pointer to type of wide string const }
|
||||
openshortstringdef : pstringdef; { pointer to type of an open shortstring,
|
||||
needed for readln() }
|
||||
openchararraydef : parraydef; { pointer to type of an open array of char,
|
||||
needed for readln() }
|
||||
|
||||
cfiledef : pfiledef; { get the same definition for all file }
|
||||
{ uses for stabs }
|
||||
@ -1222,7 +1224,6 @@ const localsymtablestack : psymtable = nil;
|
||||
ibprocvardef : hp:=new(pprocvardef,load);
|
||||
ibfiledef : hp:=new(pfiledef,load);
|
||||
ibclassrefdef : hp:=new(pclassrefdef,load);
|
||||
ibfarpointerdef : hp:=new(pfarpointerdef,load);
|
||||
ibformaldef : hp:=new(pformaldef,load);
|
||||
ibenddefs : break;
|
||||
ibend : Message(unit_f_ppu_read_error);
|
||||
@ -3202,8 +3203,8 @@ const localsymtablestack : psymtable = nil;
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.2 1999-04-26 15:12:25 peter
|
||||
* reinstered
|
||||
Revision 1.3 1999-04-26 18:30:03 peter
|
||||
* farpointerdef moved into pointerdef.is_far
|
||||
|
||||
Revision 1.151 1999/04/26 13:31:54 peter
|
||||
* release storenumber,double_checksum
|
||||
|
@ -229,7 +229,7 @@ implementation
|
||||
if not(cs_typed_addresses in aktlocalswitches) then
|
||||
p^.resulttype:=voidfarpointerdef
|
||||
else
|
||||
p^.resulttype:=new(pfarpointerdef,init(p^.left^.resulttype));
|
||||
p^.resulttype:=new(ppointerdef,initfar(p^.left^.resulttype));
|
||||
end
|
||||
else
|
||||
begin
|
||||
@ -311,7 +311,7 @@ implementation
|
||||
p^.registersmmx:=p^.left^.registersmmx;
|
||||
{$endif SUPPORT_MMX}
|
||||
|
||||
if not(p^.left^.resulttype^.deftype in [pointerdef,farpointerdef]) then
|
||||
if p^.left^.resulttype^.deftype<>pointerdef then
|
||||
CGMessage(cg_e_invalid_qualifier);
|
||||
|
||||
p^.resulttype:=ppointerdef(p^.left^.resulttype)^.definition;
|
||||
@ -555,7 +555,10 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.12 1999-03-02 18:24:24 peter
|
||||
Revision 1.13 1999-04-26 18:30:05 peter
|
||||
* farpointerdef moved into pointerdef.is_far
|
||||
|
||||
Revision 1.12 1999/03/02 18:24:24 peter
|
||||
* fixed overloading of array of char
|
||||
|
||||
Revision 1.11 1999/02/22 02:15:54 peter
|
||||
|
Loading…
Reference in New Issue
Block a user