return new_array.untagged();
}
-
/* push a new array on the stack */
inline void factorvm::primitive_array()
{
return a.value();
}
-
cell factorvm::allot_array_2(cell v1_, cell v2_)
{
gc_root<object> v1(v1_,this);
return a.value();
}
-
cell factorvm::allot_array_4(cell v1_, cell v2_, cell v3_, cell v4_)
{
gc_root<object> v1(v1_,this);
return a.value();
}
-
inline void factorvm::primitive_resize_array()
{
array* a = untag_check<array>(dpop());
return (relocation_type)((r & 0xf0000000) >> 28);
}
-
relocation_class factorvm::relocation_class_of(relocation_entry r)
{
return (relocation_class)((r & 0x0f000000) >> 24);
}
-
cell factorvm::relocation_offset_of(relocation_entry r)
{
return (r & 0x00ffffff);
}
-
void factorvm::flush_icache_for(code_block *block)
{
flush_icache((cell)block,block->size);
}
-
int factorvm::number_of_parameters(relocation_type type)
{
switch(type)
}
}
-
void *factorvm::object_xt(cell obj)
{
switch(tagged<object>(obj).type())
}
}
-
void *factorvm::xt_pic(word *w, cell tagged_quot)
{
if(tagged_quot == F || max_pic_size == 0)
}
}
-
void *factorvm::word_xt_pic(word *w)
{
return xt_pic(w,w->pic_def);
}
-
void *factorvm::word_xt_pic_tail(word *w)
{
return xt_pic(w,w->pic_tail_def);
}
-
/* References to undefined symbols are patched up to call this function on
image load */
void factorvm::undefined_symbol()
}
}
-
cell factorvm::compute_relocation(relocation_entry rel, cell index, code_block *compiled)
{
array *literals = untag<array>(compiled->literals);
#undef ARG
}
-
void factorvm::iterate_relocations(code_block *compiled, relocation_iterator iter)
{
if(compiled->relocation != F)
}
}
-
/* Store a 32-bit value into a PowerPC LIS/ORI sequence */
void factorvm::store_address_2_2(cell *ptr, cell value)
{
ptr[ 0] = ((ptr[ 0] & ~0xffff) | (value & 0xffff));
}
-
/* Store a value into a bitfield of a PowerPC instruction */
void factorvm::store_address_masked(cell *ptr, fixnum value, cell mask, fixnum shift)
{
*ptr = ((*ptr & ~mask) | ((value >> shift) & mask));
}
-
/* Perform a fixup on a code block */
void factorvm::store_address_in_code_block(cell klass, cell offset, fixnum absolute_value)
{
}
}
-
void factorvm::update_literal_references_step(relocation_entry rel, cell index, code_block *compiled)
{
if(relocation_type_of(rel) == RT_IMMEDIATE)
}
}
-
/* Copy all literals referenced from a code block to newspace. Only for
aging and nursery collections */
void factorvm::copy_literal_references(code_block *compiled)
#endif
}
-
/* Update references to words. This is done after a new code block
is added to the heap. */
copy_handle(&compiled->relocation);
}
-
void factorvm::mark_stack_frame_step(stack_frame *frame)
{
mark_code_block(frame_code(frame));
}
}
-
void factorvm::mark_object_code_block(object *object)
{
switch(object->h.hi_tag())
}
}
-
/* Perform all fixups on a code block */
void factorvm::relocate_code_block(code_block *compiled)
{
}
}
-
/* Might GC */
code_block *factorvm::allot_code_block(cell size)
{
return (code_block *)block;
}
-
/* Might GC */
code_block *factorvm::add_code_block(cell type,cell code_,cell labels_,cell relocation_,cell literals_)
{
return compiled;
}
-
}