[Gd-chatter] r10711 - in trunk/fundev/sources/dfmc: c-back-end harp-cg
andreas at gwydiondylan.org
andreas at gwydiondylan.org
Thu May 4 22:56:19 CEST 2006
Author: andreas
Date: Thu May 4 22:56:17 2006
New Revision: 10711
Modified:
trunk/fundev/sources/dfmc/c-back-end/c-mangle.dylan
trunk/fundev/sources/dfmc/harp-cg/harp-back-end.dylan
trunk/fundev/sources/dfmc/harp-cg/harp-cg.lid
trunk/fundev/sources/dfmc/harp-cg/harp-mangle.dylan
Log:
job: fd
It looks like name mangling needs to work on library initialization time, when we have no real back end in our hands yet. So we need to keep some dummy back ends around, and use these.
This will horribly fail if name mangling works different across platforms, but the old code did something like this as well.
Modified: trunk/fundev/sources/dfmc/c-back-end/c-mangle.dylan
==============================================================================
--- trunk/fundev/sources/dfmc/c-back-end/c-mangle.dylan (original)
+++ trunk/fundev/sources/dfmc/c-back-end/c-mangle.dylan Thu May 4 22:56:17 2006
@@ -6,16 +6,18 @@
Dual-license: GNU Lesser General Public License
Warranty: Distributed WITHOUT WARRANTY OF ANY KIND
+define constant $dummy-c-back-end = make(<c-back-end>);
+
define method c-global-mangle (name)
- global-mangle(current-back-end(), name);
+ global-mangle(current-back-end() | $dummy-c-back-end, name);
end method;
define method c-local-mangle (name)
- local-mangle(current-back-end(), name);
+ local-mangle(current-back-end() | $dummy-c-back-end, name);
end method;
define method c-raw-mangle (name)
- raw-mangle(current-back-end(), name);
+ raw-mangle(current-back-end() | $dummy-c-back-end, name);
end method;
define method c-type-name (o :: <&class>)
Modified: trunk/fundev/sources/dfmc/harp-cg/harp-back-end.dylan
==============================================================================
--- trunk/fundev/sources/dfmc/harp-cg/harp-back-end.dylan (original)
+++ trunk/fundev/sources/dfmc/harp-cg/harp-back-end.dylan Thu May 4 22:56:17 2006
@@ -203,21 +203,21 @@
method (reference :: <string>) => (runtime-reference :: <constant-reference>)
let runtime-object :: <dood-runtime-object> = make(<dood-runtime-object>, name: reference);
$runtime-objects[reference] := runtime-object;
- ins--constant-ref(current-back-end(), runtime-object);
+ ins--constant-ref(current-back-end() | $dummy-harp-back-end, runtime-object);
end method;
define constant make-local-runtime-reference =
method (reference :: <string>) => (runtime-reference :: <constant-reference>)
let runtime-object :: <dood-runtime-object> = make(<local-runtime-object>, name: reference);
$runtime-objects[reference] := runtime-object;
- ins--constant-ref(current-back-end(), runtime-object);
+ ins--constant-ref(current-back-end() | $dummy-harp-back-end, runtime-object);
end method;
define constant make-c-runtime-reference =
method (reference :: <string>) => (runtime-reference :: <constant-reference>)
let runtime-object :: <dood-runtime-object> = make(<c-runtime-object>, name: reference);
$runtime-objects[reference] := runtime-object;
- ins--constant-ref(current-back-end(), runtime-object);
+ ins--constant-ref(current-back-end() | $dummy-harp-back-end, runtime-object);
end method;
Modified: trunk/fundev/sources/dfmc/harp-cg/harp-cg.lid
==============================================================================
--- trunk/fundev/sources/dfmc/harp-cg/harp-cg.lid (original)
+++ trunk/fundev/sources/dfmc/harp-cg/harp-cg.lid Thu May 4 22:56:17 2006
@@ -1,7 +1,7 @@
library: dfmc-harp-cg
files: harp-cg-library
- harp-macros
harp-mangle
+ harp-macros
harp-back-end
harp-emit
harp-main
Modified: trunk/fundev/sources/dfmc/harp-cg/harp-mangle.dylan
==============================================================================
--- trunk/fundev/sources/dfmc/harp-cg/harp-mangle.dylan (original)
+++ trunk/fundev/sources/dfmc/harp-cg/harp-mangle.dylan Thu May 4 22:56:17 2006
@@ -6,13 +6,17 @@
Dual-license: GNU Lesser General Public License
Warranty: Distributed WITHOUT WARRANTY OF ANY KIND
+define class <dummy-harp-back-end> (<harp-back-end>)
+end;
+
+define constant $dummy-harp-back-end = make(<dummy-harp-back-end>);
define method harp-local-mangle (name)
- local-mangle(current-back-end(), name);
+ local-mangle(current-back-end() | $dummy-harp-back-end, name);
end method;
define method harp-raw-mangle (name)
- raw-mangle(current-back-end(), name);
+ raw-mangle(current-back-end() | $dummy-harp-back-end, name);
end method;
/// STRUCT MANGLING
More information about the chatter
mailing list