* farpointerdef moved into pointerdef.is_far

This commit is contained in:
peter 1999-04-26 18:29:54 +00:00
parent c36956fffe
commit 49786e5fe5
8 changed files with 58 additions and 57 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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