Lines Matching refs:stack
4 * Stack-less Just-In-Time compiler
188 /* Stack */
251 struct sljit_stack *stack;
280 stack = (struct sljit_stack*)SLJIT_MALLOC(sizeof(struct sljit_stack), allocator_data);
281 if (!stack)
290 SLJIT_FREE(stack, allocator_data);
293 stack->max_limit = (sljit_u8 *)ptr;
294 stack->base = stack->max_limit + max_limit;
295 stack->limit = stack->base;
296 if (sljit_stack_resize(stack, stack->base - limit)) {
297 sljit_free_stack(stack, allocator_data);
303 SLJIT_FREE(stack, allocator_data);
306 stack->max_limit = (sljit_u8 *)ptr;
307 stack->base = stack->max_limit + max_limit;
308 stack->limit = stack->base - limit;
315 SLJIT_FREE(stack, allocator_data);
322 SLJIT_FREE(stack, allocator_data);
325 stack->max_limit = (sljit_u8 *)ptr;
326 stack->base = stack->max_limit + max_limit;
327 stack->limit = stack->base - limit;
329 stack->top = stack->base;
330 return stack;
335 SLJIT_API_FUNC_ATTRIBUTE void SLJIT_CALL sljit_free_stack(struct sljit_stack *stack, void *allocator_data)
339 VirtualFree((void*)stack->max_limit, 0, MEM_RELEASE);
341 uvm_km_free(kernel_map, (vaddr_t)stack->max_limit,
342 stack->base - stack->max_limit, UVM_KMF_WIRED);
344 munmap((void*)stack->max_limit, stack->base - stack->max_limit);
346 SLJIT_FREE(stack, allocator_data);
349 SLJIT_API_FUNC_ATTRIBUTE sljit_sw SLJIT_CALL sljit_stack_resize(struct sljit_stack *stack, sljit_u8 *new_limit)
356 if ((new_limit < stack->max_limit) || (new_limit >= stack->base))
360 aligned_old_limit = ((sljit_uw)stack->limit) & ~sljit_page_align;
371 stack->limit = new_limit;
374 if (new_limit <= stack->limit) {
375 stack->limit = new_limit;
380 aligned_old_limit = ((sljit_uw)stack->limit) & ~sljit_page_align;
390 stack->limit = new_limit;