def gen_cast_expr(info, node, method_obj): end_lbl = info.get_jump_label() output = ["; START gen_cast_expr"] output.extend(gen_expr(info, node[1], method_obj)) if primitives.is_primitive(node[1].typ): return output # check null output.append("cmp eax, 0") output.append("je %s" % end_lbl) output.append("push eax") canon = node[0].canon output.extend(util.gen_assignability_check(info, canon)) output.append("cmp eax, 0") output.append("je __exception") output.append("pop eax") output.append(end_lbl + ":") output.append("; END gen_creation_expr_array") return output
def gen_instanceof_expr(info, node, method_obj): end_lbl = info.get_jump_label() output = ["; gen_instanceof_expr"] output.extend(gen_expr(info, node[0], method_obj)) # check null output.append("cmp eax, 0") output.append("je %s" % end_lbl) canon = node[1].canon output.extend(util.gen_assignability_check(info, canon)) output.append(end_lbl + ":") return output