From dad12d7655b68fafc97ff1645f42b1cc50406916 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?= <grubba@grubba.org> Date: Thu, 25 Nov 1999 17:39:31 +0100 Subject: [PATCH] Now generates code to support run-time checks of soft casts. Rev: src/docode.c:1.58 --- src/docode.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/docode.c b/src/docode.c index 11d4fa0b2d..6c1e0c86da 100644 --- a/src/docode.c +++ b/src/docode.c @@ -5,7 +5,7 @@ \*/ /**/ #include "global.h" -RCSID("$Id: docode.c,v 1.57 1999/11/23 22:37:14 grubba Exp $"); +RCSID("$Id: docode.c,v 1.58 1999/11/25 16:39:31 grubba Exp $"); #include "las.h" #include "program.h" #include "language.h" @@ -706,7 +706,20 @@ static int do_docode2(node *n,int flags) return 1; case F_SOFT_CAST: - return do_docode(CAR(n), flags); +#ifdef PIKE_DEBUG + if (d_flag) { + tmp1 = store_prog_string(n->type); + emit(F_STRING, tmp1); + tmp1 = do_docode(CAR(n), 0); + if (!tmp1) { emit2(F_CONST0); tmp1 = 1; } + if (tmp1 > 1) do_pop(tmp1 - 1); + emit2(F_SOFT_CAST); + return 1; + } +#endif /* PIKE_DEBUG */ + tmp1 = do_docode(CAR(n), flags); + if (tmp1 > 1) do_pop(tmp1 - 1); + return !!tmp1; case F_APPLY: if(CAR(n)->token == F_CONSTANT) -- GitLab