/* mkexec.c
*
* COPYRIGHT (c) 1994 by AT&T Bell Laboratories.
*/
#include "cache-flush.h"
#include "ml-base.h"
#include "ml-objects.h"
#include "ml-state.h"
#include "cfun-proto-list.h"
/* _ml_RunT_mkexec : Word8Array.array * int -> (object -> object)
*
* Turn a previously allocated code object into a closure. This means
* flushing the I-cache.
*/
ml_val_t _ml_RunT_mkexec (ml_state_t *msp, ml_val_t arg)
{
ml_val_t seq = REC_SEL(arg, 0);
int entrypoint = REC_SELINT(arg, 1);
char *code = GET_SEQ_DATAPTR(char, seq);
Word_t nbytes = GET_SEQ_LEN(seq);
ml_val_t res;
FlushICache (code, nbytes);
REC_ALLOC1(msp, res, PTR_CtoML(code + entrypoint));
return res;
} /* end of _ml_RunT_mkexec */
syntax highlighted by Code2HTML, v. 0.9.1