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

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

?? analysis.java

?? asm的源碼包 并且包含英文的文檔
?? JAVA
字號(hào):
/***
 * ASM examples: examples showing how ASM can be used
 * Copyright (c) 2000-2005 INRIA, France Telecom
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the copyright holders nor the names of its
 *    contributors may be used to endorse or promote products derived from
 *    this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 * THE POSSIBILITY OF SUCH DAMAGE.
 */
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.objectweb.asm.ClassReader;
import org.objectweb.asm.Opcodes;
import org.objectweb.asm.tree.AbstractInsnNode;
import org.objectweb.asm.tree.ClassNode;
import org.objectweb.asm.tree.IincInsnNode;
import org.objectweb.asm.tree.MethodNode;
import org.objectweb.asm.tree.VarInsnNode;
import org.objectweb.asm.tree.analysis.Analyzer;
import org.objectweb.asm.tree.analysis.BasicVerifier;
import org.objectweb.asm.tree.analysis.SourceInterpreter;
import org.objectweb.asm.tree.analysis.SourceValue;
import org.objectweb.asm.tree.analysis.Frame;
import org.objectweb.asm.util.TraceMethodVisitor;

/**
 * @author Eric Bruneton
 */
public class Analysis implements Opcodes {

    public static void main(final String[] args) throws Exception {
        ClassReader cr = new ClassReader("Analysis");
        ClassNode cn = new ClassNode();
        cr.accept(cn, ClassReader.SKIP_DEBUG);

        List methods = cn.methods;
        for (int i = 0; i < methods.size(); ++i) {
            MethodNode method = (MethodNode) methods.get(i);
            if (method.instructions.size() > 0) {
                if (!analyze(cn, method)) {
                    Analyzer a = new Analyzer(new BasicVerifier());
                    try {
                        a.analyze(cn.name, method);
                    } catch (Exception ignored) {
                    }
                    final Frame[] frames = a.getFrames();

                    TraceMethodVisitor mv = new TraceMethodVisitor() {
                        public void visitMaxs(
                            final int maxStack,
                            final int maxLocals)
                        {
                            for (int i = 0; i < text.size(); ++i) {
                                String s = frames[i] == null
                                        ? "null"
                                        : frames[i].toString();
                                while (s.length() < Math.max(20, maxStack
                                        + maxLocals + 1))
                                {
                                    s += " ";
                                }
                                System.err.print(Integer.toString(i + 1000)
                                        .substring(1)
                                        + " " + s + " : " + text.get(i));
                            }
                            System.err.println();
                        }
                    };
                    for (int j = 0; j < method.instructions.size(); ++j) {
                        Object insn = method.instructions.get(j);
                        ((AbstractInsnNode) insn).accept(mv);
                    }
                    mv.visitMaxs(0, 0);
                }
            }
        }
    }

    /*
     * Detects unused xSTORE instructions, i.e. xSTORE instructions without at
     * least one xLOAD corresponding instruction in their successor instructions
     * (in the control flow graph).
     */
    public static boolean analyze(final ClassNode c, final MethodNode m)
            throws Exception
    {
        Analyzer a = new Analyzer(new SourceInterpreter());
        Frame[] frames = a.analyze(c.name, m);

        // for each xLOAD instruction, we find the xSTORE instructions that can
        // produce the value loaded by this instruction, and we put them in
        // 'stores'
        Set stores = new HashSet();
        for (int i = 0; i < m.instructions.size(); ++i) {
            Object insn = m.instructions.get(i);
            int opcode = ((AbstractInsnNode) insn).getOpcode();
            if ((opcode >= ILOAD && opcode <= ALOAD) || opcode == IINC) {
                int var = opcode == IINC
                        ? ((IincInsnNode) insn).var
                        : ((VarInsnNode) insn).var;
                Frame f = frames[i];
                if (f != null) {
                    Set s = ((SourceValue) f.getLocal(var)).insns;
                    Iterator j = s.iterator();
                    while (j.hasNext()) {
                        insn = j.next();
                        if (insn instanceof VarInsnNode) {
                            stores.add(insn);
                        }
                    }
                }
            }
        }

        // we then find all the xSTORE instructions that are not in 'stores'
        boolean ok = true;
        for (int i = 0; i < m.instructions.size(); ++i) {
            Object insn = m.instructions.get(i);
            if (insn instanceof AbstractInsnNode) {
                int opcode = ((AbstractInsnNode) insn).getOpcode();
                if (opcode >= ISTORE && opcode <= ASTORE) {
                    if (!stores.contains(insn)) {
                        ok = false;
                        System.err.println("method " + m.name
                                + ", instruction " + i
                                + ": useless store instruction");
                    }
                }
            }
        }
        return ok;
    }

    /*
     * Test for the above method, with three useless xSTORE instructions.
     */
    public int test(int i, int j) {
        i = i + 1; // ok, because i can be read after this point

        if (j == 0) {
            j = 1; // useless
        } else {
            try {
                j = j - 1; // ok, because j can be accessed in the catch
                int k = 0;
                if (i > 0) {
                    k = i - 1;
                }
                return k;
            } catch (Exception e) { // useless ASTORE (e is never used)
                j = j + 1; // useless
            }
        }

        return 0;
    }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人涩涩免费视频| 午夜精品福利在线| 成人高清免费观看| 久久久www成人免费无遮挡大片| 久久99精品国产麻豆不卡| 久久综合色之久久综合| 国产一区二区毛片| 中文欧美字幕免费| 色国产综合视频| 天天影视网天天综合色在线播放 | 亚洲男人天堂av| 欧美专区亚洲专区| 美国毛片一区二区三区| 久久久另类综合| 色综合久久综合网欧美综合网| 亚洲蜜桃精久久久久久久| 在线观看不卡视频| 另类小说欧美激情| 国产精品久久久久婷婷| 一本在线高清不卡dvd| 婷婷久久综合九色综合伊人色| 日韩欧美第一区| 成人黄页在线观看| 亚洲国产成人tv| 久久久久高清精品| av在线播放一区二区三区| 欧美丝袜丝交足nylons图片| 久久这里只有精品视频网| 国内精品伊人久久久久av影院 | 亚洲欧洲一区二区在线播放| 欧美性淫爽ww久久久久无| 蜜桃在线一区二区三区| 综合色中文字幕| 日韩精品在线一区| 色老综合老女人久久久| 精品伊人久久久久7777人| 亚洲同性gay激情无套| 欧美电影免费观看高清完整版在| 99久久夜色精品国产网站| 日本成人中文字幕| 综合久久国产九一剧情麻豆| 欧美成人video| 在线精品视频免费观看| 国产综合一区二区| 一区二区欧美在线观看| 中文字幕不卡三区| 欧美色窝79yyyycom| 成人免费黄色大片| 视频一区国产视频| 亚洲九九爱视频| 精品国产青草久久久久福利| 欧美视频一区二区三区四区| 国产一区美女在线| 日韩有码一区二区三区| 日本一区二区三区dvd视频在线| 欧美日韩一级片网站| 成人app网站| 国产精品一区久久久久| 亚洲国产精品影院| 亚洲人成亚洲人成在线观看图片| 日韩精品一区二区三区四区 | 久久久久国产精品免费免费搜索| 91免费观看国产| 大胆欧美人体老妇| 免费看欧美女人艹b| 亚洲.国产.中文慕字在线| 国产精品短视频| 精品国产乱码久久久久久蜜臀 | 奇米精品一区二区三区在线观看一 | 性久久久久久久久久久久| 91精品国产一区二区三区| 色婷婷综合久久久中文字幕| 激情综合网最新| 亚洲成av人片| 午夜精品久久久久久久| 久久九九99视频| 久久久久久久久久久久久久久99| 51午夜精品国产| 欧美一级国产精品| 欧美手机在线视频| 欧美日韩成人一区| 欧美午夜宅男影院| 欧美日韩国产乱码电影| 色视频一区二区| 精品视频免费在线| 欧日韩精品视频| 777亚洲妇女| 在线观看日韩av先锋影音电影院| 欧美性极品少妇| 欧美又粗又大又爽| 制服.丝袜.亚洲.另类.中文| 欧美夫妻性生活| 日韩一级片网站| 精品国产百合女同互慰| 日韩精品一区二区三区视频播放| 91精品一区二区三区久久久久久 | 成人一区二区三区视频在线观看| 国模冰冰炮一区二区| 精品一区二区精品| 国产在线国偷精品产拍免费yy| 免费精品99久久国产综合精品| 日韩国产精品久久久久久亚洲| 亚洲综合色在线| 五月天一区二区三区| 久久91精品国产91久久小草| 国产在线一区二区| 91女神在线视频| 欧美图片一区二区三区| 日韩一区二区免费高清| 久久久噜噜噜久噜久久综合| 亚洲人成在线播放网站岛国| 亚洲免费色视频| 五月婷婷色综合| 狠狠狠色丁香婷婷综合激情| 国产在线精品一区二区不卡了 | 欧美va天堂va视频va在线| 日韩精品一区二区三区swag| 中文幕一区二区三区久久蜜桃| 亚洲自拍偷拍图区| 看电视剧不卡顿的网站| 裸体一区二区三区| 成人三级伦理片| 欧美日韩国产一级| 久久综合狠狠综合久久激情| 亚洲色图另类专区| 日韩高清电影一区| 国产99久久久久久免费看农村| 色婷婷综合久久久中文一区二区 | 国产精品久久久久久久裸模 | 欧美精品成人一区二区三区四区| 日韩三级在线观看| 亚洲丝袜制服诱惑| 免费精品视频最新在线| 色婷婷综合久久久| 精品日产卡一卡二卡麻豆| 一区二区三区四区精品在线视频| 青草av.久久免费一区| 不卡高清视频专区| 欧美一级片在线| 亚洲国产一区二区在线播放| 精品一区二区在线视频| 欧美日韩免费一区二区三区视频| 精品福利二区三区| 舔着乳尖日韩一区| 97精品国产露脸对白| 久久久亚洲欧洲日产国码αv| 亚洲国产裸拍裸体视频在线观看乱了 | 丝袜亚洲精品中文字幕一区| 成人爽a毛片一区二区免费| 在线观看精品一区| 国产精品国产精品国产专区不蜜 | 亚洲香肠在线观看| 成人精品视频一区| 久久综合网色—综合色88| 亚洲va欧美va人人爽| 色婷婷亚洲综合| 中文字幕乱码一区二区免费| 狠狠色综合色综合网络| 欧美日韩一区二区三区四区五区 | 九一久久久久久| 在线免费观看成人短视频| 亚洲欧洲国产专区| 高清在线观看日韩| 欧美xxxxx牲另类人与| 午夜精品久久久久久久99水蜜桃| 在线观看视频一区| 中文字幕中文乱码欧美一区二区 | 日韩av电影一区| 欧美一区二区视频在线观看 | 在线视频观看一区| 国产女同互慰高潮91漫画| 视频一区视频二区在线观看| 欧洲国产伦久久久久久久| 中文字幕乱码一区二区免费| 国产在线看一区| 国产日韩欧美高清| 国产一区二区三区四区五区美女| 亚洲精品在线观看视频| 久久精品国产亚洲a| 久久精品人人做| 成人做爰69片免费看网站| 亚洲男人的天堂在线观看| 91麻豆精品一区二区三区| 亚洲成av人在线观看| 日韩欧美国产三级电影视频| 麻豆精品国产91久久久久久| 26uuu色噜噜精品一区二区| 久久激情五月激情| 国产女同互慰高潮91漫画| 丁香六月综合激情| 一区二区在线观看视频| 在线日韩国产精品| 久久99国产精品成人| 久久综合色8888| 91理论电影在线观看| 亚洲男人天堂一区| 91精品国产91热久久久做人人| 日韩精品电影在线观看| 久久久久久久国产精品影院| www.欧美.com|