// All quotations wants a stack frame, except if they contain: // 1) calls to the special subprimitives, see #295. // 2) mega cache lookups, see #651 bool quotation_jit::stack_frame_p() { cell length = array_capacity(elements.untagged()); for (cell i = 0; i < length; i++) { cell obj = nth(i); cell tag = TAG(obj); if ((tag == WORD_TYPE && special_subprimitive_p(obj)) || (tag == ARRAY_TYPE && mega_lookup_p(i, length))) return false; } return true; }
cell quotation_jit::word_stack_frame_size(cell obj) { if (special_subprimitive_p(obj)) return SIGNAL_HANDLER_STACK_FRAME_SIZE; return JIT_FRAME_SIZE; }
bool quotation_jit::word_safepoint_p(cell obj) { return !special_subprimitive_p(obj); }