diff options
author | jonas <jonas@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2013-06-02 10:24:02 +0000 |
---|---|---|
committer | jonas <jonas@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2013-06-02 10:24:02 +0000 |
commit | f63e076319f6b745af7568b42958afd9f06e9e41 (patch) | |
tree | b3cee24411d923b1247cbbed6e7662b82795e0bd /compiler/jvm | |
parent | 3b25c9de37f1ec2ab8e4cb1d125e8a72718d7619 (diff) | |
download | fpc-f63e076319f6b745af7568b42958afd9f06e9e41.tar.gz |
* add a tdef to each parameter location and set it for all target
backends (not yet used, will be used in high level code generator)
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@24761 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'compiler/jvm')
-rw-r--r-- | compiler/jvm/cpupara.pas | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/compiler/jvm/cpupara.pas b/compiler/jvm/cpupara.pas index 7d1294c11e..42abaf780d 100644 --- a/compiler/jvm/cpupara.pas +++ b/compiler/jvm/cpupara.pas @@ -147,6 +147,7 @@ implementation result.size:=OS_NO; result.intsize:=0; paraloc^.size:=OS_NO; + paraloc^.def:=voidtype; paraloc^.loc:=LOC_VOID; exit; end; @@ -156,6 +157,11 @@ implementation retcgsize:=OS_INT; result.intsize:=sizeof(pint); end + else if jvmimplicitpointertype(result.def) then + begin + retcgsize:=OS_ADDR; + result.def:=getpointerdef(result.def); + end else begin retcgsize:=def_cgsize(result.def); @@ -168,6 +174,8 @@ implementation paraloc^.loc:=LOC_REFERENCE; paraloc^.reference.index:=NR_EVAL_STACK_BASE; paraloc^.reference.offset:=0; + paraloc^.size:=result.size; + paraloc^.def:=result.def; end; function TJVMParaManager.param_use_paraloc(const cgpara: tcgpara): boolean; @@ -226,6 +234,11 @@ implementation paracgsize:=OS_ADDR; paradef:=java_jlobject; end + else if jvmimplicitpointertype(hp.vardef) then + begin + paracgsize:=OS_ADDR; + paradef:=getpointerdef(hp.vardef); + end else begin paracgsize:=def_cgsize(hp.vardef); @@ -246,6 +259,8 @@ implementation taking up two slots) } paraloc^.loc:=LOC_REFERENCE;; paraloc^.reference.offset:=paraofs; + paraloc^.size:=paracgsize; + paraloc^.def:=paradef; case side of callerside: begin |