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

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

?? gen.java

?? javac是sun公司開發人員使用java語言編寫的優秀的工業級java編譯器
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
            CondItem result = items.makeCondItem(second.opcode,                    code.mergeChains(trueJumps, second.trueJumps),                    code.mergeChains(falseJumps, second.falseJumps));            if (markBranches)                result.tree = tree.falsepart;            return result;        } else {            CondItem result = genExpr(_tree, syms.booleanType).mkCond();            if (markBranches)                result.tree = _tree;            return result;        }    }    /**      * Visitor method: generate code for an expression, catching and reporting      *  any completion failures.      *  @param tree    The expression to be visited.      *  @param pt      The expression's expected type (proto-type).      */    public Item genExpr(Tree tree, Type pt) {        Type prevPt = this.pt;        try {            if (tree.type.constValue != null) {                checkStringConstant(tree.pos, tree.type.constValue);                result = items.makeImmediateItem(tree.type, tree.type.constValue);            } else {                this.pt = pt;                tree.accept(this);            }            return result.coerce(pt);        } catch (CompletionFailure ex) {            chk.completionError(tree.pos, ex);            return items.makeStackItem(pt);        }        finally { this.pt = prevPt;                } }    /**      * Derived visitor method: generate code for a list of method arguments.      *  @param trees    The argument expressions to be visited.      *  @param pts      The expression's expected types (i.e. the formal parameter      *                  types of the invoked method).      */    public void genArgs(List trees, List pts) {        for (List l = trees; l.nonEmpty(); l = l.tail) {            genExpr((Tree) l.head, (Type) pts.head).load();            pts = pts.tail;        }        assert pts.isEmpty();    }    public void visitMethodDef(MethodDef tree) {        Env localEnv = env.dup(tree);        localEnv.enclMethod = tree;        this.pt = tree.sym.erasure().restype();        checkDimension(tree.pos, tree.sym.erasure());        genMethod(tree, localEnv, false);    }    /**      * Generate code for a method.      *  @param tree     The tree representing the method definition.      *  @param env      The environment current for the method body.      *  @param fatcode  A flag that indicates whether all jumps are within 32K.      *                  We first invoke this method under the assumption      *                  that fatcode == false, i.e. all jumps are within 32K.      *                  If this fails, fatcode is set to true and we try again.      */    void genMethod(MethodDef tree, Env env, boolean fatcode) {        MethodSymbol meth = tree.sym;        if (Code.width(env.enclMethod.sym.type.erasure().argtypes()) +                (((tree.flags & STATIC) == 0 || meth.isConstructor()) ? 1 : 0) >                ClassFile.MAX_PARAMETERS) {            log.error(tree.pos, "limit.parameters");            nerrs++;        } else if (tree.body != null) {            meth.code = code = new Code(fatcode, lineDebugInfo, varDebugInfo,                    genCrt ? new CRTable(tree, env.toplevel.endPositions) : null);            items = new Items(pool, code, syms);            if (Code.debugCode)                System.err.println(meth);            if ((tree.flags & STATIC) == 0)                code.setDefined( code.newLocal(                        new VarSymbol(FINAL, names._this, meth.owner.type,                        meth.owner)));            for (List l = tree.params; l.nonEmpty(); l = l.tail) {                checkDimension(((Tree.VarDef) l.head).pos,                        ((Tree.VarDef) l.head).sym.type);                code.setDefined(code.newLocal(((Tree.VarDef) l.head).sym));            }            int startpcCrt = genCrt ? code.curPc() : 0;            genStat(tree.body, env);            assert code.stacksize == 0;            if (code.isAlive()) {                code.statBegin(TreeInfo.endPos(tree.body));                if (env.enclMethod == null ||                        env.enclMethod.sym.type.restype().tag == VOID) {                    code.emitop(return_);                } else {                    int startpc = code.entryPoint();                    CondItem c = items.makeCondItem(goto_);                    code.resolve(c.jumpTrue(), startpc);                }            }            if (genCrt) {                code.crt.put(tree.body, CRT_BLOCK, startpcCrt, code.curPc());            }            code.endScopes(0);            if (code.checkLimits(tree.pos, log)) {                nerrs++;                return;            }            if (!fatcode && code.fatcode)                genMethod(tree, env, true);        }    }    public void visitVarDef(VarDef tree) {        VarSymbol v = tree.sym;        code.newLocal(v);        if (tree.init != null) {            checkStringConstant(tree.init.pos, v.constValue);            if (v.constValue == null || varDebugInfo) {                genExpr(tree.init, v.erasure()).load();                items.makeLocalItem(v).store();            }        }        checkDimension(tree.pos, v.type);    }    public void visitSkip(Skip tree) {    }    public void visitBlock(Block tree) {        int limit = code.nextreg;        Env localEnv = env.dup(tree, new GenContext());        genStats(tree.stats, localEnv);        if (env.tree.tag != Tree.METHODDEF)            code.endScopes(limit);    }    public void visitDoLoop(DoLoop tree) {        genLoop(tree, tree.body, tree.cond, Tree.emptyList, false);    }    public void visitWhileLoop(WhileLoop tree) {        genLoop(tree, tree.body, tree.cond, Tree.emptyList, true);    }    public void visitForLoop(ForLoop tree) {        int limit = code.nextreg;        genStats(tree.init, env);        genLoop(tree, tree.body, tree.cond, tree.step, true);        code.endScopes(limit);    }    /**      * Generate code for a loop.      *  @param loop       The tree representing the loop.      *  @param body       The loop's body.      *  @param cond       The loop's controling condition.      *  @param step       "Step" statements to be inserted at end of      *                    each iteration.      *  @param testFirst  True if the loop test belongs before the body.      */    private void genLoop(Tree loop, Tree body, Tree cond, List step,            boolean testFirst) {        Env loopEnv = env.dup(loop, new GenContext());        int startpc = code.entryPoint();        if (testFirst) {            CondItem c;            if (cond != null) {                code.statBegin(cond.pos);                c = genCond(TreeInfo.skipParens(cond), CRT_FLOW_CONTROLLER);            } else {                c = items.makeCondItem(goto_);            }            Chain loopDone = c.jumpFalse();            code.resolve(c.trueJumps);            genStat(body, loopEnv, CRT_STATEMENT | CRT_FLOW_TARGET);            code.resolve(((Gen.GenContext) loopEnv.info).cont);            genStats(step, loopEnv);            code.resolve(code.branch(goto_), startpc);            code.resolve(loopDone);        } else {            genStat(body, loopEnv, CRT_STATEMENT | CRT_FLOW_TARGET);            code.resolve(((Gen.GenContext) loopEnv.info).cont);            genStats(step, loopEnv);            CondItem c;            if (cond != null) {                code.statBegin(cond.pos);                c = genCond(TreeInfo.skipParens(cond), CRT_FLOW_CONTROLLER);            } else {                c = items.makeCondItem(goto_);            }            code.resolve(c.jumpTrue(), startpc);            code.resolve(c.falseJumps);        }        code.resolve(((Gen.GenContext) loopEnv.info).exit);    }    public void visitLabelled(Labelled tree) {        Env localEnv = env.dup(tree, new GenContext());        genStat(tree.body, localEnv, CRT_STATEMENT);        code.resolve(((Gen.GenContext) localEnv.info).exit);    }    public void visitSwitch(Switch tree) {        int limit = code.nextreg;        int startpcCrt = genCrt ? code.curPc() : 0;        Item sel = genExpr(tree.selector, syms.intType);        Bits definedSwitch = varDebugInfo ? code.defined.dup() : null;        List cases = tree.cases;        if (cases.isEmpty()) {            sel.load().drop();            if (genCrt)                code.crt.put(TreeInfo.skipParens(tree.selector),                        CRT_FLOW_CONTROLLER, startpcCrt, code.curPc());        } else {            sel.load();            if (genCrt)                code.crt.put(TreeInfo.skipParens(tree.selector),                        CRT_FLOW_CONTROLLER, startpcCrt, code.curPc());            Env switchEnv = env.dup(tree, new GenContext());            ((Gen.GenContext) switchEnv.info).isSwitch = true;            int lo = Integer.MAX_VALUE;            int hi = Integer.MIN_VALUE;            int nlabels = 0;            int[] labels = new int[cases.length()];            int defaultIndex = -1;            List l = cases;            for (int i = 0; i < labels.length; i++) {                if (((Tree.Case) l.head).pat != null) {                    int val = ((Number)((Tree.Case) l.head).pat.type.constValue).                            intValue();                    labels[i] = val;                    if (val < lo)                        lo = val;                    if (hi < val)                        hi = val;                    nlabels++;                } else {                    assert defaultIndex == -1;                    defaultIndex = i;                }                l = l.tail;            }            long table_space_cost = 4 + ((long) hi - lo + 1);            long table_time_cost = 3;            long lookup_space_cost = 3 + 2 * (long) nlabels;            long lookup_time_cost = nlabels;            int opcode = nlabels > 0 && table_space_cost + 3 * table_time_cost <=                    lookup_space_cost + 3 * lookup_time_cost ? tableswitch :                    lookupswitch;            int startpc = code.curPc();            code.emitop(opcode);            code.align(4);            int tableBase = code.curPc();            int[] offsets = null;            code.emit4(-1);            if (opcode == tableswitch) {                code.emit4(lo);                code.emit4(hi);                for (long i = lo; i <= hi; i++) {                    code.emit4(-1);                }            } else {                code.emit4(nlabels);                for (int i = 0; i < nlabels; i++) {                    code.emit4(-1);                    code.emit4(-1);                }                offsets = new int[labels.length];            }            code.markDead();            l = cases;            for (int i = 0; i < labels.length; i++) {                Case c = (Tree.Case) l.head;                l = l.tail;                int pc = code.entryPoint();                if (i != defaultIndex) {                    if (opcode == tableswitch) {                        code.put4(tableBase + 4 * (labels[i] - lo + 3), pc - startpc);                    } else {                        offsets[i] = pc - startpc;                    }                } else {                    code.put4(tableBase, pc - startpc);                }                code.setDefined(definedSwitch);                genStats(c.stats, switchEnv, CRT_FLOW_TARGET);            }            code.resolve(((Gen.GenContext) switchEnv.info).exit);            if (code.get4(tableBase) == -1) {                code.put4(tableBase, code.entryPoint() - startpc);            }            if (opcode == tableswitch) {                int defaultOffset = code.get4(tableBase);                for (long i = lo; i <= hi; i++) {                    int t = (int)(tableBase + 4 * (i - lo + 3));                    if (code.get4(t) == -1)                        code.put4(t, defaultOffset);                }            } else {                if (defaultIndex >= 0)                    for (int i = defaultIndex; i < labels.length - 1; i++) {                        labels[i] = labels[i + 1];                        offsets[i] = offsets[i + 1];                    }                if (nlabels > 0)                    qsort2(labels, offsets, 0, nlabels - 1);                for (int i = 0; i < nlabels; i++) {                    int caseidx = tableBase + 8 * (i + 1);                    code.put4(caseidx, labels[i]);                    code.put4(caseidx + 4, offsets[i]);                }            }        }        code.endScopes(limit);    }    /**      * Sort (int) arrays of keys and values      */    static void qsort2(int[] keys, int[] values, int lo, int hi) {        int i = lo;        int j = hi;        int pivot = keys[(i + j) / 2];        do {            while (keys[i] < pivot)                i++;            while (pivot < keys[j])                j--;            if (i <= j) {                int temp1 = keys[i];                keys[i] = keys[j];                keys[j] = temp1;                int temp2 = values[i];                values[i] = values[j];                values[j] = temp2;                i++;                j--;            }        } while (i <= j)            ;        if (lo < j)            qsort2(keys, values, lo, j);        if (i < hi)            qsort2(keys, values, i, hi);    }    public void visitSynchronized(Synchronized tree) {        int limit = code.nextreg;        final Item lockVar = makeTemp(syms.objectType);        genExpr(tree.lock, tree.lock.type).load().duplicate();        lockVar.store();        code.emitop(monitorenter);        final Env syncEnv = env.dup(tree, new GenContext());        ((Gen.GenContext) syncEnv.info).finalize = new GenFinalizer() {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
五月天一区二区| 国产一区久久久| 久久日一线二线三线suv| 一本到不卡免费一区二区| 免费在线观看一区| 亚洲精品视频在线观看免费| 久久综合久久久久88| 欧美区视频在线观看| 91在线视频播放地址| 国产美女精品在线| 蜜臀久久久99精品久久久久久| 亚洲欧美日韩综合aⅴ视频| 久久尤物电影视频在线观看| 3d动漫精品啪啪1区2区免费| 在线视频国产一区| 91啪亚洲精品| av一区二区久久| 国产999精品久久| 国内成人免费视频| 蜜臀久久久99精品久久久久久| 亚洲成精国产精品女| 亚洲精品成人a在线观看| 亚洲色图丝袜美腿| 亚洲欧洲精品一区二区三区不卡| 亚洲乱码日产精品bd| 久久久久久久久一| 亚洲精品在线观看视频| 日韩一区二区三免费高清| 欧美在线播放高清精品| 一本一本大道香蕉久在线精品| 成人免费视频网站在线观看| 国产精品一级二级三级| 美女被吸乳得到大胸91| 另类中文字幕网| 美女www一区二区| 久久精品国产秦先生| 久久99热这里只有精品| 看电影不卡的网站| 麻豆传媒一区二区三区| 久久se精品一区精品二区| 经典一区二区三区| 狠狠色丁香婷婷综合久久片| 国产自产高清不卡| 国产精品2024| 岛国av在线一区| www.欧美日韩| 在线看一区二区| 欧美日本精品一区二区三区| 欧美区一区二区三区| 日韩视频123| 日韩精品中文字幕在线不卡尤物| 欧美成人激情免费网| 久久一日本道色综合| 欧美激情中文不卡| 综合色中文字幕| 亚洲大片免费看| 蜜桃精品视频在线| 国产精品一二三区在线| 97aⅴ精品视频一二三区| 在线观看免费一区| 日韩一区二区视频| 国产亚洲午夜高清国产拍精品| 中文字幕av资源一区| 亚洲国产视频在线| 精品中文av资源站在线观看| 成人性生交大片免费| 日本韩国一区二区| 欧美一区二区三区视频免费播放| xfplay精品久久| 亚洲欧美日韩中文字幕一区二区三区 | 国产精品久久久久影院老司| 中文字幕综合网| 日韩vs国产vs欧美| 成人avav影音| 欧美狂野另类xxxxoooo| 久久精子c满五个校花| 亚洲免费在线观看| 黄页视频在线91| 91看片淫黄大片一级| 欧美成人a视频| 中文字幕佐山爱一区二区免费| 首页欧美精品中文字幕| 国产成a人亚洲| 欧美区一区二区三区| 国产片一区二区| 午夜精品久久久久久久久| 国产不卡在线视频| 欧美日本高清视频在线观看| 国产欧美一区视频| 午夜伊人狠狠久久| 成人看片黄a免费看在线| 欧美一区二区三区电影| 亚洲视频在线一区| 韩国精品一区二区| 欧美精品乱码久久久久久按摩| 中文字幕欧美三区| 日本aⅴ精品一区二区三区| 91麻豆国产福利精品| 久久精品一区四区| 免费在线观看精品| 欧美午夜免费电影| 日韩美女视频一区二区| 国产精品1区二区.| 欧美成人精品福利| 日韩精品一区第一页| 欧美综合亚洲图片综合区| 日本一区二区不卡视频| 精品在线视频一区| 日韩一区二区在线观看视频播放| 亚洲精品乱码久久久久久| 成人免费毛片嘿嘿连载视频| 精品免费日韩av| 日一区二区三区| 欧洲精品一区二区| 18欧美乱大交hd1984| 成人黄色电影在线| 久久女同互慰一区二区三区| 久久电影网站中文字幕| 制服丝袜亚洲色图| 石原莉奈在线亚洲三区| 欧美色视频在线观看| 亚洲一区二区视频在线观看| 色88888久久久久久影院按摩| 国产精品美女久久久久aⅴ国产馆| 国产精品自产自拍| 久久日韩粉嫩一区二区三区| 精品中文字幕一区二区| 欧美va亚洲va| 久久 天天综合| 精品国产青草久久久久福利| 毛片基地黄久久久久久天堂| 欧美一区二区三区免费观看视频| 日韩精品视频网站| 日韩一级片网址| 久久99国产精品麻豆| 精品免费一区二区三区| 黄色日韩网站视频| 久久蜜桃av一区二区天堂| 国产精品综合网| 国产天堂亚洲国产碰碰| 国产成人亚洲精品青草天美| 国产亚洲va综合人人澡精品| 成人综合在线网站| 中文字幕永久在线不卡| 在线一区二区三区四区| 丝袜亚洲精品中文字幕一区| 欧美一激情一区二区三区| 麻豆成人av在线| 久久久久久久久久久久久夜| 国产不卡视频在线观看| 亚洲欧美日韩国产手机在线| 欧美色手机在线观看| 蜜乳av一区二区三区| xfplay精品久久| 99视频一区二区三区| 亚洲精品欧美二区三区中文字幕| 欧美日韩一级视频| 麻豆精品一区二区三区| 国产蜜臀97一区二区三区 | 91麻豆精品久久久久蜜臀| 激情文学综合网| 国产精品视频观看| 欧美系列一区二区| 极品少妇一区二区三区精品视频| 中文字幕欧美区| 欧美另类videos死尸| 国产在线麻豆精品观看| 日韩av一区二区三区四区| 久久九九99视频| 欧美综合在线视频| 精品一区二区三区香蕉蜜桃| 国产精品白丝在线| 欧美理论在线播放| 成人国产一区二区三区精品| 午夜激情一区二区三区| 日本一区二区三区dvd视频在线| 在线观看免费亚洲| 国产九色sp调教91| 亚洲1区2区3区4区| 国产精品全国免费观看高清| 91精品综合久久久久久| 成人的网站免费观看| 日韩综合在线视频| 中文字幕中文字幕在线一区 | 日韩**一区毛片| 中文字幕在线不卡| 欧美电视剧在线看免费| 99久久精品费精品国产一区二区| 奇米四色…亚洲| 亚洲精品你懂的| 国产欧美日韩综合精品一区二区 | 中文字幕乱码亚洲精品一区| 欧美伦理电影网| 91影院在线免费观看| 狠狠色狠狠色综合| 天天综合色天天| 亚洲三级在线观看| 日本一区二区三区在线不卡| 91精品国产品国语在线不卡| 色悠悠久久综合|