Esempio n. 1
0
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
Esempio n. 2
0
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