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