Ejemplo n.º 1
0
const char* test_object_stack() {
  gc_object_stack stack;

  os_pointer pa = (os_pointer)0xABCDABCDABCDABCD;
  os_pointer pb = (os_pointer)0x1337133713371337;

  initialize_object_stack(&stack, 10);

  push_object(pa, &stack);
  if(stack.stack_low[0] != pa) return "push 1 failed";

  push_object(pb, &stack);
  if(stack.stack_low[1] != pb) return "push 2 failed";

  if(pop_object(&stack) != pb) return "pop 1 failed";

  if(is_object_stack_empty(&stack)) return "is empty 1 failed";

  if(pop_object(&stack) != pa) return "pop 2 failed";

  if(!is_object_stack_empty(&stack)) return "is empty 2 failed";

  finalize_object_stack(&stack);

  return "passed";
}
Ejemplo n.º 2
0
static CLObject create_range_object_for_new(CLObject type_object, sVMInfo* info)
{
    CLObject self;
    CLObject head_object;
    CLObject tail_object;

    head_object = create_int_object(0);
    push_object(head_object, info);

    tail_object = create_int_object(0);
    push_object(tail_object, info);

    self = create_range_object(type_object, head_object, tail_object);
    CLOBJECT_HEADER(self)->mType = type_object;

    pop_object(info);
    pop_object(info);

    return self;
}
Ejemplo n.º 3
0
static CLObject create_bool_object_for_new(CLObject type_object, sVMInfo* info)
{
    CLObject self;

    self = create_bool_object(0);
    push_object(self, info);

    CLOBJECT_HEADER(self)->mType = type_object;

    pop_object(info);

    return self;
}
Ejemplo n.º 4
0
static CLObject alloc_bytes_object(unsigned int len2, CLObject type_object, sVMInfo* info)
{
    CLObject obj;
    CLObject obj2;
    unsigned int size;
    unsigned int chars_size;

    size = object_size();
    obj = alloc_heap_mem(size, type_object);

    push_object(obj, info);

    chars_size = chars_object_size(len2);
    obj2 = alloc_heap_mem(chars_size, 0);
    CLBYTES(obj)->mData = obj2;

    pop_object(info);

    return obj;
}
Ejemplo n.º 5
0
 void do_end_object(const basic_parsing_context<char_type>&) override
 {
     end_structure();
     pop_object();
 }