#define PUSH_LVAL(obj) \
do { \
CHECK_STACK; \
- gcc_jit_block_add_assignment (comp.bblock->gcc_bb, \
+ gcc_jit_block_add_assignment (comp.block->gcc_bb, \
NULL, \
*stack, \
gcc_jit_lvalue_as_rvalue(obj)); \
#define PUSH_RVAL(obj) \
do { \
CHECK_STACK; \
- gcc_jit_block_add_assignment (comp.bblock->gcc_bb, \
+ gcc_jit_block_add_assignment (comp.block->gcc_bb, \
NULL, \
*stack, \
(obj)); \
#define CASE(op) \
case op : \
if (COMP_DEBUG) \
- gcc_jit_block_add_comment (comp.bblock->gcc_bb, \
+ gcc_jit_block_add_comment (comp.block->gcc_bb, \
NULL, \
"Opcode " STR(op));
gcc_jit_rvalue *lisp_int0;
gcc_jit_function *pseudovectorp;
gcc_jit_function *bool_to_lisp_obj;
- basic_block_t *bblock; /* Current basic block */
+ basic_block_t *block; /* Current basic block */
Lisp_Object func_hash; /* f_name -> gcc_func */
} comp_t;
emit_cond_jump (gcc_jit_rvalue *test,
gcc_jit_block *then_target, gcc_jit_block *else_target)
{
- gcc_jit_block_end_with_conditional (comp.bblock->gcc_bb,
+ gcc_jit_block_end_with_conditional (comp.block->gcc_bb,
NULL,
test,
then_target,
else_target);
- comp.bblock->terminated = true;
+ comp.block->terminated = true;
}
/* Close current basic block emitting a comparison between two rval. */
NULL,
comp.cast_union_type,
"union_cast");
- gcc_jit_block_add_assignment (comp.bblock->gcc_bb,
+ gcc_jit_block_add_assignment (comp.block->gcc_bb,
NULL,
gcc_jit_lvalue_access_field (tmp_u,
NULL,
/* Construct fill and return a lisp object form a raw pointer. */
/* TODO should we pass the bb? */
static gcc_jit_rvalue *
-emit_lisp_obj_from_ptr (basic_block_t *bblock, void *p)
+emit_lisp_obj_from_ptr (basic_block_t *block, void *p)
{
static unsigned i;
if (SYMBOLP (p))
gcc_jit_block_add_comment (
- bblock->gcc_bb,
+ block->gcc_bb,
NULL,
format_string ("Symbol %s",
(char *) SDATA (SYMBOL_NAME (p))));
- gcc_jit_block_add_assignment (bblock->gcc_bb,
+ gcc_jit_block_add_assignment (block->gcc_bb,
NULL,
emit_lval_XLP (lisp_obj),
void_ptr);
p[n] = 0x...;
*/
- gcc_jit_block_add_comment (comp.bblock->gcc_bb,
+ gcc_jit_block_add_comment (comp.block->gcc_bb,
NULL,
format_string ("calling %s", f_name));
gcc_jit_type_get_pointer (comp.lisp_obj_type),
"p");
- gcc_jit_block_add_assignment(comp.bblock->gcc_bb, NULL,
+ gcc_jit_block_add_assignment(comp.block->gcc_bb, NULL,
p,
comp.scratch);
GCC_JIT_TYPE_UNSIGNED_INT),
i);
gcc_jit_block_add_assignment (
- comp.bblock->gcc_bb,
+ comp.block->gcc_bb,
NULL,
gcc_jit_context_new_array_access (comp.ctxt,
NULL,
gcc_jit_function_new_block (comp.pseudovectorp, "call_pseudovector");
/* Set current context as needed */
- basic_block_t bblock = { .gcc_bb = initial_block,
+ basic_block_t block = { .gcc_bb = initial_block,
.terminated = false };
- comp.bblock = &bblock;
+ comp.block = █
comp.func = comp.pseudovectorp;
emit_cond_jump (
call_pseudovector_typep_b,
ret_false_b);
- comp.bblock->gcc_bb = ret_false_b;
+ comp.block->gcc_bb = ret_false_b;
gcc_jit_block_end_with_return (ret_false_b,
NULL,
gcc_jit_context_new_rvalue_from_int(
gcc_jit_rvalue *args[2] =
{ gcc_jit_param_as_rvalue (param[0]),
gcc_jit_param_as_rvalue (param[1]) };
- comp.bblock->gcc_bb = call_pseudovector_typep_b;
+ comp.block->gcc_bb = call_pseudovector_typep_b;
/* FIXME XUNTAG missing here. */
gcc_jit_block_end_with_return (call_pseudovector_typep_b,
NULL,
gcc_jit_function_new_block (comp.bool_to_lisp_obj,
"ret_nil");
/* Set current context as needed */
- basic_block_t bblock = { .gcc_bb = initial_block,
+ basic_block_t block = { .gcc_bb = initial_block,
.terminated = false };
- comp.bblock = &bblock;
+ comp.block = █
comp.func = comp.bool_to_lisp_obj;
emit_cond_jump (gcc_jit_param_as_rvalue (param),
ret_t_block,
ret_nil_block);
- bblock.gcc_bb = ret_t_block;
+ block.gcc_bb = ret_t_block;
gcc_jit_block_end_with_return (ret_t_block,
NULL,
- emit_lisp_obj_from_ptr (&bblock, Qt));
- bblock.gcc_bb = ret_nil_block;
+ emit_lisp_obj_from_ptr (&block, Qt));
+ block.gcc_bb = ret_nil_block;
gcc_jit_block_end_with_return (ret_nil_block,
NULL,
- emit_lisp_obj_from_ptr (&bblock, Qnil));
+ emit_lisp_obj_from_ptr (&block, Qnil));
}
static int
/* Compute and initialize all basic blocks. */
static basic_block_t *
-compute_bblocks (ptrdiff_t bytestr_length, unsigned char *bytestr_data)
+compute_blocks (ptrdiff_t bytestr_length, unsigned char *bytestr_data)
{
ptrdiff_t pc = 0;
unsigned op;
gcc_jit_block *prologue_bb =
gcc_jit_function_new_block (comp.func, "prologue");
- basic_block_t *bb_map = compute_bblocks (bytestr_length, bytestr_data);
+ basic_block_t *bb_map = compute_blocks (bytestr_length, bytestr_data);
for (ptrdiff_t i = 0; i < comp_res.max_args; ++i)
PUSH_PARAM (gcc_jit_function_get_param (comp.func, i));
gcc_jit_rvalue *nil = emit_lisp_obj_from_ptr (&bb_map[0], Qnil);
- comp.bblock = NULL;
+ comp.block = NULL;
while (pc < bytestr_length)
{
/* If we are changing BB and the last was one wasn't terminated
terminate it with a fall through. */
- if (comp.bblock && comp.bblock->gcc_bb != bb_map[pc].gcc_bb &&
- !comp.bblock->terminated)
+ if (comp.block && comp.block->gcc_bb != bb_map[pc].gcc_bb &&
+ !comp.block->terminated)
{
- gcc_jit_block_end_with_jump (comp.bblock->gcc_bb, NULL, bb_map[pc].gcc_bb);
- comp.bblock->terminated = true;
+ gcc_jit_block_end_with_jump (comp.block->gcc_bb, NULL, bb_map[pc].gcc_bb);
+ comp.block->terminated = true;
}
- comp.bblock = &bb_map[pc];
+ comp.block = &bb_map[pc];
if (bb_map[pc].top)
stack = bb_map[pc].top;
op = FETCH;
op = FETCH;
varref:
{
- args[0] = emit_lisp_obj_from_ptr (comp.bblock, vectorp[op]);
+ args[0] = emit_lisp_obj_from_ptr (comp.block, vectorp[op]);
res = emit_call ("Fsymbol_value", comp.lisp_obj_type, 1, args);
PUSH_RVAL (res);
break;
{
POP1;
args[1] = args[0];
- args[0] = emit_lisp_obj_from_ptr (comp.bblock, vectorp[op]);
+ args[0] = emit_lisp_obj_from_ptr (comp.block, vectorp[op]);
args[2] = nil;
args[3] = gcc_jit_context_new_rvalue_from_int (comp.ctxt,
comp.int_type,
op -= Bvarbind;
varbind:
{
- args[0] = emit_lisp_obj_from_ptr (comp.bblock, vectorp[op]);
+ args[0] = emit_lisp_obj_from_ptr (comp.block, vectorp[op]);
pop (1, &stack, &args[1]);
res = emit_call ("specbind", comp.lisp_obj_type, 2, args);
PUSH_RVAL (res);
comp.m_handlerlist);
gcc_jit_block_add_assignment(
- comp.bblock->gcc_bb,
+ comp.block->gcc_bb,
NULL,
m_handlerlist,
gcc_jit_lvalue_as_rvalue (
comp.int_type,
type);
gcc_jit_block_add_assignment (
- comp.bblock->gcc_bb,
+ comp.block->gcc_bb,
NULL,
c,
emit_call ("push_handler", comp.handler_ptr_type, 2, args));
gcc_jit_lvalue **stack_to_restore = stack;
/* This emit the handler part. */
- basic_block_t bb_orig = *comp.bblock;
- comp.bblock->gcc_bb = push_h_val_block;
+ basic_block_t bb_orig = *comp.block;
+ comp.block->gcc_bb = push_h_val_block;
/* current_thread->m_handlerlist = c->next; */
gcc_jit_lvalue *m_handlerlist =
gcc_jit_rvalue_dereference_field (comp.current_thread,
NULL,
comp.m_handlerlist);
- gcc_jit_block_add_assignment(comp.bblock->gcc_bb,
+ gcc_jit_block_add_assignment(comp.block->gcc_bb,
NULL,
m_handlerlist,
gcc_jit_lvalue_as_rvalue(
NULL,
comp.handler_val_field));
bb_map[handler_pc].top = stack;
- *comp.bblock = bb_orig;
+ *comp.block = bb_orig;
gcc_jit_block_end_with_jump (push_h_val_block, NULL,
bb_map[handler_pc].gcc_bb);
TOS,
emit_make_fixnum (sub1_inline_block,
sub1_inline_res));
- basic_block_t bb_orig = *comp.bblock;
+ basic_block_t bb_orig = *comp.block;
- comp.bblock->gcc_bb = sub1_fcall_block;
+ comp.block->gcc_bb = sub1_fcall_block;
POP1;
res = emit_call ("Fsub1", comp.lisp_obj_type, 1, args);
PUSH_RVAL (res);
- *comp.bblock = bb_orig;
+ *comp.block = bb_orig;
gcc_jit_block_end_with_jump (sub1_inline_block, NULL,
bb_map[pc].gcc_bb);
TOS,
emit_make_fixnum (add1_inline_block,
add1_inline_res));
- basic_block_t bb_orig = *comp.bblock;
+ basic_block_t bb_orig = *comp.block;
- comp.bblock->gcc_bb = add1_fcall_block;
+ comp.block->gcc_bb = add1_fcall_block;
POP1;
res = emit_call ("Fadd1", comp.lisp_obj_type, 1, args);
PUSH_RVAL (res);
- *comp.bblock = bb_orig;
+ *comp.block = bb_orig;
gcc_jit_block_end_with_jump (add1_inline_block, NULL,
bb_map[pc].gcc_bb);
TOS,
emit_make_fixnum (negate_inline_block,
negate_inline_res));
- basic_block_t bb_orig = *comp.bblock;
+ basic_block_t bb_orig = *comp.block;
- comp.bblock->gcc_bb = negate_fcall_block;
+ comp.block->gcc_bb = negate_fcall_block;
EMIT_SCRATCH_CALL_N ("Fminus", 1);
- *comp.bblock = bb_orig;
+ *comp.block = bb_orig;
gcc_jit_block_end_with_jump (negate_inline_block, NULL,
bb_map[pc].gcc_bb);
break;
CASE (Binteractive_p) /* Obsolete since 24.1. */
- PUSH_RVAL (emit_lisp_obj_from_ptr (comp.bblock,
+ PUSH_RVAL (emit_lisp_obj_from_ptr (comp.block,
intern ("interactive-p")));
res = emit_call ("call0", comp.lisp_obj_type, 1, args);
PUSH_RVAL (res);
CASE (Bgoto)
op = FETCH2;
- gcc_jit_block_end_with_jump (comp.bblock->gcc_bb,
+ gcc_jit_block_end_with_jump (comp.block->gcc_bb,
NULL,
bb_map[op].gcc_bb);
- comp.bblock->terminated = true;
+ comp.block->terminated = true;
bb_map[op].top = stack;
break;
CASE (Breturn)
POP1;
- gcc_jit_block_end_with_return(comp.bblock->gcc_bb,
+ gcc_jit_block_end_with_return(comp.block->gcc_bb,
NULL,
args[0]);
- comp.bblock->terminated = true;
+ comp.block->terminated = true;
break;
CASE (Bdiscard)
break;
CASE (Bsave_restriction)
- args[0] = emit_lisp_obj_from_ptr (comp.bblock,
+ args[0] = emit_lisp_obj_from_ptr (comp.block,
save_restriction_restore);
args[1] = emit_call ("save_restriction_save",
comp.lisp_obj_type,
CASE (Bcatch) /* Obsolete since 24.4. */
POP2;
args[2] = args[1];
- args[1] = emit_lisp_obj_from_ptr (comp.bblock, eval_sub);
+ args[1] = emit_lisp_obj_from_ptr (comp.block, eval_sub);
emit_call ("internal_catch", comp.void_ptr_type, 3, args);
break;
CASE (BRgoto)
op = FETCH - 128;
op += pc;
- gcc_jit_block_end_with_jump (comp.bblock->gcc_bb,
+ gcc_jit_block_end_with_jump (comp.block->gcc_bb,
NULL,
bb_map[op].gcc_bb);
- comp.bblock->terminated = true;
+ comp.block->terminated = true;
bb_map[op].top = stack;
break;
op = FETCH;
POP1;
if (op > 0)
- gcc_jit_block_add_assignment (comp.bblock->gcc_bb,
+ gcc_jit_block_add_assignment (comp.block->gcc_bb,
NULL,
*(stack - op),
args[0]);
CASE (Bstack_set2)
op = FETCH2;
POP1;
- gcc_jit_block_add_assignment (comp.bblock->gcc_bb,
+ gcc_jit_block_add_assignment (comp.block->gcc_bb,
NULL,
*(stack - op),
args[0]);
{
op &= 0x7F;
POP1;
- gcc_jit_block_add_assignment (comp.bblock->gcc_bb,
+ gcc_jit_block_add_assignment (comp.block->gcc_bb,
NULL,
*(stack - op - 1),
args[0]);
if (pc >= bytestr_length || bytestr_data[pc] != Bswitch)
{
gcc_jit_rvalue *c =
- emit_lisp_obj_from_ptr (comp.bblock, vectorp[op]);
+ emit_lisp_obj_from_ptr (comp.block, vectorp[op]);
PUSH_RVAL (c);
break;
}