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