# New Ticket Created by Leopold Toetsch # Please include the string: [perl #17455] # in the subject line of all future correspondence about this issue. # <URL: http://rt.perl.org/rt2/Ticket/Display.html?id=17455 >
This patch changes the register and constant table addressing in the produced core_ops*.c (and native .c) files to be much more readable[1]. Please apply, leo [1] e.g.: static opcode_t * Parrot_add_p_p_i (opcode_t *cur_opcode, struct Parrot_Interp * interpreter) { #line 1369 "core.ops" PREG(2)->vtable->add_int(interpreter, PREG(2), IREG(3), PREG(1)); return (opcode_t *)cur_opcode + 4; } -- attachment 1 ------------------------------------------------------ url: http://rt.perl.org/rt2/attach/38173/31021/fb2e94/optrans.patch
--- parrot/lib/Parrot/OpTrans/C.pm Tue Aug 20 07:06:11 2002 +++ parrot-leo/lib/Parrot/OpTrans/C.pm Fri Sep 20 15:12:29 2002 @@ -23,6 +23,11 @@ return <<END; #define REL_PC ((size_t)(cur_opcode - interpreter->code->byte_code)) #define CUR_OPCODE cur_opcode +#define IREG(i) interpreter->ctx.int_reg.registers[cur_opcode[i]] +#define NREG(i) interpreter->ctx.num_reg.registers[cur_opcode[i]] +#define PREG(i) interpreter->ctx.pmc_reg.registers[cur_opcode[i]] +#define SREG(i) interpreter->ctx.string_reg.registers[cur_opcode[i]] +#define CONST(i) interpreter->code->const_table->constants[cur_opcode[i]] END } @@ -53,18 +58,18 @@ %arg_maps = ( 'op' => "cur_opcode[%ld]", - 'i' => "interpreter->ctx.int_reg.registers[cur_opcode[%ld]]", - 'n' => "interpreter->ctx.num_reg.registers[cur_opcode[%ld]]", - 'p' => "interpreter->ctx.pmc_reg.registers[cur_opcode[%ld]]", - 's' => "interpreter->ctx.string_reg.registers[cur_opcode[%ld]]", - 'k' => "interpreter->ctx.pmc_reg.registers[cur_opcode[%ld]]", - 'ki' => "interpreter->ctx.int_reg.registers[cur_opcode[%ld]]", + 'i' => "IREG(%ld)", + 'n' => "NREG(%ld)", + 'p' => "PREG(%ld)", + 's' => "SREG(%ld)", + 'k' => "PREG(%ld)", + 'ki' => "IREG(%ld)", 'ic' => "cur_opcode[%ld]", - 'nc' => "interpreter->code->const_table->constants[cur_opcode[%ld]]->number", + 'nc' => "CONST(%ld)->number", 'pc' => "%ld /* ERROR: Don't know how to handle PMC constants yet! */", - 'sc' => "interpreter->code->const_table->constants[cur_opcode[%ld]]->string", - 'kc' => "interpreter->code->const_table->constants[cur_opcode[%ld]]->key", + 'sc' => "CONST(%ld)->string", + 'kc' => "CONST(%ld)->key", 'kic' => "cur_opcode[%ld]" ); --- parrot/lib/Parrot/OpTrans/CGoto.pm Tue Aug 20 07:06:11 2002 +++ parrot-leo/lib/Parrot/OpTrans/CGoto.pm Fri Sep 20 15:20:47 2002 @@ -18,6 +18,11 @@ return <<END; #define REL_PC ((size_t)(cur_opcode - interpreter->code->byte_code)) #define CUR_OPCODE cur_opcode +#define IREG(i) interpreter->ctx.int_reg.registers[cur_opcode[i]] +#define NREG(i) interpreter->ctx.num_reg.registers[cur_opcode[i]] +#define PREG(i) interpreter->ctx.pmc_reg.registers[cur_opcode[i]] +#define SREG(i) interpreter->ctx.string_reg.registers[cur_opcode[i]] +#define CONST(i) interpreter->code->const_table->constants[cur_opcode[i]] END } @@ -117,18 +122,18 @@ my %arg_maps = ( 'op' => "cur_opcode[%ld]", - 'i' => "interpreter->ctx.int_reg.registers[cur_opcode[%ld]]", - 'n' => "interpreter->ctx.num_reg.registers[cur_opcode[%ld]]", - 'p' => "interpreter->ctx.pmc_reg.registers[cur_opcode[%ld]]", - 's' => "interpreter->ctx.string_reg.registers[cur_opcode[%ld]]", - 'k' => "interpreter->ctx.pmc_reg.registers[cur_opcode[%ld]]", - 'ki' => "interpreter->ctx.int_reg.registers[cur_opcode[%ld]]", + 'i' => "IREG(%ld)", + 'n' => "NREG(%ld)", + 'p' => "PREG(%ld)", + 's' => "SREG(%ld)", + 'k' => "PREG(%ld)", + 'ki' => "IREG(%ld)", 'ic' => "cur_opcode[%ld]", - 'nc' => "interpreter->code->const_table->constants[cur_opcode[%ld]]->number", + 'nc' => "CONST(%ld)->number", 'pc' => "%ld /* ERROR: Don't know how to handle PMC constants yet! */", - 'sc' => "interpreter->code->const_table->constants[cur_opcode[%ld]]->string", - 'kc' => "interpreter->code->const_table->constants[cur_opcode[%ld]]->key", + 'sc' => "CONST(%ld)->string", + 'kc' => "CONST(%ld)->key", 'kic' => "cur_opcode[%ld]" ); --- parrot/lib/Parrot/OpTrans/Compiled.pm Tue Aug 20 07:06:11 2002 +++ parrot-leo/lib/Parrot/OpTrans/Compiled.pm Fri Sep 20 15:26:04 2002 @@ -17,6 +17,11 @@ { return <<END; #define CUR_OPCODE cur_opcode +#define IREG(i) interpreter->ctx.int_reg.registers[i] +#define NREG(i) interpreter->ctx.num_reg.registers[i] +#define PREG(i) interpreter->ctx.pmc_reg.registers[i] +#define SREG(i) interpreter->ctx.string_reg.registers[i] +#define CONST(i) interpreter->code->const_table->constants[i] END } @@ -115,18 +120,18 @@ # my %arg_maps = ( - 'i' => "interpreter->ctx.int_reg.registers[%ld]", - 'n' => "interpreter->ctx.num_reg.registers[%ld]", - 'p' => "interpreter->ctx.pmc_reg.registers[%ld]", - 's' => "interpreter->ctx.string_reg.registers[%ld]", - 'k' => "interpreter->ctx.pmc_reg.registers[%ld]", - 'ki' => "interpreter->ctx.int_reg.registers[%ld]", + 'i' => "IREG(%ld)", + 'n' => "NREG(%ld)", + 'p' => "PREG(%ld)", + 's' => "SREG(%ld)", + 'k' => "PREG(%ld)", + 'ki' => "IREG(%ld)", 'ic' => "%ld", - 'nc' => "interpreter->code->const_table->constants[%ld]->number", + 'nc' => "CONST(%ld)->number", 'pc' => "%ld /* ERROR: Don't know how to handle PMC constants yet! */", - 'sc' => "interpreter->code->const_table->constants[%ld]->string", - 'kc' => "interpreter->code->const_table->constants[%ld]->key", + 'sc' => "CONST(%ld)->string", + 'kc' => "CONST(%ld)->key", 'kic' => "%ld", );