Я недавно сделал декомпилятор для AVM2 / AS3 и заметил, что Flash-компилятор имеет тенденцию выдавать много ненужного кода.Например, для определенного приложения я удалил около 10% кода без ущерба для функциональности.Это был просто мертвый код, на который не ссылались ни условные коды операций, ни блоки обработки исключений.
Также посмотрите на этот фрагмент:
...
313 setproperty y
315 getlocal 12
<b> 317 returnvalue
318 jump L9</b>
L3:
322 getlocal 8
324 returnvalue
L9:
<b> 325 jump L10</b> ; L10 (opcode #331) does not ever exist.
; Technically, it is a jump beyond
; the end of function. This is invalid code!
L2:
329 pushnull
330 returnvalue
Ну, конечно, это неверный код,также мертв и, следовательно, не будет вызывать каких-либо побочных эффектов (кроме вздутие живота кодовой базы).Но почему он вообще испускает этот код?И почему верификатор принимает это?