diff options
author | jonas <jonas@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2011-08-20 07:22:00 +0000 |
---|---|---|
committer | jonas <jonas@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2011-08-20 07:22:00 +0000 |
commit | 19a0a17aee02f48c6d9bd7c9d37b6f5595b27f58 (patch) | |
tree | 5c5e41facf57ef4825e7b3b24cf64955e807a594 /compiler/ptconst.pas | |
parent | c2fcb6231f55b2c2e0881dee4faf3d44cf8abcc6 (diff) | |
download | fpc-19a0a17aee02f48c6d9bd7c9d37b6f5595b27f58.tar.gz |
* tprocdef.mangledname now gets an extra boolean parameter indicating
whether the mangled name is for defining a symbol, or for referencing
it later (e.g. for a call or load of its address). The reason is that
on the JVM both cases are different.
+ jvmdef unit to encode types according to the JVM rules
+ tprocdef.jvmmangledname() to encode a procdef's JVM mangled name
(the common part of defining/referencing it; tprocdef.mangledname
afterwards adorns it as required)
git-svn-id: http://svn.freepascal.org/svn/fpc/branches/jvmbackend@18288 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'compiler/ptconst.pas')
-rw-r--r-- | compiler/ptconst.pas | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/compiler/ptconst.pas b/compiler/ptconst.pas index ea55148e7e..fdf2a7c371 100644 --- a/compiler/ptconst.pas +++ b/compiler/ptconst.pas @@ -346,7 +346,7 @@ implementation { update wpo info } if not assigned(current_procinfo) or (po_inline in current_procinfo.procdef.procoptions) or - wpoinfomanager.symbol_live(current_procinfo.procdef.mangledname) then + wpoinfomanager.symbol_live(current_procinfo.procdef.mangledname(true)) then tobjectdef(tclassrefdef(n.resultdef).pointeddef).register_maybe_created_object_type; end; niln: @@ -547,7 +547,7 @@ implementation if po_abstractmethod in pd.procoptions then Message(type_e_cant_take_address_of_abstract_method) else - list.concat(Tai_const.Createname(pd.mangledname,offset)); + list.concat(Tai_const.Createname(pd.mangledname(false),offset)); end; staticvarsym : list.concat(Tai_const.Createname(tstaticvarsym(srsym).mangledname,offset)); @@ -1014,7 +1014,7 @@ implementation (tloadnode(n).symtableentry.typ=procsym) then begin pd:=tloadnode(n).procdef; - list.concat(Tai_const.createname(pd.mangledname,0)); + list.concat(Tai_const.createname(pd.mangledname(false),0)); { nested procvar typed consts can only be initialised with nil (checked above) or with a global procedure (checked here), because in other cases we need a valid frame pointer } |