added byte_arrays fns to vm
parent
25d0bb756f
commit
fa46b90197
|
@ -3,32 +3,52 @@
|
|||
namespace factor
|
||||
{
|
||||
|
||||
byte_array *allot_byte_array(cell size)
|
||||
byte_array *factorvm::allot_byte_array(cell size)
|
||||
{
|
||||
byte_array *array = allot_array_internal<byte_array>(size);
|
||||
memset(array + 1,0,size);
|
||||
return array;
|
||||
}
|
||||
|
||||
PRIMITIVE(byte_array)
|
||||
byte_array *allot_byte_array(cell size)
|
||||
{
|
||||
return vm->allot_byte_array(size);
|
||||
}
|
||||
|
||||
inline void factorvm::vmprim_byte_array()
|
||||
{
|
||||
cell size = unbox_array_size();
|
||||
dpush(tag<byte_array>(allot_byte_array(size)));
|
||||
}
|
||||
|
||||
PRIMITIVE(uninitialized_byte_array)
|
||||
PRIMITIVE(byte_array)
|
||||
{
|
||||
PRIMITIVE_GETVM()->vmprim_byte_array();
|
||||
}
|
||||
|
||||
inline void factorvm::vmprim_uninitialized_byte_array()
|
||||
{
|
||||
cell size = unbox_array_size();
|
||||
dpush(tag<byte_array>(allot_array_internal<byte_array>(size)));
|
||||
}
|
||||
|
||||
PRIMITIVE(resize_byte_array)
|
||||
PRIMITIVE(uninitialized_byte_array)
|
||||
{
|
||||
PRIMITIVE_GETVM()->vmprim_uninitialized_byte_array();
|
||||
}
|
||||
|
||||
inline void factorvm::vmprim_resize_byte_array()
|
||||
{
|
||||
byte_array *array = untag_check<byte_array>(dpop());
|
||||
cell capacity = unbox_array_size();
|
||||
dpush(tag<byte_array>(reallot_array(array,capacity)));
|
||||
}
|
||||
|
||||
PRIMITIVE(resize_byte_array)
|
||||
{
|
||||
PRIMITIVE_GETVM()->vmprim_resize_byte_array();
|
||||
}
|
||||
|
||||
void growable_byte_array::append_bytes(void *elts, cell len)
|
||||
{
|
||||
cell new_size = count + len;
|
||||
|
|
|
@ -225,6 +225,12 @@ struct factorvm {
|
|||
//booleans
|
||||
void box_boolean(bool value);
|
||||
bool to_boolean(cell value);
|
||||
|
||||
//byte arrays
|
||||
byte_array *allot_byte_array(cell size);
|
||||
inline void vmprim_byte_array();
|
||||
inline void vmprim_uninitialized_byte_array();
|
||||
inline void vmprim_resize_byte_array();
|
||||
// next method here:
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue