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

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

?? optimizer.java

?? 主要的怎么樣結合java 和 javascript!
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/* * The contents of this file are subject to the Netscape Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/NPL/ * * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. * * The Original Code is Rhino code, released * May 6, 1999. * * The Initial Developer of the Original Code is Netscape * Communications Corporation.  Portions created by Netscape are * Copyright (C) 1997-1999 Netscape Communications Corporation. All * Rights Reserved. * * Contributor(s): * Norris Boyd * Roger Lawrence * * Alternatively, the contents of this file may be used under the * terms of the GNU Public License (the "GPL"), in which case the * provisions of the GPL are applicable instead of those above. * If you wish to allow use of your version of this file only * under the terms of the GPL and not to allow others to use your * version of this file under the NPL, indicate your decision by * deleting the provisions above and replace them with the notice * and other provisions required by the GPL.  If you do not delete * the provisions above, a recipient may use your version of this * file under either the NPL or the GPL. */package org.mozilla.javascript.optimizer;import org.mozilla.javascript.*;class Optimizer{    static final int NoType = 0;    static final int NumberType = 1;    static final int AnyType = 3;    // It is assumed that (NumberType | AnyType) == AnyType    void optimize(ScriptOrFnNode scriptOrFn, int optLevel)    {        itsOptLevel = optLevel;        //  run on one function at a time for now        int functionCount = scriptOrFn.getFunctionCount();        for (int i = 0; i != functionCount; ++i) {            OptFunctionNode f = OptFunctionNode.get(scriptOrFn, i);            optimizeFunction(f);        }    }    private void optimizeFunction(OptFunctionNode theFunction)    {        if (theFunction.fnode.requiresActivation()) return;        inDirectCallFunction = theFunction.isTargetOfDirectCall();        this.theFunction = theFunction;        ObjArray statementsArray = new ObjArray();        buildStatementList_r(theFunction.fnode, statementsArray);        Node[] theStatementNodes = new Node[statementsArray.size()];        statementsArray.toArray(theStatementNodes);        Block.runFlowAnalyzes(theFunction, theStatementNodes);        if (!theFunction.fnode.requiresActivation()) {            /*             * Now that we know which local vars are in fact always             * Numbers, we re-write the tree to take advantage of             * that. Any arithmetic or assignment op involving just             * Number typed vars is marked so that the codegen will             * generate non-object code.             */            parameterUsedInNumberContext = false;            for (int i = 0; i < theStatementNodes.length; i++) {                rewriteForNumberVariables(theStatementNodes[i]);            }            theFunction.setParameterNumberContext(parameterUsedInNumberContext);        }    }/*        Each directCall parameter is passed as a pair of values - an object        and a double. The value passed depends on the type of value available at        the call site. If a double is available, the object in java/lang/Void.TYPE        is passed as the object value, and if an object value is available, then        0.0 is passed as the double value.        The receiving routine always tests the object value before proceeding.        If the parameter is being accessed in a 'Number Context' then the code        sequence is :        if ("parameter_objectValue" == java/lang/Void.TYPE)            ...fine..., use the parameter_doubleValue        else            toNumber(parameter_objectValue)        and if the parameter is being referenced in an Object context, the code is        if ("parameter_objectValue" == java/lang/Void.TYPE)            new Double(parameter_doubleValue)        else            ...fine..., use the parameter_objectValue        If the receiving code never uses the doubleValue, it is converted on        entry to a Double instead.*//*        We're referencing a node in a Number context (i.e. we'd prefer it        was a double value). If the node is a parameter in a directCall        function, mark it as being referenced in this context.*/    private void markDCPNumberContext(Node n)    {        if (inDirectCallFunction && n.getType() == Token.GETVAR) {            int varIndex = theFunction.getVarIndex(n);            if (theFunction.isParameter(varIndex)) {                parameterUsedInNumberContext = true;            }        }    }    private boolean convertParameter(Node n)    {        if (inDirectCallFunction && n.getType() == Token.GETVAR) {            int varIndex = theFunction.getVarIndex(n);            if (theFunction.isParameter(varIndex)) {                n.removeProp(Node.ISNUMBER_PROP);                return true;            }        }        return false;    }    private int rewriteForNumberVariables(Node n)    {        switch (n.getType()) {            case Token.EXPR_VOID : {                    Node child = n.getFirstChild();                    int type = rewriteForNumberVariables(child);                    if (type == NumberType)                        n.putIntProp(Node.ISNUMBER_PROP, Node.BOTH);                     return NoType;                }            case Token.NUMBER :                n.putIntProp(Node.ISNUMBER_PROP, Node.BOTH);                return NumberType;            case Token.GETVAR :                {                    int varIndex = theFunction.getVarIndex(n);                    if (inDirectCallFunction                        && theFunction.isParameter(varIndex))                    {                        n.putIntProp(Node.ISNUMBER_PROP, Node.BOTH);                        return NumberType;                    }                    else if (theFunction.isNumberVar(varIndex)) {                        n.putIntProp(Node.ISNUMBER_PROP, Node.BOTH);                        return NumberType;                    }                    return NoType;                }            case Token.INC :            case Token.DEC : {                    Node child = n.getFirstChild();     // will be a GETVAR or GETPROP                    if (child.getType() == Token.GETVAR) {                        int varIndex = theFunction.getVarIndex(child);                        if (theFunction.isNumberVar(varIndex)) {                            n.putIntProp(Node.ISNUMBER_PROP, Node.BOTH);                            markDCPNumberContext(child);                            return NumberType;                        }                        else                            return NoType;                    }                    else                        return NoType;                }            case Token.SETVAR : {                    Node lChild = n.getFirstChild();                    Node rChild = lChild.getNext();                    int rType = rewriteForNumberVariables(rChild);                    int varIndex = theFunction.getVarIndex(n);                    if (inDirectCallFunction                        && theFunction.isParameter(varIndex))                    {                        if (rType == NumberType) {                            if (!convertParameter(rChild)) {                                n.putIntProp(Node.ISNUMBER_PROP, Node.BOTH);                                return NumberType;                            }                            markDCPNumberContext(rChild);                            return NoType;                        }                        else                            return rType;                    }                    else if (theFunction.isNumberVar(varIndex)) {                        if (rType != NumberType) {                            n.removeChild(rChild);                            n.addChildToBack(                                new Node(Token.TO_DOUBLE, rChild));                        }                        n.putIntProp(Node.ISNUMBER_PROP, Node.BOTH);                        markDCPNumberContext(rChild);                        return NumberType;                    }                    else {                        if (rType == NumberType) {                            if (!convertParameter(rChild)) {                                n.removeChild(rChild);                                n.addChildToBack(                                    new Node(Token.TO_OBJECT, rChild));                            }                        }                        return NoType;                    }                }            case Token.LE :            case Token.LT :            case Token.GE :            case Token.GT : {                    Node lChild = n.getFirstChild();                    Node rChild = lChild.getNext();                    int lType = rewriteForNumberVariables(lChild);                    int rType = rewriteForNumberVariables(rChild);                    markDCPNumberContext(lChild);                    markDCPNumberContext(rChild);                    if (convertParameter(lChild)) {                        if (convertParameter(rChild)) {                            return NoType;                        } else if (rType == NumberType) {                            n.putIntProp(Node.ISNUMBER_PROP, Node.RIGHT);                        }                    }                    else if (convertParameter(rChild)) {                        if (lType == NumberType) {                            n.putIntProp(Node.ISNUMBER_PROP, Node.LEFT);                        }                    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产资源在线一区| 亚洲欧美偷拍另类a∨色屁股| 在线观看av一区| 色综合咪咪久久| 欧美日韩亚洲高清一区二区| 777xxx欧美| 国产日韩欧美高清| 亚洲精品欧美激情| 日韩va亚洲va欧美va久久| 免费精品视频最新在线| 六月婷婷色综合| 成人在线视频一区| 不卡视频在线观看| 日韩一区二区精品在线观看| 日本一区二区成人| 日本亚洲电影天堂| 成人激情小说网站| 日韩一级免费观看| 综合亚洲深深色噜噜狠狠网站| 五月婷婷激情综合| 国产999精品久久久久久| 欧美老年两性高潮| 国产欧美日韩综合| 日本不卡在线视频| 99视频精品免费视频| 国产亚洲欧美中文| 欧美一区二区三区四区五区| 国产精品狼人久久影院观看方式| 日韩在线a电影| 成人激情图片网| 在线观看国产日韩| 亚洲精品你懂的| 99久久综合国产精品| 久久婷婷成人综合色| 视频一区二区中文字幕| 欧美午夜精品电影| 亚洲女爱视频在线| 欧洲精品在线观看| 91网站最新网址| 国产一区二区三区| 日韩美女一区二区三区| 免费欧美在线视频| 欧美一区二区视频在线观看| 午夜精品爽啪视频| 日韩精品一区在线观看| 麻豆国产欧美日韩综合精品二区| 日韩精品中文字幕一区二区三区| 午夜电影久久久| 欧美www视频| 国产成人av电影在线播放| 中文字幕亚洲欧美在线不卡| 色综合色狠狠综合色| 亚洲乱码国产乱码精品精小说 | 欧美国产激情一区二区三区蜜月| 亚洲一区二区在线视频| 欧美日本一区二区| 亚洲欧美电影院| 久久国产精品一区二区| 欧美性生活大片视频| 免费观看在线综合| 国产欧美日韩在线| 777奇米成人网| 99视频超级精品| 久久99精品久久久久久国产越南| 中文字幕亚洲视频| 精品黑人一区二区三区久久| 色婷婷国产精品| 激情伊人五月天久久综合| 最新高清无码专区| 国产午夜精品一区二区| 日韩久久久久久| 欧美日韩亚洲综合在线| 91麻豆自制传媒国产之光| 国产真实乱偷精品视频免| 人人超碰91尤物精品国产| 亚洲男人天堂av网| 一区二区三区在线观看视频| 国产欧美一区二区精品久导航| 欧美一区2区视频在线观看| 色伊人久久综合中文字幕| 国产精品小仙女| 肉肉av福利一精品导航| 一区二区三区在线视频观看58| 国产女主播一区| 337p粉嫩大胆色噜噜噜噜亚洲| 波多野结衣的一区二区三区| 久久91精品国产91久久小草| 中文字幕不卡一区| 久久久av毛片精品| 久久久午夜精品| 久久久99免费| 久久精品亚洲一区二区三区浴池| 欧美一区二区三区公司| 欧美精品日日鲁夜夜添| 91小视频免费观看| 在线看国产一区二区| 在线一区二区三区| 欧美日韩免费一区二区三区视频| 国产91露脸合集magnet | 岛国精品在线观看| 粉嫩av亚洲一区二区图片| 成人精品亚洲人成在线| 91麻豆成人久久精品二区三区| av综合在线播放| 欧美天堂一区二区三区| 91麻豆精品国产91久久久| 欧美成人三级电影在线| 久久久精品蜜桃| 樱花草国产18久久久久| 免费观看成人av| 成人综合在线观看| 91精品欧美福利在线观看| 精品久久人人做人人爽| 自拍偷拍国产精品| 日本一不卡视频| jvid福利写真一区二区三区| 欧美久久一二三四区| 成人免费一区二区三区视频 | www.激情成人| 欧美成人三级在线| 亚洲精品视频一区| 国产乱码精品一区二区三区av| 在线观看中文字幕不卡| 久久久无码精品亚洲日韩按摩| 亚洲第一在线综合网站| 国产69精品久久777的优势| 欧美日韩一区三区四区| 亚洲欧美在线高清| 蜜桃视频一区二区| 99久久综合精品| 亚洲国产精品二十页| 精品一区二区国语对白| 欧亚洲嫩模精品一区三区| 综合色中文字幕| 波多野结衣在线aⅴ中文字幕不卡| 日韩一区二区三区免费看| 亚洲午夜电影在线观看| 欧美怡红院视频| 亚洲免费av高清| 欧美在线观看一区| 偷拍日韩校园综合在线| 日韩免费高清av| 国产主播一区二区三区| 久久久久久毛片| 日本不卡123| 久久精品欧美一区二区三区不卡| 麻豆国产欧美日韩综合精品二区 | 日韩午夜在线影院| 亚洲一区二区三区四区在线免费观看| 99精品视频一区| 日韩一区二区视频| 亚洲精品在线免费播放| 亚洲精品国产a| 欧美日韩国产首页在线观看| 午夜一区二区三区视频| 日韩一区二区在线看| 国内精品国产成人国产三级粉色| 久久一区二区三区四区| 97aⅴ精品视频一二三区| 国产91在线|亚洲| 亚洲精品视频在线观看免费| 欧美精品三级日韩久久| 国产精品一区二区91| 亚洲午夜一二三区视频| 久久蜜桃香蕉精品一区二区三区| 色婷婷国产精品| 亚洲精品国产一区二区精华液| www.日韩大片| 成人黄色电影在线| 日韩av一级电影| 一区二区视频在线| 国产欧美日韩不卡免费| 欧美精品乱码久久久久久| 波多野结衣精品在线| 久久91精品国产91久久小草| 午夜成人在线视频| 亚洲福利视频导航| 亚洲欧美日韩久久精品| 国产精品久久久久永久免费观看| 精品久久久久久久久久久久包黑料| 欧美在线播放高清精品| av电影天堂一区二区在线观看| 国精产品一区一区三区mba桃花| 天天色天天操综合| 首页欧美精品中文字幕| 亚洲观看高清完整版在线观看 | 欧美成人艳星乳罩| 精品国产乱码久久久久久老虎| 91精品国产乱码久久蜜臀| 欧美一区二区成人| 欧美成人一区二区三区| 99精品在线观看视频| 色婷婷狠狠综合| 欧美日韩国产乱码电影| 日韩免费成人网| 欧美激情一区在线观看| 亚洲女同女同女同女同女同69| 亚洲综合视频网| 久久99久国产精品黄毛片色诱| 国产九九视频一区二区三区|