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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? items.java

?? 這是實(shí)現(xiàn)Javac功能的GJC的最新源碼
?? JAVA
?? 第 1 頁 / 共 2 頁
字號(hào):
/** * @(#)Items.java	1.22 03/01/23 * * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package com.sun.tools.javac.v8.comp;import com.sun.tools.javac.v8.util.*;import com.sun.tools.javac.v8.code.*;import com.sun.tools.javac.v8.code.Symbol.*;import com.sun.tools.javac.v8.code.Type.*;import com.sun.tools.javac.v8.code.Code.*;import com.sun.tools.javac.v8.tree.Tree;/** * A helper class for code generation. Items are objects *  that stand for addressable entities in the bytecode. Each item *  supports a fixed protocol for loading the item on the stack, storing *  into it, converting it into a jump condition, and several others. *  There are many individual forms of items, such as local, static, *  indexed, or instance variables, values on the top of stack, the *  special values this or super, etc. Individual items are represented as *  inner classes in class Items. */public class Items implements ByteCodes, TypeTags {    /**     * The current constant pool.     */    Pool pool;    /**     * The current code buffer.     */    Code code;    /**     * The current symbol table.     */    Symtab syms;    /**     * Items that exist only once (flyweight pattern).     */    private final Item voidItem;    private final Item thisItem;    private final Item superItem;    private final Item[] stackItem = new Item[TypeCodeCount];    public Items(Pool pool, Code code, Symtab syms) {        super();        this.code = code;        this.pool = pool;        voidItem = new Item(VOIDcode) {                       public String toString() {                           return "void";                       }                   };        thisItem = new SelfItem(false);        superItem = new SelfItem(true);        for (int i = 0; i < VOIDcode; i++)            stackItem[i] = new StackItem(i);        stackItem[VOIDcode] = voidItem;        this.syms = syms;    }    /**      * Make a void item      */    Item makeVoidItem() {        return voidItem;    }    /**      * Make an item representing `this'.      */    Item makeThisItem() {        return thisItem;    }    /**      * Make an item representing `super'.      */    Item makeSuperItem() {        return superItem;    }    /**      * Make an item representing a value on stack.      *  @param type    The value's type.      */    Item makeStackItem(Type type) {        return stackItem[Code.typecode(type)];    }    /**      * Make an item representing an indexed expression.      *  @param type    The expression's type.      */    Item makeIndexedItem(Type type) {        return new IndexedItem(type);    }    /**      * Make an item representing a local variable.      *  @param v    The represented variable.      */    Item makeLocalItem(VarSymbol v) {        return new LocalItem(v.erasure(), v.adr);    }    /**      * Make an item representing a local anonymous variable.      *  @param type  The represented variable's type.      *  @param reg   The represented variable's register.      */    Item makeLocalItem(Type type, int reg) {        return new LocalItem(type, reg);    }    /**      * Make an item representing a static variable or method.      *  @param member   The represented symbol.      */    Item makeStaticItem(Symbol member) {        return new StaticItem(member);    }    /**      * Make an item representing an instance variable or method.      *  @param member       The represented symbol.      *  @param nonvirtual   Is the reference not virtual? (true for constructors      *                      and private members).      */    Item makeMemberItem(Symbol member, boolean nonvirtual) {        return new MemberItem(member, nonvirtual);    }    /**      * Make an item representing a literal.      *  @param t      The literal's type.      *  @param value  The literal's value.      */    Item makeImmediateItem(Type type, Object value) {        return new ImmediateItem(type, value);    }    /**      * Make an item representing an assignment expression.      *  @param lhs      The item representing the assignment's left hand side.      */    Item makeAssignItem(Item lhs) {        return new AssignItem(lhs);    }    /**      * Make an item representing a conditional or unconditional jump.      *  @param opcode      The jump's opcode.      *  @param trueJumps   A chain encomassing all jumps that can be taken      *                     if the condition evaluates to true.      *  @param falseJumps  A chain encomassing all jumps that can be taken      *                     if the condition evaluates to false.      */    CondItem makeCondItem(int opcode, Chain truejumps, Chain falsejumps) {        return new CondItem(opcode, truejumps, falsejumps);    }    /**      * Make an item representing a conditional or unconditional jump.      *  @param opcode      The jump's opcode.      */    CondItem makeCondItem(int opcode) {        return makeCondItem(opcode, null, null);    }    /**      * The base class of all items, which implements default behavior.      */    abstract class Item {        /**         * The type code of values represented by this item.         */        int typecode;        Item(int typecode) {            super();            this.typecode = typecode;        }        /**          * Generate code to load this item onto stack.          */        Item load() {            throw new AssertionError();        }        /**          * Generate code to store top of stack into this item.          */        Item store() {            throw new AssertionError("store unsupported: " + this);        }        /**          * Generate code to invoke method represented by this item.          */        Item invoke() {            throw new AssertionError(this.toString());        }        /**          * Generate code to use this item twice.          */        void duplicate() {        }        /**          * Generate code to avoid having to use this item.          */        void drop() {        }        /**          * Generate code to stash a copy of top of stack - of typecode toscode -          *  under this item.          */        void stash(int toscode) {            stackItem[toscode].duplicate();        }        /**          * Generate code to turn item into a testable condition.          */        CondItem mkCond() {            load();            return makeCondItem(ifne);        }        /**          * Generate code to coerce item to given type code.          *  @param targetcode    The type code to coerce to.          */        Item coerce(int targetcode) {            if (typecode == targetcode)                return this;            else {                load();                int typecode1 = Code.truncate(typecode);                int targetcode1 = Code.truncate(targetcode);                if (typecode1 != targetcode1) {                    int offset =                            targetcode1 > typecode1 ? targetcode1 - 1 : targetcode1;                    code.emitop(i2l + typecode1 * 3 + offset);                }                if (targetcode != targetcode1) {                    code.emitop(int2byte + targetcode - BYTEcode);                }                return stackItem[targetcode];            }        }        /**          * Generate code to coerce item to given type.          *  @param targettype    The type to coerce to.          */        Item coerce(Type targettype) {            return coerce(Code.typecode(targettype));        }        /**          * Return the width of this item on stack as a number of words.          */        int width() {            return 0;        }        public abstract String toString();    }    /**      * An item representing a value on stack.      */    class StackItem extends Item {        StackItem(int typecode) {            super(typecode);        }        Item load() {            return this;        }        void duplicate() {            code.emitop(width() == 2 ? dup2 : dup);        }        void drop() {            code.emitop(width() == 2 ? pop2 : pop);        }        void stash(int toscode) {            code.emitop((width() == 2 ? dup_x2 : dup_x1) +                    3 * (Code.width(toscode) - 1));        }        int width() {            return Code.width(typecode);        }        public String toString() {            return "stack(" + typecodeNames[typecode] + ")";        }    }    /**      * An item representing an indexed expression.      */    class IndexedItem extends Item {        IndexedItem(Type type) {            super(Code.typecode(type));        }        Item load() {            code.emitop(iaload + typecode);            return stackItem[typecode];        }        Item store() {            code.emitop(iastore + typecode);            return voidItem;        }        void duplicate() {            code.emitop(dup2);        }        void drop() {            code.emitop(pop2);        }        void stash(int toscode) {            code.emitop(dup_x2 + 3 * (Code.width(toscode) - 1));        }        int width() {            return 2;        }        public String toString() {            return "indexed(" + ByteCodes.typecodeNames[typecode] + ")";        }    }    /**      * An item representing `this' or `super'.      */    class SelfItem extends Item {        /**         * Flag which determines whether this item represents `this' or `super'.         */        boolean isSuper;        SelfItem(boolean isSuper) {            super(OBJECTcode);            this.isSuper = isSuper;        }        Item load() {            code.emitop(aload_0);            return stackItem[typecode];        }        public String toString() {            return isSuper ? "super" : "this";        }    }    /**      * An item representing a local variable.      */    class LocalItem extends Item {        /**         * The variable's register.         */        int reg;        /**         * The variable's type.         */        Type type;        LocalItem(Type type, int reg) {            super(Code.typecode(type));            assert reg >= 0;            this.type = type;            this.reg = reg;        }        Item load() {            if (reg <= 3)                code.emitop(iload_0 + Code.truncate(typecode) * 4 + reg);            else                code.emitop1w(iload + Code.truncate(typecode), reg);            return stackItem[typecode];        }        Item store() {            if (reg <= 3)                code.emitop(istore_0 + Code.truncate(typecode) * 4 + reg);            else                code.emitop1w(istore + Code.truncate(typecode), reg);            code.setDefined(reg);            return voidItem;        }        void incr(int x) {            if (typecode == INTcode) {                code.emitop1w(iinc, reg);                if (reg > 255)                    code.emit2(x);                else                    code.emit1(x);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
强制捆绑调教一区二区| 国产日韩欧美精品电影三级在线| 亚洲国产日韩综合久久精品| 色成人在线视频| 日韩国产成人精品| 精品国产一区二区国模嫣然| 国产精品一区二区果冻传媒| 欧美国产97人人爽人人喊| av网站一区二区三区| 亚洲一区二区四区蜜桃| 日韩免费成人网| 成人一区在线观看| 亚洲一区二区3| 精品少妇一区二区三区在线播放 | 亚洲色图19p| 欧美嫩在线观看| 国产一区二区毛片| 亚洲精品国产a久久久久久| 欧美精品日韩综合在线| 激情图区综合网| 夜夜嗨av一区二区三区四季av| 777奇米四色成人影色区| 国产宾馆实践打屁股91| 亚洲综合色视频| 欧美激情中文字幕一区二区| 欧美性猛片xxxx免费看久爱| 国产精品一线二线三线精华| 亚洲精品国产视频| 精品国产三级电影在线观看| 91麻豆免费看| 国产久卡久卡久卡久卡视频精品| 一区二区三区小说| 国产日韩av一区二区| 欧美日韩精品一二三区| 成人免费视频国产在线观看| 三级欧美在线一区| 亚洲天天做日日做天天谢日日欢 | 国内精品免费**视频| 亚洲黄色免费网站| 久久久欧美精品sm网站| 欧美午夜在线观看| 成人少妇影院yyyy| 久久精品国产77777蜜臀| 亚洲激情成人在线| 国产精品丝袜91| 精品国产乱码久久久久久夜甘婷婷| 色婷婷亚洲婷婷| 国产成人高清在线| 国产综合久久久久影院| 日韩精品免费专区| 一区二区三区中文字幕精品精品| 久久精品免费在线观看| 欧美一区二区三区精品| 91成人免费电影| 色综合天天综合网天天狠天天 | 91欧美激情一区二区三区成人| 精品无人码麻豆乱码1区2区| 亚洲国产精品一区二区久久| 一区二区激情小说| 一区二区三区欧美激情| 成人免费在线视频| 国产精品三级久久久久三级| 久久久不卡网国产精品一区| 欧美成人女星排行榜| 日韩免费观看高清完整版 | 欧美成人精品1314www| 欧美色成人综合| 91福利小视频| 一本到三区不卡视频| 色综合天天综合网天天看片| 色综合天天综合网天天狠天天| 99re热这里只有精品免费视频| 成人性生交大片免费看中文网站| 国产精品资源站在线| 国产一区二区电影| 国产乱码一区二区三区| 国产成人在线网站| av在线一区二区三区| 99久久综合99久久综合网站| 成人黄色av电影| 99国产精品久久| 欧美在线观看禁18| 777奇米成人网| 欧美成人国产一区二区| 久久综合九色综合97婷婷女人| 久久亚洲精华国产精华液 | 欧美一区二区三区成人| 日韩美女天天操| 久久久九九九九| 亚洲欧美另类小说视频| 亚洲一区二区精品久久av| 日韩黄色免费电影| 国模一区二区三区白浆| k8久久久一区二区三区| 在线免费观看日本一区| 日韩午夜在线播放| 国产日本一区二区| 亚洲免费观看高清| 日韩综合一区二区| 经典三级视频一区| av不卡免费电影| 欧美人妇做爰xxxⅹ性高电影| 日韩视频国产视频| 国产目拍亚洲精品99久久精品| 亚洲另类色综合网站| 日韩精品色哟哟| 成人免费视频app| 欧美四级电影在线观看| 精品国产乱码久久久久久图片| 国产精品亲子伦对白| 亚洲成av人片一区二区梦乃| 国产尤物一区二区在线| 欧洲中文字幕精品| 国产欧美日韩亚州综合 | 亚洲va韩国va欧美va精品| 麻豆国产精品777777在线| 国产91在线观看丝袜| 欧美日韩一区三区四区| 国产视频一区在线播放| 亚洲妇女屁股眼交7| 国产乱码精品一区二区三区忘忧草| 91麻豆免费观看| 久久精品欧美一区二区三区不卡| 亚洲综合色区另类av| 成人综合婷婷国产精品久久蜜臀 | 日韩欧美高清一区| 1024成人网色www| 黄页网站大全一区二区| 欧美日韩免费视频| 国产精品免费丝袜| 精品一区二区久久| 欧美日韩激情一区| 亚洲人成伊人成综合网小说| 激情综合色丁香一区二区| 在线亚洲一区二区| 欧美国产国产综合| 国产在线精品免费av| 欧美一区二区三区色| 亚洲一区二区三区四区不卡| www.日韩在线| 国产亚洲欧美日韩俺去了| 老司机精品视频线观看86| 欧美日韩成人在线一区| 亚洲欧美日韩国产手机在线| 国产成人欧美日韩在线电影| 精品国产伦一区二区三区观看方式| 亚洲h在线观看| 在线观看成人免费视频| 国产精品一级二级三级| 热久久久久久久| 欧美视频你懂的| 亚洲一区二区3| 欧美在线免费观看视频| 亚洲资源在线观看| 欧美在线观看视频一区二区| 樱花草国产18久久久久| 日本伦理一区二区| 亚洲日本欧美天堂| 色婷婷久久久亚洲一区二区三区| 中文字幕一区日韩精品欧美| 成人综合婷婷国产精品久久免费| 久久久久久久久久久电影| 国产精品亚洲第一区在线暖暖韩国| 精品少妇一区二区| 久久se精品一区精品二区| 欧美zozozo| 国产成人福利片| 中文字幕一区二区三区av| av电影天堂一区二区在线观看| 18欧美乱大交hd1984| 在线观看欧美精品| 亚洲日本在线观看| 欧美日韩一区二区三区免费看| 亚洲午夜激情网页| 欧美精品乱码久久久久久| 奇米色一区二区三区四区| 欧美xfplay| 成人毛片在线观看| 一区二区三区四区乱视频| 欧美色图激情小说| 强制捆绑调教一区二区| 亚洲午夜在线电影| 欧美日韩精品一区二区天天拍小说| 日韩影视精彩在线| 久久久综合九色合综国产精品| 国产a精品视频| 亚洲一区二区高清| 欧美大片在线观看| 成人的网站免费观看| 亚洲一区免费视频| 日韩欧美一区二区不卡| 成人网页在线观看| 亚洲成人三级小说| 久久影视一区二区| 色婷婷国产精品| 久久精品国产成人一区二区三区| 中文久久乱码一区二区| 欧美日韩你懂得| 国产成人精品一区二区三区四区 | 日本一区二区综合亚洲|