Lines Matching full:vm
46 #include <vm.h>
119 * @param vm The @a BcVm to set as the thread data.
123 bcl_setspecific(BcVm* vm)
131 r = pthread_setspecific(tls_real, vm);
140 r = TlsSetValue(tls_real, vm);
151 BcVm* vm;
155 vm = pthread_getspecific(tls_real);
159 vm = TlsGetValue(tls_real);
163 return vm;
170 BcVm* vm;
174 vm = bcl_getspecific();
175 if (vm != NULL)
177 assert(vm->refs >= 1);
179 vm->refs += 1;
184 vm = bc_vm_malloc(sizeof(BcVm));
185 if (BC_ERR(vm == NULL)) return BCL_ERROR_FATAL_ALLOC_ERR;
187 e = bcl_setspecific(vm);
190 free(vm);
194 memset(vm, 0, sizeof(BcVm));
196 vm->refs += 1;
198 assert(vm->refs == 1);
202 vm->ctxts.v = NULL;
203 vm->jmp_bufs.v = NULL;
204 vm->out.v = NULL;
206 vm->abrt = false;
207 vm->leading_zeroes = false;
208 vm->digit_clamp = true;
211 bc_vec_init(&vm->jmp_bufs, sizeof(sigjmp_buf), BC_DTOR_NONE);
213 BC_FUNC_HEADER(vm, err);
217 bc_vec_init(&vm->ctxts, sizeof(BclContext), BC_DTOR_NONE);
218 bc_vec_init(&vm->out, sizeof(uchar), BC_DTOR_NONE);
224 bc_rand_init(&vm->rng);
230 BC_FUNC_FOOTER(vm, e);
233 if (BC_ERR(vm != NULL && vm->err))
235 if (vm->out.v != NULL) bc_vec_free(&vm->out);
236 if (vm->jmp_bufs.v != NULL) bc_vec_free(&vm->jmp_bufs);
237 if (vm->ctxts.v != NULL) bc_vec_free(&vm->ctxts);
239 free(vm);
249 BcVm* vm = bcl_getspecific();
251 BC_FUNC_HEADER(vm, err);
253 bc_vec_push(&vm->ctxts, &ctxt);
257 BC_FUNC_FOOTER(vm, e);
264 BcVm* vm = bcl_getspecific();
266 if (vm->ctxts.len) bc_vec_pop(&vm->ctxts);
270 bcl_contextHelper(BcVm* vm)
272 if (!vm->ctxts.len) return NULL;
273 return *((BclContext*) bc_vec_top(&vm->ctxts));
279 BcVm* vm = bcl_getspecific();
280 return bcl_contextHelper(vm);
287 BcVm* vm = bcl_getspecific();
289 vm->refs -= 1;
290 if (vm->refs) return;
293 bc_rand_free(&vm->rng);
295 bc_vec_free(&vm->out);
297 for (i = 0; i < vm->ctxts.len; ++i)
299 BclContext ctxt = *((BclContext*) bc_vec_item(&vm->ctxts, i));
303 bc_vec_free(&vm->ctxts);
307 free(vm);
338 BcVm* vm = bcl_getspecific();
340 return vm->abrt;
346 BcVm* vm = bcl_getspecific();
348 vm->abrt = abrt;
354 BcVm* vm = bcl_getspecific();
356 return vm->leading_zeroes;
362 BcVm* vm = bcl_getspecific();
364 vm->leading_zeroes = leadingZeroes;
370 BcVm* vm = bcl_getspecific();
372 return vm->digit_clamp;
378 BcVm* vm = bcl_getspecific();
380 vm->digit_clamp = digitClamp;
386 BcVm* vm = bcl_getspecific();
389 BC_FUNC_HEADER(vm, err);
404 if (BC_ERR(vm->err && ctxt != NULL))
411 BC_FUNC_FOOTER_NO_ERR(vm);
473 BcVm* vm = bcl_getspecific();
475 BC_CHECK_CTXT_ERR(vm, ctxt);
551 BcVm* vm = bcl_getspecific();
553 BC_CHECK_CTXT(vm, ctxt);
555 BC_FUNC_HEADER(vm, err);
563 BC_FUNC_FOOTER(vm, e);
595 BcVm* vm = bcl_getspecific();
597 BC_CHECK_CTXT_ASSERT(vm, ctxt);
615 BcVm* vm = bcl_getspecific();
617 BC_CHECK_CTXT_ERR(vm, ctxt);
622 BC_FUNC_HEADER(vm, err);
637 BC_FUNC_FOOTER(vm, e);
649 BcVm* vm = bcl_getspecific();
651 BC_CHECK_CTXT(vm, ctxt);
655 BC_FUNC_HEADER(vm, err);
671 BC_FUNC_FOOTER(vm, e);
695 BcVm* vm = bcl_getspecific();
697 BC_CHECK_CTXT_ASSERT(vm, ctxt);
715 BcVm* vm = bcl_getspecific();
717 BC_CHECK_CTXT_ASSERT(vm, ctxt);
735 BcVm* vm = bcl_getspecific();
737 BC_CHECK_CTXT_ASSERT(vm, ctxt);
756 BcVm* vm = bcl_getspecific();
758 BC_CHECK_CTXT_ERR(vm, ctxt);
764 BC_FUNC_HEADER(vm, err);
783 BC_FUNC_FOOTER(vm, e);
793 BcVm* vm = bcl_getspecific();
795 BC_CHECK_CTXT_ASSERT(vm, ctxt);
814 BcVm* vm = bcl_getspecific();
816 BC_CHECK_CTXT_ERR(vm, ctxt);
820 BC_FUNC_HEADER(vm, err);
838 BC_FUNC_FOOTER(vm, e);
862 BcVm* vm = bcl_getspecific();
864 BC_CHECK_CTXT(vm, ctxt);
866 BC_FUNC_HEADER(vm, err);
874 BC_FUNC_FOOTER(vm, e);
900 BcVm* vm = bcl_getspecific();
902 BC_CHECK_CTXT(vm, ctxt);
907 BC_FUNC_HEADER(vm, err);
935 BC_FUNC_FOOTER(vm, e);
1045 BcVm* vm = bcl_getspecific();
1047 BC_CHECK_CTXT(vm, ctxt);
1051 BC_FUNC_HEADER(vm, err);
1068 BC_FUNC_FOOTER(vm, e);
1096 BcVm* vm = bcl_getspecific();
1098 BC_CHECK_CTXT_ERR(vm, ctxt);
1103 BC_FUNC_HEADER(vm, err);
1122 BC_UNSETJMP(vm);
1123 BC_SETJMP(vm, err);
1139 if (BC_ERR(vm->err))
1149 BC_FUNC_FOOTER(vm, e);
1153 BC_FUNC_FOOTER(vm, e);
1186 BcVm* vm = bcl_getspecific();
1188 BC_CHECK_CTXT(vm, ctxt);
1194 BC_FUNC_HEADER(vm, err);
1230 BC_FUNC_FOOTER(vm, e);
1254 BcVm* vm = bcl_getspecific();
1256 BC_CHECK_CTXT_ASSERT(vm, ctxt);
1277 BcVm* vm = bcl_getspecific();
1279 BC_CHECK_CTXT_ASSERT(vm, ctxt);
1297 BcVm* vm = bcl_getspecific();
1299 BC_CHECK_CTXT_ASSERT(vm, ctxt);
1319 BcVm* vm = bcl_getspecific();
1322 BC_CHECK_CTXT(vm, ctxt);
1324 BC_FUNC_HEADER(vm, err);
1338 vm->err = BCL_ERROR_PARSE_INVALID_STR;
1357 BC_FUNC_FOOTER(vm, e);
1369 BcVm* vm = bcl_getspecific();
1371 BC_CHECK_CTXT_ASSERT(vm, ctxt);
1377 BC_FUNC_HEADER(vm, err);
1386 bc_vec_popAll(&vm->out);
1390 bc_vec_pushByte(&vm->out, '\0');
1393 str = bc_vm_strdup(vm->out.v);
1403 BC_FUNC_FOOTER_NO_ERR(vm);
1430 BcVm* vm = bcl_getspecific();
1432 BC_CHECK_CTXT(vm, ctxt);
1436 BC_FUNC_HEADER(vm, err);
1450 bc_num_irand(BCL_NUM_NUM(aptr), BCL_NUM_NUM_NP(b), &vm->rng);
1460 BC_FUNC_FOOTER(vm, e);
1490 BcVm* vm = bcl_getspecific();
1507 BC_SETJMP(vm, err);
1511 bc_num_irand(&pow, b, &vm->rng);
1519 BC_LONGJMP_CONT(vm);
1529 BcVm* vm = bcl_getspecific();
1531 BC_CHECK_CTXT(vm, ctxt);
1533 BC_FUNC_HEADER(vm, err);
1545 BC_FUNC_FOOTER(vm, e);
1562 BcVm* vm = bcl_getspecific();
1572 BC_SETJMP(vm, err);
1574 bc_num_irand(a, &ir, &vm->rng);
1583 BC_LONGJMP_CONT(vm);
1594 BcVm* vm = bcl_getspecific();
1596 BC_CHECK_CTXT(vm, ctxt);
1599 BC_FUNC_HEADER(vm, err);
1623 BC_FUNC_FOOTER(vm, e);
1647 BcVm* vm = bcl_getspecific();
1649 BC_CHECK_CTXT_ERR(vm, ctxt);
1652 BC_FUNC_HEADER(vm, err);
1660 bc_num_rng(BCL_NUM_NUM(nptr), &vm->rng);
1670 BC_FUNC_FOOTER(vm, e);
1693 BcVm* vm = bcl_getspecific();
1695 BC_FUNC_HEADER(vm, err);
1705 bc_rand_seed(&vm->rng, vals[0], vals[1], vals[2], vals[3]);
1709 BC_FUNC_FOOTER(vm, e);
1717 BcVm* vm = bcl_getspecific();
1719 bc_rand_srand(bc_vec_top(&vm->rng.v));
1729 BcVm* vm = bcl_getspecific();
1731 BC_CHECK_CTXT(vm, ctxt);
1733 BC_FUNC_HEADER(vm, err);
1739 bc_num_createFromRNG(BCL_NUM_NUM_NP(n), &vm->rng);
1743 BC_FUNC_FOOTER(vm, e);
1752 BcVm* vm = bcl_getspecific();
1754 return (BclRandInt) bc_rand_int(&vm->rng);
1760 BcVm* vm = bcl_getspecific();
1763 return (BclRandInt) bc_rand_bounded(&vm->rng, (BcRand) bound);