From 846e431372fecea5b5c92414d1a0e2cfccd7efc3 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Sun, 18 Nov 1990 17:44:06 +0000 Subject: Function objects no longer contain a parse tree node, but intermediate code. --- Objects/funcobject.c | 51 +++++++++++++-------------------------------------- 1 file changed, 13 insertions(+), 38 deletions(-) diff --git a/Objects/funcobject.c b/Objects/funcobject.c index 1adc3bc..8850872 100644 --- a/Objects/funcobject.c +++ b/Objects/funcobject.c @@ -4,42 +4,39 @@ #include "PROTO.h" #include "object.h" -#include "node.h" -#include "stringobject.h" #include "funcobject.h" #include "objimpl.h" -#include "token.h" typedef struct { OB_HEAD - node *func_node; + object *func_code; object *func_globals; } funcobject; object * -newfuncobject(n, globals) - node *n; +newfuncobject(code, globals) + object *code; object *globals; { funcobject *op = NEWOBJ(funcobject, &Functype); if (op != NULL) { - op->func_node = n; - if (globals != NULL) - INCREF(globals); + INCREF(code); + op->func_code = code; + INCREF(globals); op->func_globals = globals; } return (object *)op; } -node * -getfuncnode(op) +object * +getfunccode(op) object *op; { if (!is_funcobject(op)) { err_badcall(); return NULL; } - return ((funcobject *) op) -> func_node; + return ((funcobject *) op) -> func_code; } object * @@ -59,31 +56,9 @@ static void funcdealloc(op) funcobject *op; { - /* XXX free node? */ + DECREF(op->func_code); DECREF(op->func_globals); - free((char *)op); -} - -static void -funcprint(op, fp, flags) - funcobject *op; - FILE *fp; - int flags; -{ - node *n = op->func_node; - n = CHILD(n, 1); - fprintf(fp, "", STR(n)); -} - -static object * -funcrepr(op) - funcobject *op; -{ - char buf[100]; - node *n = op->func_node; - n = CHILD(n, 1); - sprintf(buf, "", STR(n)); - return newstringobject(buf); + DEL(op); } typeobject Functype = { @@ -93,9 +68,9 @@ typeobject Functype = { sizeof(funcobject), 0, funcdealloc, /*tp_dealloc*/ - funcprint, /*tp_print*/ + 0, /*tp_print*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ 0, /*tp_compare*/ - funcrepr, /*tp_repr*/ + 0, /*tp_repr*/ }; -- cgit v0.12