亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gen.java

?? javac是sun公司開發人員使用java語言編寫的優秀的工業級java編譯器
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
    public void visitIf(If tree) {        int limit = code.nextreg;        Chain thenExit = null;        CondItem c = genCond(TreeInfo.skipParens(tree.cond), CRT_FLOW_CONTROLLER);        Chain elseChain = c.jumpFalse();        if (!c.isFalse()) {            code.resolve(c.trueJumps);            genStat(tree.thenpart, env, CRT_STATEMENT | CRT_FLOW_TARGET);            thenExit = code.branch(goto_);        }        if (elseChain != null) {            code.resolve(elseChain);            if (tree.elsepart != null)                genStat(tree.elsepart, env, CRT_STATEMENT | CRT_FLOW_TARGET);        }        code.resolve(thenExit);        code.endScopes(limit);    }    public void visitExec(Exec tree) {        if (tree.expr.tag == Tree.POSTINC)            tree.expr.tag = Tree.PREINC;        else if (tree.expr.tag == Tree.POSTDEC)            tree.expr.tag = Tree.PREDEC;        genExpr(tree.expr, tree.expr.type).drop();    }    public void visitBreak(Break tree) {        Env targetEnv = unwind(tree.target, env);        assert code.stacksize == 0;        ((Gen.GenContext) targetEnv.info).addExit(code.branch(goto_));        endFinalizerGaps(env, targetEnv);    }    public void visitContinue(Continue tree) {        Env targetEnv = unwind(tree.target, env);        assert code.stacksize == 0;        ((Gen.GenContext) targetEnv.info).addCont(code.branch(goto_));        endFinalizerGaps(env, targetEnv);    }    public void visitReturn(Return tree) {        int limit = code.nextreg;        final Env targetEnv;        if (tree.expr != null) {            Item r = genExpr(tree.expr, pt).load();            if (hasFinally(env.enclMethod, env)) {                r = makeTemp(pt);                r.store();            }            targetEnv = unwind(env.enclMethod, env);            r.load();            code.emitop(ireturn + Code.truncate(Code.typecode(pt)));        } else {            targetEnv = unwind(env.enclMethod, env);            code.emitop(return_);        }        endFinalizerGaps(env, targetEnv);        code.endScopes(limit);    }    public void visitThrow(Throw tree) {        genExpr(tree.expr, tree.expr.type).load();        code.emitop(athrow);    }    public void visitApply(Apply tree) {        Item m = genExpr(tree.meth, methodType);        genArgs(tree.args, TreeInfo.symbol(tree.meth).externalType().argtypes());        result = m.invoke();    }    public void visitConditional(Conditional tree) {        Chain thenExit = null;        CondItem c = genCond(tree.cond, CRT_FLOW_CONTROLLER);        Chain elseChain = c.jumpFalse();        if (!c.isFalse()) {            code.resolve(c.trueJumps);            int startpc = genCrt ? code.curPc() : 0;            genExpr(tree.truepart, pt).load();            if (genCrt)                code.crt.put(tree.truepart, CRT_FLOW_TARGET, startpc, code.curPc());            thenExit = code.branch(goto_);        }        if (elseChain != null) {            code.resolve(elseChain);            int startpc = genCrt ? code.curPc() : 0;            genExpr(tree.falsepart, pt).load();            if (genCrt)                code.crt.put(tree.falsepart, CRT_FLOW_TARGET, startpc, code.curPc());        }        code.resolve(thenExit);        result = items.makeStackItem(pt);    }    public void visitNewClass(NewClass tree) {        assert tree.encl == null && tree.def == null;        code.emitop2(new_, makeRef(tree.pos, tree.type));        code.emitop(dup);        genArgs(tree.args, tree.constructor.externalType().argtypes());        items.makeMemberItem(tree.constructor, true).invoke();        result = items.makeStackItem(tree.type);    }    public void visitNewArray(NewArray tree) {        if (tree.elems != null) {            Type elemtype = tree.type.elemtype();            loadIntConst(tree.elems.length());            Item arr = makeNewArray(tree.pos, tree.type, 1);            int i = 0;            for (List l = tree.elems; l.nonEmpty(); l = l.tail) {                arr.duplicate();                loadIntConst(i);                i++;                genExpr((Tree) l.head, elemtype).load();                items.makeIndexedItem(elemtype).store();            }            result = arr;        } else {            for (List l = tree.dims; l.nonEmpty(); l = l.tail) {                genExpr((Tree) l.head, syms.intType).load();            }            result = makeNewArray(tree.pos, tree.type, tree.dims.length());        }    }    /**      * Generate code to create an array with given element type and number      *  of dimensions.      */    Item makeNewArray(int pos, Type type, int ndims) {        Type elemtype = type.elemtype();        if (elemtype.dimensions() + ndims > ClassFile.MAX_DIMENSIONS) {            log.error(pos, "limit.dimensions");            nerrs++;        }        int elemcode = Code.arraycode(elemtype);        if (elemcode == 0 || (elemcode == 1 && ndims == 1)) {            code.emitop2(anewarray, makeRef(pos, elemtype));        } else if (elemcode == 1) {            code.emitop(multianewarray, 1 - ndims);            code.emit2(makeRef(pos, type));            code.emit1(ndims);        } else {            code.emitop1(newarray, elemcode);        }        return items.makeStackItem(type);    }    public void visitParens(Parens tree) {        result = genExpr(tree.expr, tree.expr.type);    }    public void visitAssign(Assign tree) {        Item l = genExpr(tree.lhs, tree.lhs.type);        genExpr(tree.rhs, tree.lhs.type).load();        result = items.makeAssignItem(l);    }    public void visitAssignop(Assignop tree) {        OperatorSymbol operator = (OperatorSymbol) tree.operator;        Item l;        if (operator.opcode == string_add) {            makeStringBuffer(tree.pos);            l = genExpr(tree.lhs, tree.lhs.type);            if (l.width() > 0) {                code.emitop(dup_x1 + 3 * (l.width() - 1));            }            l.load();            appendString(tree.lhs);            appendStrings(tree.rhs);            bufferToString(tree.pos);        } else {            l = genExpr(tree.lhs, tree.lhs.type);            if ((tree.tag == Tree.PLUS_ASG || tree.tag == Tree.MINUS_ASG) &&                    l instanceof LocalItem && tree.lhs.type.tag <= INT &&                    tree.rhs.type.tag <= INT && tree.rhs.type.constValue != null) {                int ival = ((Number) tree.rhs.type.constValue).intValue();                if (tree.tag == Tree.MINUS_ASG)                    ival = -ival;                if (-128 <= ival && ival <= 127) {                    ((LocalItem) l).incr(ival);                    result = l;                    return;                }            }            l.duplicate();            l.coerce((Type) operator.type.argtypes().head).load();            completeBinop(tree.lhs, tree.rhs, operator).coerce(tree.lhs.type);        }        result = items.makeAssignItem(l);    }    public void visitUnary(Unary tree) {        OperatorSymbol operator = (OperatorSymbol) tree.operator;        if (tree.tag == Tree.NOT) {            CondItem od = genCond(tree.arg, false);            result = od.negate();        } else {            Item od = genExpr(tree.arg, (Type) operator.type.argtypes().head);            switch (tree.tag) {            case Tree.POS:                result = od.load();                break;            case Tree.NEG:                result = od.load();                code.emitop(operator.opcode);                break;            case Tree.COMPL:                result = od.load();                emitMinusOne(od.typecode);                code.emitop(operator.opcode);                break;            case Tree.PREINC:            case Tree.PREDEC:                od.duplicate();                if (od instanceof LocalItem &&                        (operator.opcode == iadd || operator.opcode == isub)) {                    ((LocalItem) od).incr(tree.tag == Tree.PREINC ? 1 : -1);                    result = od;                } else {                    od.load();                    code.emitop(one(od.typecode));                    code.emitop(operator.opcode);                    if (od.typecode != INTcode &&                            Code.truncate(od.typecode) == INTcode)                        code.emitop(int2byte + od.typecode - BYTEcode);                    result = items.makeAssignItem(od);                }                break;            case Tree.POSTINC:            case Tree.POSTDEC:                od.duplicate();                if (od instanceof LocalItem && operator.opcode == iadd) {                    Item res = od.load();                    ((LocalItem) od).incr(tree.tag == Tree.POSTINC ? 1 : -1);                    result = res;                } else {                    Item res = od.load();                    od.stash(od.typecode);                    code.emitop(one(od.typecode));                    code.emitop(operator.opcode);                    if (od.typecode != INTcode &&                            Code.truncate(od.typecode) == INTcode)                        code.emitop(int2byte + od.typecode - BYTEcode);                    od.store();                    result = res;                }                break;            case Tree.NULLCHK:                result = od.load();                code.emitop(dup);                genNullCheck(tree.pos);                break;            default:                assert false;            }        }    }    /**      * Generate a null check from the object value at stack top.      */    private void genNullCheck(int pos) {        callMethod(pos, syms.objectType, names.getClass, Type.emptyList, false);        code.emitop(pop);    }    public void visitBinary(Binary tree) {        OperatorSymbol operator = (OperatorSymbol) tree.operator;        if (operator.opcode == string_add) {            makeStringBuffer(tree.pos);            appendStrings(tree);            bufferToString(tree.pos);            result = items.makeStackItem(syms.stringType);        } else if (tree.tag == Tree.AND) {            CondItem lcond = genCond(tree.lhs, CRT_FLOW_CONTROLLER);            if (!lcond.isFalse()) {                Chain falseJumps = lcond.jumpFalse();                code.resolve(lcond.trueJumps);                CondItem rcond = genCond(tree.rhs, CRT_FLOW_TARGET);                result = items.makeCondItem(rcond.opcode, rcond.trueJumps,                        code.mergeChains(falseJumps, rcond.falseJumps));            } else {                result = lcond;            }        } else if (tree.tag == Tree.OR) {            CondItem lcond = genCond(tree.lhs, CRT_FLOW_CONTROLLER);            if (!lcond.isTrue()) {                Chain trueJumps = lcond.jumpTrue();                code.resolve(lcond.falseJumps);                CondItem rcond = genCond(tree.rhs, CRT_FLOW_TARGET);                result = items.makeCondItem(rcond.opcode,                        code.mergeChains(trueJumps, rcond.trueJumps),                        rcond.falseJumps);            } else {                result = lcond;            }        } else {            Item od = genExpr(tree.lhs, (Type) operator.type.argtypes().head);            od.load();            result = completeBinop(tree.lhs, tree.rhs, operator);        }    }    /**      * Make a new string buffer.      */    void makeStringBuffer(int pos) {        code.emitop2(new_, makeRef(pos, syms.stringBufferType));        code.emitop(dup);        callMethod(pos, syms.stringBufferType, names.init, Type.emptyList, false);    }    /**      * Append value (on tos) to string buffer (on tos - 1).      */    void appendString(Tree tree) {        Type t = tree.type;        if (t.tag > lastBaseTag && t.tsym != syms.stringType.tsym) {            t = syms.objectType;        }        callMethod(tree.pos, syms.stringBufferType, names.append,                Type.emptyList.prepend(t), false);    }    /**      * Add all strings in tree to string buffer.      */    void appendStrings(Tree tree) {        tree = TreeInfo.skipParens(tree);        if (tree.tag == Tree.PLUS && tree.type.constValue == null) {            Binary op = (Binary) tree;            if (op.operator.kind == MTH &&                    ((OperatorSymbol) op.operator).opcode == string_add) {                appendStrings(op.lhs);                appendStrings(op.rhs);                return;            }        }        genExpr(tree, tree.type).load();        appendString(tree);    }    /**      * Convert string buffer on tos to string.      */    void bufferToString(int pos) {        callMethod(pos, syms.stringBufferType, names.toString, Type.emptyList, false);    }    /**      * Complete

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一区二区三区在线播放 | 99re免费视频精品全部| 欧美成人激情免费网| 久久99久久久久| 久久精品一区二区三区不卡| 国产精品一区三区| 国产精品日日摸夜夜摸av| 91麻豆国产在线观看| 夜夜夜精品看看| 欧美xxxx老人做受| 国产不卡视频在线播放| 亚洲乱码国产乱码精品精可以看| 欧洲一区二区三区在线| 日韩有码一区二区三区| 精品国产髙清在线看国产毛片| 国产成人免费视频| 一区二区三区在线视频免费观看| 欧美一区二区福利在线| 粗大黑人巨茎大战欧美成人| 亚洲男人天堂av| 555www色欧美视频| 国产激情视频一区二区在线观看| 亚洲精品一二三| 欧美电影免费观看高清完整版在线 | 成人激情黄色小说| 伊人婷婷欧美激情| 欧美成人a∨高清免费观看| 成人免费电影视频| 日日夜夜精品视频天天综合网| 精品国产乱码久久久久久久| 色婷婷av一区二区三区gif| 日产欧产美韩系列久久99| 国产精品无码永久免费888| 欧美三区在线观看| 成人午夜短视频| 天堂久久一区二区三区| 亚洲国产精品v| 884aa四虎影成人精品一区| 成人深夜福利app| 青青草97国产精品免费观看无弹窗版 | 国产99久久久久| 天堂久久一区二区三区| 亚洲美女视频一区| 精品成人一区二区三区四区| 欧美亚男人的天堂| 国产成人综合视频| 日本在线不卡视频| 亚洲免费观看高清完整版在线| 欧美精品一区二| 欧美电影在线免费观看| 日本电影欧美片| 国产成人亚洲综合a∨婷婷| 亚洲成人激情社区| 亚洲免费在线看| 久久久久久一级片| 欧美一级国产精品| 欧美日韩视频第一区| 99精品国产99久久久久久白柏| 麻豆国产一区二区| 日本怡春院一区二区| 亚洲高清久久久| 一二三四区精品视频| 亚洲欧美中日韩| 国产欧美精品一区二区色综合朱莉| 91精品国产色综合久久不卡电影| 91免费版在线| 91视频免费播放| 91香蕉国产在线观看软件| 成人精品视频一区二区三区| 国产精品一区二区久久精品爱涩 | 国产精品狼人久久影院观看方式| 精品久久久久久久久久久久久久久| 欧美日韩精品福利| 欧美人与禽zozo性伦| 欧美中文字幕亚洲一区二区va在线| 99热99精品| 91猫先生在线| 色久综合一二码| 91美女蜜桃在线| 欧美亚洲图片小说| 欧美日韩在线免费视频| 在线一区二区三区四区五区| 色视频成人在线观看免| 91黄色在线观看| 一本到不卡免费一区二区| 99久久免费精品| 91美女蜜桃在线| 欧美亚洲丝袜传媒另类| 制服丝袜中文字幕一区| 日韩无一区二区| 久久综合久久综合久久| 国产亚洲精品aa午夜观看| 久久九九国产精品| 欧美激情综合在线| 亚洲欧美激情小说另类| 一区二区在线观看不卡| 日韩电影免费在线观看网站| 老司机精品视频线观看86| 国内精品国产三级国产a久久| 国产寡妇亲子伦一区二区| 国产成人av福利| 91网站最新地址| 91.xcao| 国产午夜精品久久久久久免费视 | 国产精品免费看片| 亚洲九九爱视频| 午夜精品久久久久久久久| 另类调教123区 | 91在线观看视频| 欧美影视一区二区三区| 日韩亚洲欧美一区二区三区| 久久久久亚洲蜜桃| 夜夜嗨av一区二区三区中文字幕 | 成人v精品蜜桃久久一区| 欧美中文字幕一区二区三区| 精品国产免费久久| 成人欧美一区二区三区白人 | 国产电影一区二区三区| 在线亚洲+欧美+日本专区| 日韩欧美激情一区| 自拍偷拍亚洲激情| 蜜桃精品在线观看| 波多野洁衣一区| 欧美一区二区三区影视| 国产精品久久久久久户外露出| 亚洲一区二区三区精品在线| 国产精品一区二区果冻传媒| 欧洲另类一二三四区| 国产日韩欧美高清在线| 日韩精品一级二级| 成人激情小说网站| 日韩三级伦理片妻子的秘密按摩| 亚洲视频资源在线| 国产麻豆精品95视频| 91精品国产综合久久久蜜臀图片| 国产日本一区二区| 日本不卡在线视频| 色天天综合色天天久久| 国产婷婷色一区二区三区| 免费在线观看不卡| 欧美伊人久久大香线蕉综合69 | 日韩你懂的在线观看| 亚洲永久精品国产| 成人视屏免费看| 久久免费午夜影院| 日本大胆欧美人术艺术动态| 色视频一区二区| 综合久久综合久久| 国产一区二区三区电影在线观看 | 久久精品水蜜桃av综合天堂| 丝袜诱惑亚洲看片| 欧美日韩一级视频| 亚洲乱码一区二区三区在线观看| 国产在线麻豆精品观看| 日韩一区二区高清| 午夜精品成人在线视频| 色香蕉久久蜜桃| 亚洲欧洲成人精品av97| 成人丝袜18视频在线观看| 久久久久久免费网| 国产精品自在在线| 精品国产自在久精品国产| 日本欧美久久久久免费播放网| 欧美人与禽zozo性伦| 婷婷综合五月天| 欧美日韩精品高清| 午夜电影一区二区三区| 欧美日韩一区在线观看| 亚洲五码中文字幕| 欧美日韩国产一二三| 视频在线在亚洲| 欧美第一区第二区| 精久久久久久久久久久| 久久综合九色综合欧美98| 韩国三级中文字幕hd久久精品| www国产精品av| 国产黄人亚洲片| 国产精品国产三级国产aⅴ无密码| 成人午夜av在线| 亚洲欧洲国产专区| 欧美日韩免费一区二区三区 | 欧美激情一区二区三区四区| 波多野结衣中文一区| 亚洲欧美色图小说| 欧美性色黄大片| 日韩国产在线观看一区| 欧美电影免费提供在线观看| 国产一区二区三区最好精华液| 国产欧美日韩久久| 欧美自拍偷拍午夜视频| 免费在线观看精品| 国产日韩v精品一区二区| 99精品视频中文字幕| 亚洲综合激情网| 欧美电影精品一区二区| 成人av片在线观看| 亚洲国产人成综合网站| 日韩精品一区在线| av不卡一区二区三区| 亚洲高清免费视频|