示例#1
0
// 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;
}
示例#2
0
cell quotation_jit::word_stack_frame_size(cell obj) {
  if (special_subprimitive_p(obj))
    return SIGNAL_HANDLER_STACK_FRAME_SIZE;
  return JIT_FRAME_SIZE;
}
示例#3
0
bool quotation_jit::word_safepoint_p(cell obj) {
  return !special_subprimitive_p(obj);
}