[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