summaryrefslogtreecommitdiff
path: root/compiler/ngtcon.pas
diff options
context:
space:
mode:
authorjonas <jonas@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-08-20 08:21:59 +0000
committerjonas <jonas@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-08-20 08:21:59 +0000
commit3e13e2a12bc55893767132a081358543c25a4356 (patch)
treed89f6c1dd7ae8cad1d86a18bf8b8b5d47470c240 /compiler/ngtcon.pas
parentd6c03c1e96b78df13fb0af8eeedc1ac01881f7b9 (diff)
downloadfpc-3e13e2a12bc55893767132a081358543c25a4356.tar.gz
* make it possible to override parts of the typed constant code generation
by platform-specific units git-svn-id: http://svn.freepascal.org/svn/fpc/branches/jvmbackend@18658 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'compiler/ngtcon.pas')
-rw-r--r--compiler/ngtcon.pas20
1 files changed, 14 insertions, 6 deletions
diff --git a/compiler/ngtcon.pas b/compiler/ngtcon.pas
index 75c3f7eb1a..98899c19cb 100644
--- a/compiler/ngtcon.pas
+++ b/compiler/ngtcon.pas
@@ -62,8 +62,9 @@ interface
procedure tc_emit_stringdef(def: tstringdef; var node: tnode);virtual;abstract;
public
constructor create(sym: tstaticvarsym);
-// function parse_into_nodetree: tnode;
end;
+ ttypedconstbuilderclass = class of ttypedconstbuilder;
+
{ should be changed into nested type of tasmlisttypedconstbuilder when
possible }
@@ -95,12 +96,13 @@ interface
procedure tc_emit_enumdef(def: tenumdef; var node: tnode);override;
procedure tc_emit_stringdef(def: tstringdef; var node: tnode);override;
public
- constructor create(sym: tstaticvarsym);
+ constructor create(sym: tstaticvarsym);virtual;
function parse_into_asmlist: tasmlist;
end;
+ tasmlisttypedconstbuilderclass = class of tasmlisttypedconstbuilder;
tnodetreetypedconstbuilder = class(ttypedconstbuilder)
- private
+ protected
resultblock: tblocknode;
statmnt: tstatementnode;
@@ -108,7 +110,6 @@ interface
etc. }
basenode: tnode;
- protected
procedure parse_arraydef(def:tarraydef);override;
procedure parse_procvardef(def:tprocvardef);override;
procedure parse_recorddef(def:trecorddef);override;
@@ -122,10 +123,15 @@ interface
procedure tc_emit_enumdef(def: tenumdef; var node: tnode);override;
procedure tc_emit_stringdef(def: tstringdef; var node: tnode);override;
public
- constructor create(sym: tstaticvarsym; previnit: tnode);
+ constructor create(sym: tstaticvarsym; previnit: tnode);virtual;
destructor destroy;override;
function parse_into_nodetree: tnode;
end;
+ tnodetreetypedconstbuilderclass = class of tnodetreetypedconstbuilder;
+
+ var
+ ctypedconstbuilder: ttypedconstbuilderclass;
+
implementation
uses
@@ -2017,5 +2023,7 @@ uses
self.resultblock:=nil;
end;
-
+begin
+ { default to asmlist version, best for most targets }
+ ctypedconstbuilder:=tasmlisttypedconstbuilder;
end.