compile.c: check type before checking insn_id

* compile.c (iseq_peephole_optimize): check element type before
  checking insn_id which is valid only for INSN elements.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52632 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2015-11-18 02:08:17 +00:00
Родитель d8e1939232
Коммит e4fc85dfcf
1 изменённых файлов: 7 добавлений и 1 удалений

Просмотреть файл

@ -1998,7 +1998,13 @@ iseq_peephole_optimize(rb_iseq_t *iseq, LINK_ELEMENT *list, const int do_tailcal
*/
INSN *nobj = (INSN *)get_destination_insn(iobj);
INSN *pobj = (INSN *)iobj->link.prev;
int prev_dup = (pobj && pobj->insn_id == BIN(dup));
int prev_dup = 0;
if (pobj) {
if (pobj->link.type != ISEQ_ELEMENT_INSN)
pobj = 0;
else if (pobj->insn_id == BIN(dup))
prev_dup = 1;
}
for (;;) {
if (nobj->insn_id == BIN(jump)) {