summaryrefslogtreecommitdiff
path: root/compiler/symdef.pas
diff options
context:
space:
mode:
authorflorian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2>2006-08-20 19:38:51 +0000
committerflorian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2>2006-08-20 19:38:51 +0000
commit62edb2ac6b222533fe414ce4d25e4875bc56939e (patch)
tree6a3a628e4a694de02a12728626a9a679ded125fe /compiler/symdef.pas
parentbd50590ad222d6fd2881d53f9f4978aa1d634d1f (diff)
downloadfpc-62edb2ac6b222533fe414ce4d25e4875bc56939e.tar.gz
* patch from C Western for #7232
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@4481 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'compiler/symdef.pas')
-rw-r--r--compiler/symdef.pas17
1 files changed, 7 insertions, 10 deletions
diff --git a/compiler/symdef.pas b/compiler/symdef.pas
index 5db372939e..d8cf2a9f75 100644
--- a/compiler/symdef.pas
+++ b/compiler/symdef.pas
@@ -4834,7 +4834,7 @@ implementation
proctypesinfo : byte;
propnameitem : tpropnamelistitem;
- procedure writeproc(proc : tsymlist; shiftvalue : byte);
+ procedure writeproc(proc : tsymlist; shiftvalue : byte; unsetvalue: byte);
var
typvalue : byte;
@@ -4844,7 +4844,7 @@ implementation
begin
if not(assigned(proc) and assigned(proc.firstsym)) then
begin
- current_asmdata.asmlists[al_rtti].concat(Tai_const.create(aitconst_ptr,0));
+ current_asmdata.asmlists[al_rtti].concat(Tai_const.create(aitconst_ptr,unsetvalue));
typvalue:=3;
end
else if proc.firstsym^.sym.typ=fieldvarsym then
@@ -4910,16 +4910,13 @@ implementation
else
proctypesinfo:=0;
current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_sym(tstoreddef(tpropertysym(sym).proptype.def).get_rtti_label(fullrtti)));
- writeproc(tpropertysym(sym).readaccess,0);
- writeproc(tpropertysym(sym).writeaccess,2);
- { isn't it stored ? }
+ writeproc(tpropertysym(sym).readaccess,0,0);
+ writeproc(tpropertysym(sym).writeaccess,2,0);
+ { is it stored ? }
if not(ppo_stored in tpropertysym(sym).propoptions) then
- begin
- current_asmdata.asmlists[al_rtti].concat(Tai_const.create_sym(nil));
- proctypesinfo:=proctypesinfo or (3 shl 4);
- end
+ writeproc(nil,4,0) { no, so put a constant zero }
else
- writeproc(tpropertysym(sym).storedaccess,4);
+ writeproc(tpropertysym(sym).storedaccess,4,1); { maybe; if no procedure put a constant 1 (=true) }
current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_32bit(tpropertysym(sym).index));
current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_32bit(tpropertysym(sym).default));
propnameitem:=searchpropnamelist(tpropertysym(sym).name);