From f571f6dfce43ea2932f537ac51fe0efc361f45b1 Mon Sep 17 00:00:00 2001 From: rocky Date: Sun, 10 Jul 2016 20:06:05 -0400 Subject: [PATCH] Revert recent 2.x code which fail verification --- test/ok_lib2.7/bsddb/dbobj.pyc | Bin 23103 -> 23424 bytes test/ok_lib2.7/bsddb/dbrecio.pyc | Bin 5781 -> 5817 bytes test/ok_lib2.7/bsddb/dbshelve.pyc | Bin 15102 -> 15258 bytes test/ok_lib2.7/bsddb/dbutils.pyc | Bin 1707 -> 1713 bytes test/ok_lib2.7/compiler/__init__.pyc | Bin 1337 -> 1340 bytes test/ok_lib2.7/compiler/ast.pyc | Bin 87685 -> 88852 bytes test/ok_lib2.7/compiler/consts.pyc | Bin 777 -> 780 bytes test/ok_lib2.7/compiler/future.pyc | Bin 3446 -> 3476 bytes test/ok_lib2.7/compiler/misc.pyc | Bin 4493 -> 4550 bytes test/ok_lib2.7/compiler/syntax.pyc | Bin 2122 -> 2140 bytes uncompyle6/scanners/scanner2.py | 69 ++++++++++----------------- 11 files changed, 24 insertions(+), 45 deletions(-) diff --git a/test/ok_lib2.7/bsddb/dbobj.pyc b/test/ok_lib2.7/bsddb/dbobj.pyc index 1a235a38d3a73d682b70a9b23d6ef79e045a6046..2cd3409347f54cdcb87957845f091e6be5ae7125 100644 GIT binary patch delta 1909 zcmZXTyH8VL7>9GHm16}eR6Gib5z!VXD1sEZ6uf{6indrGHO6>}kc$?a3oRo6fY+}CYn!uI7;)2nX@63KonzO-Y|=MZI4*8naT--E`=> zM(9%;wG&INMCFC+T3_`@joyrbQ`BsaapQl-xEZO_)Qt3!H1)}-Oy4&#V8SykA$+7a*z<9h9VJx8g zmh#mh@yhtCp*%x@E+lb2L1cH|5JYy{0--7-mAS$tP@bX)vP=Jp!0iXxdPWr4ylG-E zJ)jVa6)#3IPgw$4?v(_x&6^~VO{tNB`8Ux^d~&dK0g@?VGRUUfh4UuLBKtB=4iU=2 zlP%?u?ApwzpuvbRaC42~Jtio3qo4TXjVjSlo{uWbP3P1kC(Ee8V*i{PEM!6Ai`0?* zn4tkv1@gbHCX&6AziPr#(?YE_gaam5X(PMURR`GwE?s2adEGoDeG~NZk$6G+$e|=^ zfE-G93}7w>xoVXmvRt7NGS9*o*_7YL$nHOEg6z{y(?TTMea(>d37Ert3bOCKIkGz^ zS|G~>SR(sR)CxJ(KeR$ljq9wD_2t?i`^efBS?-rDvMI;xV6g~t%LIGmTo&m73wc4u zZY1BlcSKgT!wH$!=!|T-uM2Wska2~FLWua}$F9h(TI2?o1G*#C9XTwuJ&;4;0}5}e zC(M*YuX=1Zmo--Rw(dISW+Gtj7))btGs!DRQfbb$zqb9S6Ohyrrocva#A4NoD@>$VH L6cN$M6=Jdg4T4F$ delta 185 zcmdm~J5`s1`7;9Ki9_BefJg@qEkjBNip1L=1ld+tbY0oHCcj%~~=uR(@=l>@$X2)5WF9 z*NJg(@M~861)W@6>twc=I(4)xE76Q@fyi$c*KZTe=(Mm@d+SMhBdHunZb>0!;BQS5$=R!5+=~AofvN2ccih+hgcoBV+h%YC zU$#pkr4I5);Jx#dG&%b@kw?cK5($!B`$VEnPGqNhgNW>|hCoksuj>>|P^c_0SE9o+xRa`>&BO$a?W<8Kef{q&XZs!onjyCB2Z$&>e~L!>c%|JdE_n F#1C=5KzjfH delta 789 zcmbPL{;!mS`7x%JwIZoJEqn+?CEMngBFv0P3Y^4X3P1)&iNpK|@f6!;PYEd`<(qd(Cc?NN z6$R22NM_l|yhP&F%I-t5dZOGWB)OULOOSX58Z48iD^wy>PcmScoTYdiBCxqo=`PGp zkQWi%^5PAEeSzeI}BefyQDao~C9Gln3(1TP=>s!dfjTA~5&DIeJB?0v7rx0!SVP8dr-@J9&{|0}?O5m}PQ}Q5}lN wW+)Hj%}5iNS3o>#(+Nm&ie^(0yv;o3OvoXbVzCz@xjE5t5=;W*IZx|A0B)n{L;wH) diff --git a/test/ok_lib2.7/bsddb/dbutils.pyc b/test/ok_lib2.7/bsddb/dbutils.pyc index 7169392b23252e697f846fbd13b7a983087639a0..dca61ba191cbf504efdec75dc0045150001f65c1 100644 GIT binary patch delta 49 ucmZ3@yOEcJ`7X0c(;$xNF3pT!CQu3rlY delta 27 jcmdnPwUdj3`7;e8dC5{HNhC!_sTePbW0GP*N}4n|d(j`P{eFL*b=Lar_q=O;-~RSK zukUt!yTaA2%N@^dr?Y3wbhtIUi7DDq?}#pGi|1>0_X@+Oo?2+Pa}Y`Hz6K&DlbaUe zF%zQaJrW_3;knEZF>AxU7D1%h3$JG~rLY_^)T$jbak9hDsx9()k>%Lkduk?ASIypI zvLR}A*7XpAg$hPnHJf=Zix9rSoXjGQO}^U3UYR@+Y}Mvj;#kD)Zq^=Hs#%1{7HcYt z5V_8}nMFvr(|0+K=;YPCqgg~JJ3acipy&mC(^wLrgZzx1IN0|N9b4HCuv$X@lPre> zr}?8`TfjeA4he1#;7${{DiF!D9&cn-M9vRFlcNU2vm7Ef4#?pVoqWiKeCp50_D^DH zXGzj{#D-0~%1Q{EKK(3aEf=Ppu@3qma?kWIY=#@dw_jU)bhV^2Dvb49*>aL8}p{K zDsn-ak1h;cfO;n_#94Dq#aU}eU1cEqYGuzyu?YDazKE^oKex7&zb|A-B-*kV(Ki>T zvm6rr=@NtJ7cR5!$%@o8G}vP)ZWE5Bc(2P?W}xbVyDh&Cv)ikTidP`S*(im zX0AlC^}8!fAMun3WFyj;g3MD~7VJCEp^ zA6Vm9Bq z2%Ve*XsspZA*&+M(d+Q;Zfh<1i-?88H(x;U@CljL-4 zGVufgTk;Y7alUfGaw&MOlhSbl*j<1FJ@qXdXp5$xH9vlRvcs>ilA(QyPP0#B#Ryr- zBf8>{cL1wZy~7r^M$~KX;tI@r4+Yz|;EnIz79{7r-^8!}0dF|jd$<_4W5?EfUZLwP z+=kTPl1nUy^rmdbN%r{=^;UeC!>T%lq7=zNJ8D=Ck)z7ci5q2n+*W+Fj#UsfVJA|r z>_olhU3g>a`Z4b#b*^VQuDsjjNY2@Phh3fY*6zXOvFVfNSq_ooK9xM8YaZ@E@(Bkz z(Xh`k>m7Kv{?W?o=o=9T9_%}m#90#YL!-LT3^EhYy>Tw#X>Q}NW6FK)= zB=`Rg=WOctXhTc`+7SMqTt*fbux)!T;Dgxxi`)g;FI_I`;-64&!wsZvzKMFrG^5^L zw@~k{Tevi;f5w?ub{ls!&lbL?(oCFcLGpsuYWACGX{`MP$+kP_#K}7^uqq;Nyo+T2 zw&N^^$fJJ6<=plwF6WwixLABDBXZX*c`|U9T zC(zvZKkQ)9AK1YO4|7LU2k)4{U(5hTmm zt^$^|%zsqCx|Ug875rv5k=Ln7Bm8oA1^-Al@dwM&-Ig=E3%-r%cFQCW(a5rNzvTu` zLl)t)ycGOn-lB#T5`Lsfzy!*RCShovj?eNDFex&ohk|eDA$|tDpIJal?;@c7VzX+dB3;tV7C~0cI7XI$@nFH z;w<}tWPCwCVR)gY8(*vpq#WiiYFQx}KRrN^?iHv=zZxivuM(}Y{BgyZ$RGh*mYg#{ z!CP$#{+3OoGhH+`d!JD7u>%F{wKDrjrLUpEN?)%B3)pVukwFT6+F)^yi6C>fJ|)<$ zBMU;rL6$+jZyO>?ct}@X^t6H=WEbr$i_mL^ax|UEgq~9vrRUr;JgCGJUMF z8$32n*$oblQ>G>}Qo&osEBMeT1%D|@!DmM+__!Dae=$bfW)@Ow17ZzLqt^C`6GvDU zwKim;GC4u<3jRR6_=Oef_@V@b{vbi2drlUHGo3z{E>je`oT7Agf1={e>?Fk-J%_(D bq`|40iulS|(}bT3Q~&4RQ?9aRhB)+pWks9Y delta 5484 zcmY+Id016d6ve;efTTFl122PwB4U^zDw+cbiuoK8F%?onlF~{PpBPpSpdu2M(?yP1 zny7>o%12K`B`ZwDaLB@}EJc*S3I`yA!mx8b?tZNEABVl~@2L`}cZZK|=V_0#mU?g^OsoFfGV)!N|5 zn30TGFc;L=TVmY!_;}{S#rfl}X?8#5r0CAzyoP#^i82mLGkrL%1NK|6cbvi`k|J6PokC;zROxN zd3O)yqMQ4Vr3*#l%lrRED}iwzkZG)>w;la*j8(1QKFSh8YWz`1%D`(B3pfH-=MCCp zyIRw82ER>Nf{-=@37&xuC?+&48j8&c7=}|)IqZGP6qFyIMoRqf3ltNSj1kj}m8>Lq zB(}I}q=hmCC2tf`#s`%ev54SRKtsc#^JpcF=@&blGKH4Qu}Fz~3AJo{8K)(DKK9yYL1GJ~WgGv!0JrhGui)^1 z_9|lHUqj6Jg-bw8*EkfD6KAtt7*o0kjajxBw~%{$>p`pOx8jkqVo5dKK~Roc@O-l@ z#qHcD0T2D=1f*mxLwj>xCqn}g=NWWq?VpKgEnkiV|2LXI$J#fujg@Rr(p#5+lCxqj zWr_x6twhT3RW+1()J0#tIvOZLlCYZUqzynhlMEDV^qQ_X|EJe}Zlo5kyF++Uj@^3O zo)tn&sesUPQy&pt*xEJ?Psx%rvM1v0LzE>5k?BCN-b*h45!Q$AxY1Ht62IvRDA~2S z5jc0Y7#yo*t213BkCpOmGmSKfcvr_63CzG5d6l71&#Qiw#1F~Cnxae21*HNaR*)W2Fe#TRk&OvGh^|gOgoEmzM+EsISdv!{6vup=vMc%XjhNJt@foK~p<|sDDQ<_c znxF!#rn-Qtu^dSSLUmGmH5QF^c#-a zhAQmvh-!S|nQo(w+}qbkqv%b=??~D42YM3nCmtkjHAu16pq9EjMA>?mzDQ&xbMB#z zq4$w+@jg!4-CFF;jyl@Bk}{&6jtBXb(_D{~%)d&Ynt}&Nnfo_Z)1hG@WeQ4Z15)NS zo}rlVB>5kl`k;St>YbYKDEOrbDG3j$r*aP`|3@{*dF|ayD_PO0W>O|AihBfiTM;SU*uKJ&abEQOL?HNLSe0}}UY$8JzGK;yI9GniZ+VaH(TcuWTdv&+ZW zE2yjX4E6x;)=@#(by84H4(y$l`|=701{2J;c4p0>sJaV-wDgeaW3& zi6eh1;fGuq3?skb#$b+kx;ukG;`4ekF_Y|Ck1`J93>O;>CWoS_t0K0_&R!%Vh_?kiA}BN0_t P8OeIKX$i|8Im`YB%&PtO diff --git a/test/ok_lib2.7/compiler/consts.pyc b/test/ok_lib2.7/compiler/consts.pyc index 50f64b7748ac1690ac12814bf2fe8bd5c5023208..f4a9250f46b25c13b31687ce21662770d50fa32e 100644 GIT binary patch delta 31 mcmeBV>tW+y{>;mDzBx2}BS#SvW6ty3#{>;m@JE9|WBS#SvqyOY;CY#B-n1TRw;s}ud diff --git a/test/ok_lib2.7/compiler/future.pyc b/test/ok_lib2.7/compiler/future.pyc index 46fdf195a4e4423c1762b550e36b231268fafe09..21912fd14d19ef31bfeb7918b8882cb17d6b3809 100644 GIT binary patch delta 192 zcmew+HAR|(`7;1Jtf$mGk2Dl}P;WecjvW(igo zR7K*GH?XZhRWx}u`wN7~<_jG0s9MA(H*p0b6igQ2-iE{jI%TpX&owj=Ctec(JL5X< delta 152 zcmbOt{Y{F4`7F%oHooknMsoyI7BD6Fy25CF<=v&ypAayMMQFP zHgi0Ri0EV)mK-#ZTP(?FBK@o>C?b_eJOO^m$^Y4!kVHT>UuG{r5^3Q0fWi}TObih4@e|W GP#yqFHfV|f delta 281 zcmX@6+^fvN{F#?)cSJ|%Mh-1TM&HQ^Og57nxkM+oGv0vmK5~mr-oliQ#4BJla7SQ+HxpyfZ=TPzl@TGdc_ND*5*MUmvM^gDLIGIh09y`< Rh}h(M_81fq>B+_%;s8_NBy9iy delta 77 zcmca3a7ti': assert opname == 'LOAD_CONST' opname = 'LOAD_LAMBDA' - elif const.co_name == self.genexpr_name: + elif const.co_name == '': opname = 'LOAD_GENEXPR' elif const.co_name == '': opname = 'LOAD_DICTCOMP' @@ -185,16 +185,8 @@ class Scanner2(scan.Scanner): if op != self.opc.BUILD_SLICE: customize[opname] = oparg elif op == self.opc.JUMP_ABSOLUTE: - # Further classifhy JUMP_ABSOLUTE into backward jumps - # which are used in loops, and "CONTINUE" jumps which - # may appear in a "continue" statement. The loop-type - # and continue-type jumps will help us classify loop - # boundaries The continue-type jumps help us get - # "continue" statements with would otherwise be turned - # into a "pass" statement because JUMPs are sometimes - # ignored in rules as just boundary overhead. target = self.get_target(offset) - if target <= offset: + if target < offset: if (offset in self.stmts and self.code[offset+3] not in (self.opc.END_FINALLY, self.opc.POP_BLOCK) @@ -341,12 +333,9 @@ class Scanner2(scan.Scanner): j = self.prev[s] while code[j] == self.opc.JUMP_ABSOLUTE: j = self.prev[j] - try: - if code[j] == self.opc.LIST_APPEND: # list comprehension - stmts.remove(s) - continue - except: - from trepan.api import debug; debug() + if code[j] == self.opc.LIST_APPEND: # list comprehension + stmts.remove(s) + continue elif code[s] == self.opc.POP_TOP and code[self.prev[s]] == self.opc.ROT_TWO: stmts.remove(s) continue @@ -374,7 +363,7 @@ class Scanner2(scan.Scanner): jmp = self.prev[self.get_target(except_match)] # In Python <= 2.6 we may have jumps to jumps - if self.version <= 2.6 and self.is_jump_forward(jmp): + if self.version <= 2.6 and self.code[jmp] in self.jump_forward: self.not_continue.add(jmp) jmp = self.get_target(jmp) if jmp not in self.pop_jump_if | self.jump_forward: @@ -421,14 +410,6 @@ class Scanner2(scan.Scanner): _start = s['start'] _end = s['end'] if (_start <= pos < _end) and (_start >= start and _end <= end): - - # # Rocky: The SETUP_LOOP gives its boundary. So respect that as well. - # # Without this we can associate a COME_FROM incorrectly - # if op == self.opc.SETUP_LOOP: - # target = self.get_target(pos, op) - # if _end < target: - # continue - start = _start end = _end parent = s @@ -469,7 +450,7 @@ class Scanner2(scan.Scanner): return_val_offset1 = self.prev[self.prev[end]] if (jump_back and jump_back != self.prev[end] - and self.is_jump_forward(jump_forward_offset)): + and code[jump_forward_offset] in self.jump_forward): if (code[self.prev[end]] == self.opc.RETURN_VALUE or (code[self.prev[end]] == self.opc.POP_BLOCK and code[return_val_offset1] == self.opc.RETURN_VALUE)): @@ -508,8 +489,8 @@ class Scanner2(scan.Scanner): else: if self.get_target(jump_back) >= next_line_byte: jump_back = self.last_instr(start, end, self.opc.JUMP_ABSOLUTE, start, False) - if end > jump_back+4 and self.is_jump_forward(end): - if self.is_jump_forward(jump_back+4): + if end > jump_back+4 and code[end] in self.jump_forward: + if code[jump_back+4] in self.jump_forward: if self.get_target(jump_back+4) == self.get_target(end): self.fixed_jumps[pos] = jump_back+4 end = jump_back+4 @@ -629,7 +610,7 @@ class Scanner2(scan.Scanner): # Is it an "and" inside an "if" block if op == self.opc.PJIF: - # Search for other PJIF targetting the same op, + # Search for other POP_JUMP_IF_FALSE targetting the same op, # in current statement, starting from current offset, and filter # everything inside inner 'or' jumps and midline ifs match = self.rem_or(start, self.next_stmt[pos], self.opc.PJIF, target) @@ -639,14 +620,14 @@ class Scanner2(scan.Scanner): # If we still have any offsets in set, start working on it if match: - is_jump_forward = self.is_jump_forward(pre[rtarget]) - if (is_jump_forward and pre[rtarget] not in self.stmts and - self.restrict_to_parent(self.get_target(pre[rtarget]), parent) == rtarget): - if (code[pre[pre[rtarget]]] == self.opc.JUMP_ABSOLUTE - and self.remove_mid_line_ifs([pos]) - and target == self.get_target(pre[pre[rtarget]]) - and (pre[pre[rtarget]] not in self.stmts or self.get_target(pre[pre[rtarget]]) > pre[pre[rtarget]]) - and 1 == len(self.remove_mid_line_ifs(self.rem_or(start, pre[pre[rtarget]], self.pop_jump_if, target)))): + if code[pre[rtarget]] in self.jump_forward \ + and pre[rtarget] not in self.stmts \ + and self.restrict_to_parent(self.get_target(pre[rtarget]), parent) == rtarget: + if code[pre[pre[rtarget]]] == self.opc.JUMP_ABSOLUTE \ + and self.remove_mid_line_ifs([pos]) \ + and target == self.get_target(pre[pre[rtarget]]) \ + and (pre[pre[rtarget]] not in self.stmts or self.get_target(pre[pre[rtarget]]) > pre[pre[rtarget]])\ + and 1 == len(self.remove_mid_line_ifs(self.rem_or(start, pre[pre[rtarget]], self.pop_jump_if, target))): pass elif code[pre[pre[rtarget]]] == self.opc.RETURN_VALUE \ and self.remove_mid_line_ifs([pos]) \ @@ -670,8 +651,7 @@ class Scanner2(scan.Scanner): self.fixed_jumps[pos] = fix or match[-1] return else: - if is_jump_forward: - self.fixed_jumps[pos] = match[-1] + self.fixed_jumps[pos] = match[-1] return else: # op == self.opc.PJIT if self.version < 2.7 and code[pos+3] == self.opc.POP_TOP: @@ -686,17 +666,17 @@ class Scanner2(scan.Scanner): next = self.next_stmt[pos] if pre[next] == pos: pass - elif self.is_jump_forward(next) and target == self.get_target(next): + elif code[next] in self.jump_forward and target == self.get_target(next): if code[pre[next]] == self.opc.PJIF: if code[next] == self.opc.JUMP_FORWARD or target != rtarget or code[pre[pre[rtarget]]] not in (self.opc.JUMP_ABSOLUTE, self.opc.RETURN_VALUE): self.fixed_jumps[pos] = pre[next] return - elif code[next] == self.opc.JUMP_ABSOLUTE and self.is_jump_forward(target): - next_target = self.get_target(next) + elif code[next] == self.opc.JUMP_ABSOLUTE and code[target] in self.jump_forward: + next_target = self.get_target(next) if self.get_target(target) == next_target: self.fixed_jumps[pos] = pre[next] return - elif self.is_jump_forward(next_target) and self.get_target(next_target) == self.get_target(target): + elif code[next_target] in self.jump_forward and self.get_target(next_target) == self.get_target(target): self.fixed_jumps[pos] = pre[next] return @@ -719,7 +699,7 @@ class Scanner2(scan.Scanner): # Does the "if" jump just beyond a jump op, then this is probably an if statement pre_rtarget = pre[rtarget] code_pre_rtarget = code[pre_rtarget] - if self.is_jump_forward(pre_rtarget): + if code_pre_rtarget in self.jump_forward: if_end = self.get_target(pre_rtarget) # Is this a loop and not an "if" statment? @@ -795,7 +775,6 @@ class Scanner2(scan.Scanner): if label is not None and label != -1: targets[label] = targets.get(label, []) + [i] - elif op == self.opc.END_FINALLY and i in self.fixed_jumps: label = self.fixed_jumps[i] targets[label] = targets.get(label, []) + [i]