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

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

?? items.java

?? 這是實現Javac功能的GJC的最新源碼
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
            } else {                load();                if (x >= 0) {                    makeImmediateItem(syms.intType, new Integer(x)).load();                    code.emitop(iadd);                } else {                    makeImmediateItem(syms.intType, new Integer(-x)).load();                    code.emitop(isub);                }                makeStackItem(syms.intType).coerce(typecode);                store();            }        }        public String toString() {            return "localItem(type=" + type + "; reg=" + reg + ")";        }    }    /**      * An item representing a static variable or method.      */    class StaticItem extends Item {        /**         * The represented symbol.         */        Symbol member;        StaticItem(Symbol member) {            super(Code.typecode(member.erasure()));            this.member = member;        }        Item load() {            code.emitop(getstatic, Code.width(typecode));            code.emit2(pool.put(member));            return stackItem[typecode];        }        Item store() {            code.emitop(putstatic, -Code.width(typecode));            code.emit2(pool.put(member));            return voidItem;        }        Item invoke() {            MethodType mtype = (MethodType) member.erasure();            int argsize = Code.width(mtype.argtypes);            int rescode = Code.typecode(mtype.restype);            int sdiff = Code.width(rescode) - argsize;            code.emitop(invokestatic, sdiff);            code.emit2(pool.put(member));            return stackItem[rescode];        }        public String toString() {            return "static(" + member + ")";        }    }    /**      * An item representing an instance variable or method.      */    class MemberItem extends Item {        /**         * The represented symbol.         */        Symbol member;        /**         * Flag that determines whether or not access is virtual.         */        boolean nonvirtual;        MemberItem(Symbol member, boolean nonvirtual) {            super(Code.typecode(member.erasure()));            this.member = member;            this.nonvirtual = nonvirtual;        }        Item load() {            code.emitop(getfield, Code.width(typecode) - 1);            code.emit2(pool.put(member));            return stackItem[typecode];        }        Item store() {            code.emitop(putfield, -Code.width(typecode) - 1);            code.emit2(pool.put(member));            return voidItem;        }        Item invoke() {            MethodType mtype = (MethodType) member.externalType();            int argsize = Code.width(mtype.argtypes);            int rescode = Code.typecode(mtype.restype);            int sdiff = Code.width(rescode) - argsize;            if ((member.owner.flags() & Flags.INTERFACE) != 0) {                code.emitop(invokeinterface, sdiff - 1);                code.emit2(pool.put(member));                code.emit1(argsize + 1);                code.emit1(0);            } else if (nonvirtual) {                code.emitop(invokespecial, sdiff - 1);                code.emit2(pool.put(member));            } else {                code.emitop(invokevirtual, sdiff - 1);                code.emit2(pool.put(member));            }            return stackItem[rescode];        }        void duplicate() {            stackItem[OBJECTcode].duplicate();        }        void drop() {            stackItem[OBJECTcode].drop();        }        void stash(int toscode) {            stackItem[OBJECTcode].stash(toscode);        }        int width() {            return 1;        }        public String toString() {            return "member(" + member + (nonvirtual ? " nonvirtual)" : ")");        }    }    /**      * An item representing a literal.      */    class ImmediateItem extends Item {        /**         * The literal's value.         */        Object value;        ImmediateItem(Type type, Object value) {            super(Code.typecode(type));            this.value = value;        }        private void ldc() {            int idx = pool.put(value);            if (typecode == LONGcode || typecode == DOUBLEcode) {                code.emitop(ldc2w, 2);                code.emit2(idx);            } else if (idx <= 255) {                code.emitop(ldc1, 1);                code.emit1(idx);            } else {                code.emitop(ldc2, 1);                code.emit2(idx);            }        }        Item load() {            switch (typecode) {            case INTcode:            case BYTEcode:            case SHORTcode:            case CHARcode:                int ival = ((Number) value).intValue();                if (-1 <= ival && ival <= 5)                    code.emitop(iconst_0 + ival);                else if (Byte.MIN_VALUE <= ival && ival <= Byte.MAX_VALUE)                    code.emitop1(bipush, ival);                else if (Short.MIN_VALUE <= ival && ival <= Short.MAX_VALUE)                    code.emitop2(sipush, ival);                else                    ldc();                break;            case LONGcode:                long lval = ((Number) value).longValue();                if (lval == 0 || lval == 1)                    code.emitop(lconst_0 + (int) lval);                else                    ldc();                break;            case FLOATcode:                float fval = ((Number) value).floatValue();                if (isPosZero(fval) || fval == 1.0 || fval == 2.0)                    code.emitop(fconst_0 + (int) fval);                else {                    ldc();                }                break;            case DOUBLEcode:                double dval = ((Number) value).doubleValue();                if (isPosZero(dval) || dval == 1.0)                    code.emitop(dconst_0 + (int) dval);                else                    ldc();                break;            case OBJECTcode:                ldc();                break;            default:                assert false;            }            return stackItem[typecode];        }        /**          * Return true iff float number is positive 0.          */        private boolean isPosZero(float x) {            return x == 0.0F && 1.0F / x > 0.0F;        }        /**          * Return true iff double number is positive 0.          */        private boolean isPosZero(double x) {            return x == 0.0 && 1.0 / x > 0.0;        }        CondItem mkCond() {            int ival = ((Number) value).intValue();            return makeCondItem(ival != 0 ? goto_ : dontgoto);        }        Item coerce(int targetcode) {            if (typecode == targetcode) {                return this;            } else {                switch (targetcode) {                case INTcode:                    if (Code.truncate(typecode) == INTcode)                        return this;                    else                        return new ImmediateItem(syms.intType,                                new Integer(((Number) value).intValue()));                case LONGcode:                    return new ImmediateItem(syms.longType,                            new Long(((Number) value).longValue()));                case FLOATcode:                    return new ImmediateItem(syms.floatType,                            new Float(((Number) value).floatValue()));                case DOUBLEcode:                    return new ImmediateItem(syms.doubleType,                            new Double(((Number) value).doubleValue()));                case BYTEcode:                    return new ImmediateItem(syms.byteType,                            new Integer((byte)((Number) value).intValue()));                case CHARcode:                    return new ImmediateItem(syms.charType,                            new Integer((char)((Number) value).intValue()));                case SHORTcode:                    return new ImmediateItem(syms.shortType,                            new Integer((short)((Number) value).intValue()));                default:                    return super.coerce(targetcode);                }            }        }        public String toString() {            return "immediate(" + value + ")";        }    }    /**      * An item representing an assignment expressions.      */    class AssignItem extends Item {        /**         * The item representing the assignment's left hand side.         */        Item lhs;        AssignItem(Item lhs) {            super(lhs.typecode);            this.lhs = lhs;        }        Item load() {            lhs.stash(typecode);            lhs.store();            return stackItem[typecode];        }        void duplicate() {            load().duplicate();        }        void drop() {            lhs.store();        }        void stash(int toscode) {            assert false;        }        int width() {            return lhs.width() + Code.width(typecode);        }        public String toString() {            return "assign(lhs = " + lhs + ")";        }    }    /**      * An item representing a conditional or unconditional jump.      */    class CondItem extends Item {        /**         * A chain encomassing all jumps that can be taken         *  if the condition evaluates to true.         */        Chain trueJumps;        /**         * A chain encomassing all jumps that can be taken         *  if the condition evaluates to false.         */        Chain falseJumps;        /**         * The jump's opcode.         */        int opcode;        Tree tree;        CondItem(int opcode, Chain truejumps, Chain falsejumps) {            super(BYTEcode);            this.opcode = opcode;            this.trueJumps = truejumps;            this.falseJumps = falsejumps;        }        Item load() {            Chain trueChain = null;            Chain falseChain = jumpFalse();            if (trueJumps != null || opcode != dontgoto) {                code.resolve(trueJumps);                code.emitop(iconst_1);                trueChain = code.branch(goto_);            }            if (falseChain != null) {                code.resolve(falseChain);                code.emitop(iconst_0);            }            code.resolve(trueChain);            return stackItem[typecode];        }        void duplicate() {            load().duplicate();        }        void drop() {            load().drop();        }        void stash(int toscode) {            assert false;        }        CondItem mkCond() {            return this;        }        Chain jumpTrue() {            if (tree == null)                return code.mergeChains(trueJumps, code.branch(opcode));            int startpc = code.curPc();            Chain c = code.mergeChains(trueJumps, code.branch(opcode));            code.crt.put(tree, CRTable.CRT_BRANCH_TRUE, startpc, code.curPc());            return c;        }        Chain jumpFalse() {            if (tree == null)                return code.mergeChains(falseJumps, code.branch(code.negate(opcode)));            int startpc = code.curPc();            Chain c = code.mergeChains(falseJumps, code.branch(code.negate(opcode)));            code.crt.put(tree, CRTable.CRT_BRANCH_FALSE, startpc, code.curPc());            return c;        }        CondItem negate() {            CondItem c = new CondItem(code.negate(opcode), falseJumps, trueJumps);            c.tree = tree;            return c;        }        int width() {            return -code.stackdiff[opcode];        }        boolean isTrue() {            return falseJumps == null && opcode == goto_;        }        boolean isFalse() {            return trueJumps == null && opcode == dontgoto;        }        public String toString() {            return "cond(" + Code.mnem(opcode) + ")";        }    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美区自拍先锋| 欧美私人免费视频| 久久综合久久久久88| 免费的国产精品| 久久久99久久| 国产乱理伦片在线观看夜一区| 精品国产乱码久久久久久老虎 | 中文字幕综合网| 色诱视频网站一区| 爽爽淫人综合网网站| 欧美精品自拍偷拍| 蜜臂av日日欢夜夜爽一区| 欧美成人video| 国产99一区视频免费| 欧美国产日本视频| 91黄色激情网站| 男女性色大片免费观看一区二区| 精品福利在线导航| av一本久道久久综合久久鬼色| 亚洲伦在线观看| 4438成人网| 成人午夜av影视| 亚洲国产日韩综合久久精品| 日韩免费电影网站| 99久久国产综合色|国产精品| 国产精品第13页| 欧美日韩一区二区三区视频| 久久99精品久久久久| 国产精品久久国产精麻豆99网站| 欧美日韩在线播| 国产成人一级电影| 一区二区三区色| 久久―日本道色综合久久| 色婷婷综合五月| 国内成人精品2018免费看| 亚洲欧美日韩国产另类专区 | 精品一区二区综合| 国产精品高潮呻吟久久| 5858s免费视频成人| bt7086福利一区国产| 日韩精品一级中文字幕精品视频免费观看 | 国产乱码精品1区2区3区| 亚洲视频一二三| 欧美tickling挠脚心丨vk| 色呦呦国产精品| 国产91露脸合集magnet| 爽好多水快深点欧美视频| 中文字幕在线观看一区二区| 日韩午夜电影在线观看| 色婷婷一区二区三区四区| 国产毛片一区二区| 亚洲成av人片在线观看无码| 国产午夜亚洲精品午夜鲁丝片| 欧美日韩中文精品| 成人v精品蜜桃久久一区| 国产真实乱对白精彩久久| 亚洲国产视频一区| 亚洲欧洲成人精品av97| 久久久午夜电影| 欧美sm极限捆绑bd| 4438x成人网最大色成网站| 色综合久久久久综合体| 国产99精品视频| 紧缚奴在线一区二区三区| 丝袜亚洲另类欧美| 亚洲电影在线播放| 亚洲黄色片在线观看| 亚洲欧洲中文日韩久久av乱码| 国产女同性恋一区二区| 26uuu精品一区二区三区四区在线| 欧美片在线播放| 欧美日韩精品一区二区在线播放 | 国产精品综合二区| 日本女人一区二区三区| 亚洲成人先锋电影| 一区二区三区精品| 亚洲色图20p| 国产精品超碰97尤物18| 国产精品国产三级国产普通话三级 | 亚洲高清视频的网址| 一区二区三区不卡视频在线观看| 国产欧美在线观看一区| 日本一区二区视频在线| 国产欧美va欧美不卡在线| 国产欧美日韩麻豆91| 欧美激情综合在线| 国产精品对白交换视频| 成人免费一区二区三区在线观看| 国产精品乱码久久久久久| 亚洲国产精品二十页| 国产精品白丝在线| 一区二区三区久久久| 亚洲一区二区影院| 日韩 欧美一区二区三区| 久草在线在线精品观看| 国产剧情一区在线| 不卡一区在线观看| 91久久免费观看| 日韩欧美色电影| 亚洲国产精品国自产拍av| 亚洲色图欧洲色图婷婷| 亚洲小说欧美激情另类| 日本不卡在线视频| 国产在线一区二区综合免费视频| 国产精品一区二区你懂的| 本田岬高潮一区二区三区| 色欧美片视频在线观看| 欧美猛男gaygay网站| 久久久久久电影| 日韩美女视频19| 免费人成在线不卡| 99麻豆久久久国产精品免费| 在线精品视频免费播放| 欧美一区二区女人| 最近中文字幕一区二区三区| 热久久免费视频| 成人精品一区二区三区中文字幕| 欧美综合久久久| 久久久影视传媒| 亚洲国产wwwccc36天堂| 国产精品影音先锋| 欧美亚洲国产bt| 久久久www成人免费无遮挡大片| 亚洲九九爱视频| 九九九久久久精品| 91九色最新地址| 中文字幕第一区综合| 天堂久久一区二区三区| 成人短视频下载| 欧美成人女星排行榜| 亚洲精品成a人| 国产精品自在欧美一区| 欧美私人免费视频| 亚洲欧洲无码一区二区三区| 男男视频亚洲欧美| 欧美曰成人黄网| 亚洲国产精品二十页| 久久精品国产精品亚洲精品| 欧洲国内综合视频| 日本一区二区电影| 精品亚洲porn| 6080午夜不卡| 亚洲丶国产丶欧美一区二区三区| 丁香五精品蜜臀久久久久99网站| 日韩欧美一级在线播放| 亚洲激情五月婷婷| 白白色亚洲国产精品| 久久久美女艺术照精彩视频福利播放| 亚洲福利一区二区三区| 99久久精品免费精品国产| 国产午夜精品一区二区| 精品中文av资源站在线观看| 欧美性猛交一区二区三区精品| 日韩一区中文字幕| 风间由美性色一区二区三区| 久久久三级国产网站| 精品一区二区av| 日韩一区二区在线免费观看| 亚洲妇熟xx妇色黄| 欧美日韩在线播放三区四区| 亚洲免费在线视频| 91丨九色丨蝌蚪丨老版| 中文字幕亚洲精品在线观看| 福利一区在线观看| 日本一区二区免费在线观看视频| 国内精品久久久久影院一蜜桃| 日韩视频免费观看高清完整版 | 极品美女销魂一区二区三区| 在线成人高清不卡| 日韩和欧美的一区| 日韩一区国产二区欧美三区| 日韩av一级片| 精品裸体舞一区二区三区| 麻豆91免费看| 2023国产精品| 国产成人亚洲精品青草天美| 国产欧美日韩另类视频免费观看| 国产精品亚洲人在线观看| 久久久国产精品麻豆| 国产.欧美.日韩| 国产精品理伦片| 欧美亚洲综合一区| 日本不卡1234视频| 久久久精品2019中文字幕之3| 成人性生交大片免费看中文| √…a在线天堂一区| 欧美在线制服丝袜| 三级成人在线视频| 久久一夜天堂av一区二区三区 | 麻豆91在线播放免费| 久久女同互慰一区二区三区| 国产成人精品三级| 亚洲日本在线天堂| 91精品国产麻豆| 国产成人精品一区二区三区网站观看| 国产精品视频一区二区三区不卡| 色综合久久天天| 免费在线一区观看| 国产精品蜜臀在线观看| 欧美日本国产视频|