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"; }
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; }
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; }
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; }
void do_end_object(const basic_parsing_context<char_type>&) override { end_structure(); pop_object(); }