git @ Cat's Eye Technologies Bhuna / master src / lib / closure.h
master

Tree @master (Download .tar.gz)

closure.h @masterraw · history · blame

#ifndef __CLOSURE_H_
#define __CLOSURE_H_

#include "vm.h"

struct activation;
struct ast;
struct icode;

struct closure {
	struct ast		*ast;	/* where it is in AST */
	struct icode		*icode;	/* where it is in icode */
	vm_label_t		 label;	/* where it is in vm */
	struct activation	*ar;	/* env in which we were created */
	int			 arity;	/* takes this many arguments */
	int			 locals;/* has this many local variables */
	int			 cc;	/* contains this many closures */
};

struct closure	*closure_new(struct ast *, struct activation *, int, int, int);
void		 closure_free(struct closure *);
void		 closure_dump(struct closure *);

#endif