diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 2003-08-22 05:15:30 +0000 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2003-08-22 05:15:30 +0000 |
commit | 113d5bd98de2c46b2e852e15b8eb1becf60dddc4 (patch) | |
tree | 659873eab604b3b6ab4d959b67d2048cbb070fe9 /ext | |
parent | 95fb0f990ba85d322de7f5a25e531e20aa922fd9 (diff) | |
download | perl-113d5bd98de2c46b2e852e15b8eb1becf60dddc4.tar.gz |
More bytecode patching from Enache.
p4raw-id: //depot/perl@20816
Diffstat (limited to 'ext')
-rw-r--r-- | ext/B/B/Asmdata.pm | 18 | ||||
-rw-r--r-- | ext/B/B/Assembler.pm | 4 | ||||
-rw-r--r-- | ext/B/B/Disassembler.pm | 9 | ||||
-rw-r--r-- | ext/ByteLoader/bytecode.h | 2 |
4 files changed, 24 insertions, 9 deletions
diff --git a/ext/B/B/Asmdata.pm b/ext/B/B/Asmdata.pm index 64929706d0..6bf75aeebd 100644 --- a/ext/B/B/Asmdata.pm +++ b/ext/B/B/Asmdata.pm @@ -39,7 +39,7 @@ $insn_data{newop} = [11, \&PUT_U8, "GET_U8"]; $insn_data{newopx} = [12, \&PUT_U16, "GET_U16"]; $insn_data{newopn} = [13, \&PUT_U8, "GET_U8"]; $insn_data{newpv} = [14, \&PUT_PV, "GET_PV"]; -$insn_data{pv_cur} = [15, \&PUT_U32, "GET_U32"]; +$insn_data{pv_cur} = [15, \&PUT_PADOFFSET, "GET_PADOFFSET"]; $insn_data{pv_free} = [16, \&PUT_none, "GET_none"]; $insn_data{sv_upgrade} = [17, \&PUT_U8, "GET_U8"]; $insn_data{sv_refcnt} = [18, \&PUT_U32, "GET_U32"]; @@ -47,12 +47,12 @@ $insn_data{sv_refcnt_add} = [19, \&PUT_I32, "GET_I32"]; $insn_data{sv_flags} = [20, \&PUT_U32, "GET_U32"]; $insn_data{xrv} = [21, \&PUT_svindex, "GET_svindex"]; $insn_data{xpv} = [22, \&PUT_none, "GET_none"]; -$insn_data{xpv_cur} = [23, \&PUT_U32, "GET_U32"]; -$insn_data{xpv_len} = [24, \&PUT_U32, "GET_U32"]; +$insn_data{xpv_cur} = [23, \&PUT_PADOFFSET, "GET_PADOFFSET"]; +$insn_data{xpv_len} = [24, \&PUT_PADOFFSET, "GET_PADOFFSET"]; $insn_data{xiv} = [25, \&PUT_IV, "GET_IV"]; $insn_data{xnv} = [26, \&PUT_NV, "GET_NV"]; -$insn_data{xlv_targoff} = [27, \&PUT_U32, "GET_U32"]; -$insn_data{xlv_targlen} = [28, \&PUT_U32, "GET_U32"]; +$insn_data{xlv_targoff} = [27, \&PUT_PADOFFSET, "GET_PADOFFSET"]; +$insn_data{xlv_targlen} = [28, \&PUT_PADOFFSET, "GET_PADOFFSET"]; $insn_data{xlv_targ} = [29, \&PUT_svindex, "GET_svindex"]; $insn_data{xlv_type} = [30, \&PUT_U8, "GET_U8"]; $insn_data{xbm_useful} = [31, \&PUT_I32, "GET_I32"]; @@ -78,16 +78,16 @@ $insn_data{xcv_start} = [51, \&PUT_opindex, "GET_opindex"]; $insn_data{xcv_root} = [52, \&PUT_opindex, "GET_opindex"]; $insn_data{xcv_gv} = [53, \&PUT_svindex, "GET_svindex"]; $insn_data{xcv_file} = [54, \&PUT_pvindex, "GET_pvindex"]; -$insn_data{xcv_depth} = [55, \&PUT_I32, "GET_I32"]; +$insn_data{xcv_depth} = [55, \&PUT_long, "GET_long"]; $insn_data{xcv_padlist} = [56, \&PUT_svindex, "GET_svindex"]; $insn_data{xcv_outside} = [57, \&PUT_svindex, "GET_svindex"]; $insn_data{xcv_outside_seq} = [58, \&PUT_U32, "GET_U32"]; $insn_data{xcv_flags} = [59, \&PUT_U16, "GET_U16"]; -$insn_data{av_extend} = [60, \&PUT_I32, "GET_I32"]; +$insn_data{av_extend} = [60, \&PUT_PADOFFSET, "GET_PADOFFSET"]; $insn_data{av_pushx} = [61, \&PUT_svindex, "GET_svindex"]; $insn_data{av_push} = [62, \&PUT_svindex, "GET_svindex"]; -$insn_data{xav_fill} = [63, \&PUT_I32, "GET_I32"]; -$insn_data{xav_max} = [64, \&PUT_I32, "GET_I32"]; +$insn_data{xav_fill} = [63, \&PUT_PADOFFSET, "GET_PADOFFSET"]; +$insn_data{xav_max} = [64, \&PUT_PADOFFSET, "GET_PADOFFSET"]; $insn_data{xav_flags} = [65, \&PUT_U8, "GET_U8"]; $insn_data{xhv_riter} = [66, \&PUT_I32, "GET_I32"]; $insn_data{xhv_name} = [67, \&PUT_pvindex, "GET_pvindex"]; diff --git a/ext/B/B/Assembler.pm b/ext/B/B/Assembler.pm index 989e1e1b9b..dc24d662c7 100644 --- a/ext/B/B/Assembler.pm +++ b/ext/B/B/Assembler.pm @@ -146,6 +146,10 @@ sub B::Asmdata::PUT_PADOFFSET { $Config{ptrsize} == 8 ? &B::Asmdata::PUT_IV64 : &B::Asmdata::PUT_U32; } +sub B::Asmdata::PUT_long { + $Config{longsize} == 8 ? &B::Asmdata::PUT_IV64 : &B::Asmdata::PUT_U32; +} + my %unesc = (n => "\n", r => "\r", t => "\t", a => "\a", b => "\b", f => "\f", v => "\013"); diff --git a/ext/B/B/Disassembler.pm b/ext/B/B/Disassembler.pm index 0d28ed8952..a565e5d084 100644 --- a/ext/B/B/Disassembler.pm +++ b/ext/B/B/Disassembler.pm @@ -153,6 +153,15 @@ sub GET_IV { $Config{ivsize} == 4 ? &GET_I32 : &GET_IV64; } +sub B::::GET_PADOFFSET { + $Config{ptrsize} == 8 ? &B::GET_IV64 : &B::GET_U32; +} + +sub B::::GET_long { + $Config{longsize} == 8 ? &B::GET_IV64 : &B::GET_U32; +} + + package B::Disassembler; use Exporter; @ISA = qw(Exporter); diff --git a/ext/ByteLoader/bytecode.h b/ext/ByteLoader/bytecode.h index c0093a5b62..7fb91daf61 100644 --- a/ext/ByteLoader/bytecode.h +++ b/ext/ByteLoader/bytecode.h @@ -22,6 +22,8 @@ typedef char *pvindex; BGET_FREAD(&arg, sizeof(UV), 1) #define BGET_PADOFFSET(arg) \ BGET_FREAD(&arg, sizeof(PADOFFSET), 1) +#define BGET_long(arg) \ + BGET_FREAD(&arg, sizeof(long), 1) #define BGET_I32(arg) BGET_U32(arg) #define BGET_IV(arg) BGET_UV(arg) |