summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog.melt5
-rw-r--r--gcc/melt/warm-basilys.bysl12
2 files changed, 15 insertions, 2 deletions
diff --git a/gcc/ChangeLog.melt b/gcc/ChangeLog.melt
index c2958abc63b..f52b4cf702d 100644
--- a/gcc/ChangeLog.melt
+++ b/gcc/ChangeLog.melt
@@ -1,5 +1,10 @@
2008-04-14 Basile Starynkevitch <basile@starynkevitch.net>
+ * melt/warm-basilys.bysl: adding pamater passing capacity to
+ constant cstrings in ctype_cstring. This requires a change in
+ contrib/cold-basilys.lisp which is not yet implemented.
+
+2008-04-14 Basile Starynkevitch <basile@starynkevitch.net>
* basilys.h: (basilys_allocatereserved) removed the call
fatal_error and wrapped it into
basilys_reserved_allocation_failure.
diff --git a/gcc/melt/warm-basilys.bysl b/gcc/melt/warm-basilys.bysl
index 1d3b80bf7b9..000e84b29ef 100644
--- a/gcc/melt/warm-basilys.bysl
+++ b/gcc/melt/warm-basilys.bysl
@@ -823,7 +823,9 @@
:named_name (stringconst2val discr_namestring "CTYPE_CSTRING")
:ctype_keyword ':cstring
:ctype_cname (stringconst2val discr_namestring "char*")
- ;; constant strings are not passed as argument, this might change in the future
+ :ctype_parchar (stringconst2val discr_namestring "BPAR_CSTRING")
+ :ctype_parstring (stringconst2val discr_namestring "BPARSTR_CSTRING")
+ :ctype_argfield (stringconst2val discr_namestring "bp_cstring")
)
(install_ctype ctype_cstring)
@@ -4373,7 +4375,11 @@
;; previous instance binding at toplevel
( (is_a bind class_instance_binding)
(debug_msg "normexp_symbol instance binding bind" bind (the_callcount))
- (assert_msg "normexp_symbol @@ UNIMPLEMENTED instance_binding" ())
+ (let ( (insdat (unsafe_get_field :ibind_data bind)) )
+ (assert_msg "normexp_symbol check insdat" (is_a insdat class_nrep_datainstance))
+ ;; cache the result & return it
+ (mapobject_put sycmap recv insdat)
+ insdat)
)
;; all other cases are constants
(:else
@@ -5207,6 +5213,7 @@
(cond
;;; last expression is already a return - do nothing
( (is_a lastcomp class_nrep_return)
+ (return tup)
)
;;; last expression is a symbol occurrence (closed or local) - return it if it is a value
( (is_a lastcomp class_nrep_symocc)
@@ -5225,6 +5232,7 @@
:nret_main lastcomp)))
;;; no last expression - don't bother to return
( (null lastcomp)
+ (return tup)
)
;;; last expression is a normalized let, recurse on the body within a new env
( (is_a lastcomp class_nrep_let)