Exemplo n.º 1
0
void Layouts_init(void) {
    if (ARRAY_size(layouts_) < TAG_USERDEFINED)
        Layouts_setLargestTag(TAG_USERDEFINED-1);
    Layout* l = initLayout(TAG_EVALUATING);
    l->type = LAYOUT_SMALL_NOPTRS;
    l->x.noPtrs.nWords = 1;
    l = initLayout(TAG_INDIRECT);
    l->type = LAYOUT_INDIRECT;
}
Exemplo n.º 2
0
static kbool_t FuelVM_VisitBlockNode(KonohaContext *kctx, KBuilder *builder, kNode *block, void *thunk)
{
	unsigned size = ARRAY_size(BLD(builder)->Stack);
	Block *NewBlock = CreateBlock(BLD(builder));
	IRBuilder_JumpTo(BLD(builder), NewBlock);
	IRBuilder_setBlock(BLD(builder), NewBlock);
	size_t i;
	for(i = 0; i < kNode_GetNodeListSize(kctx, block); i++) {
		kNode *stmt = block->NodeList->NodeItems[i];
		builder->common.uline = kNode_uline(stmt);
		if(!SUGAR VisitNode(kctx, builder, stmt, thunk))
			break;
	}
	ARRAY_size(BLD(builder)->Stack) = size;
	if(builder->Value) {
		INode *Node = FuelVM_getExpression(builder);
		builder->Value = Node;
	}
	return true;
}
Exemplo n.º 3
0
int PARSER_free(PARSECONTEXT *ctx)
{
  SHLIB **val;
  size_t i;

  if (LEXER_free( &ctx->lexctx )) {
    return -1;
  }

  // unload extension libraries
  for( i = 0; i < ARRAY_size( &ctx->extension_libs ); i ++ ) {
    val = (SHLIB ** ) ARRAY_at( &ctx->extension_libs, i );
    SHLIB_unload( *val );
    free( *val );
  }

  return 0;
}