本文整理了Java中soot.options.Options.keep_line_number()
方法的一些代码示例,展示了Options.keep_line_number()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Options.keep_line_number()
方法的具体详情如下:
包路径:soot.options.Options
类名称:Options
方法名:keep_line_number
暂无
代码示例来源:origin: Sable/soot
private void adjustLineNumberTable() {
if (!Options.v().keep_line_number()) {
return;
}
if (method.code_attr == null) {
return;
}
attribute_info[] attributes = method.code_attr.attributes;
for (attribute_info element : attributes) {
if (element instanceof LineNumberTable_attribute) {
LineNumberTable_attribute lntattr = (LineNumberTable_attribute) element;
for (line_number_table_entry element0 : lntattr.line_number_table) {
Instruction oldinst = element0.start_inst;
Instruction newinst = replacedInsns.get(oldinst);
if (newinst != null) {
element0.start_inst = newinst;
}
}
}
}
}
代码示例来源:origin: Sable/soot
public static void addLnPosTags(soot.tagkit.Host host, int sline, int eline, int spos, int epos) {
if (soot.options.Options.v().keep_line_number()) {
host.addTag(new soot.tagkit.SourceLnPosTag(sline, eline, spos, epos));
}
}
代码示例来源:origin: Sable/soot
public static void addMethodLineTag(soot.tagkit.Host host, int sline, int eline) {
if (soot.options.Options.v().keep_line_number()) {
host.addTag(new soot.tagkit.SourceLineNumberTag(sline, eline));
}
}
代码示例来源:origin: Sable/soot
void setUnit(AbstractInsnNode insn, Unit u) {
if (Options.v().keep_line_number() && lastLineNumber >= 0) {
Tag lineTag = u.getTag("LineNumberTag");
if (lineTag == null) {
lineTag = new LineNumberTag(lastLineNumber);
u.addTag(lineTag);
} else if (((LineNumberTag) lineTag).getLineNumber() != lastLineNumber) {
throw new RuntimeException("Line tag mismatch");
}
}
Unit o = units.put(insn, u);
if (o != null) {
throw new AssertionError(insn.getOpcode() + " already has a unit, " + o);
}
}
代码示例来源:origin: Sable/soot
if (Options.v().keep_line_number()) {
HashMap<Stmt, Tag> stmtstags = new HashMap<Stmt, Tag>();
LinkedList<Stmt> startstmts = new LinkedList<Stmt>();
代码示例来源:origin: Sable/soot
/**
* Line Tag Adder
*/
public static void addLineTag(soot.tagkit.Host host, polyglot.ast.Node node) {
if (soot.options.Options.v().keep_line_number()) {
if (node.position() != null) {
host.addTag(new soot.tagkit.SourceLineNumberTag(node.position().line(), node.position().line()));
}
}
}
代码示例来源:origin: Sable/soot
/**
* Tag the passed host with: - this instructions line number (if one is set) - the original bytecode offset
*
* @param host
* the host to tag
*/
protected void addTags(Host host) {
Options options = Options.v();
if (options.keep_line_number() && lineNumber != -1) {
host.addTag(new LineNumberTag(lineNumber));
host.addTag(new SourceLineNumberTag(lineNumber));
}
if (options.keep_offset()) {
host.addTag(new BytecodeOffsetTag(codeAddress));
}
}
代码示例来源:origin: Sable/soot
public static void addLnPosTags(soot.tagkit.Host host, polyglot.util.Position pos) {
if (pos != null) {
if (soot.options.Options.v().keep_line_number()) {
if (pos.file() != null) {
host.addTag(
new soot.tagkit.SourceLnNamePosTag(pos.file(), pos.line(), pos.endLine(), pos.column(), pos.endColumn()));
} else {
host.addTag(new soot.tagkit.SourceLnPosTag(pos.line(), pos.endLine(), pos.column(), pos.endColumn()));
}
}
}
}
代码示例来源:origin: Sable/soot
private void runPacksNormally() {
if (Options.v().src_prec() == Options.src_prec_class && Options.v().keep_line_number()) {
LineNumberAdder lineNumAdder = LineNumberAdder.v();
lineNumAdder.internalTransform("", null);
代码示例来源:origin: Sable/soot
private void runPacksForOneClassAtATime() {
if (Options.v().src_prec() == Options.src_prec_class && Options.v().keep_line_number()) {
LineNumberAdder lineNumAdder = LineNumberAdder.v();
lineNumAdder.internalTransform("", null);
代码示例来源:origin: Sable/soot
if (options.keep_line_number()) {
fixLineNumbers();
代码示例来源:origin: ibinti/bugvm
private void adjustLineNumberTable()
{
if (!Options.v().keep_line_number())
return;
if (method.code_attr == null)
return;
attribute_info[] attributes = method.code_attr.attributes;
for (attribute_info element : attributes) {
if (element instanceof LineNumberTable_attribute)
{
LineNumberTable_attribute lntattr =
(LineNumberTable_attribute)element;
for (line_number_table_entry element0 : lntattr.line_number_table) {
Instruction oldinst =
element0.start_inst;
Instruction newinst =
replacedInsns.get(oldinst);
if (newinst != null)
element0.start_inst = newinst;
}
}
}
}
代码示例来源:origin: com.bugvm/bugvm-soot
private void adjustLineNumberTable()
{
if (!Options.v().keep_line_number())
return;
if (method.code_attr == null)
return;
attribute_info[] attributes = method.code_attr.attributes;
for (attribute_info element : attributes) {
if (element instanceof LineNumberTable_attribute)
{
LineNumberTable_attribute lntattr =
(LineNumberTable_attribute)element;
for (line_number_table_entry element0 : lntattr.line_number_table) {
Instruction oldinst =
element0.start_inst;
Instruction newinst =
replacedInsns.get(oldinst);
if (newinst != null)
element0.start_inst = newinst;
}
}
}
}
代码示例来源:origin: ibinti/bugvm
if (Options.v().keep_line_number())
代码示例来源:origin: com.bugvm/bugvm-soot
if (Options.v().keep_line_number())
代码示例来源:origin: com.bugvm/bugvm-soot
public void runPacks() {
if (Options.v().src_prec() == Options.src_prec_class && Options.v().keep_line_number()){
LineNumberAdder lineNumAdder = LineNumberAdder.v();
lineNumAdder.internalTransform("", null);
}
retrieveAllBodies();
if (Options.v().interactive_mode()){
if (InteractionHandler.v().getInteractionListener() == null){
G.v().out.println("Cannot run in interactive mode. No listeners available. Continuing in regular mode.");
Options.v().set_interactive_mode(false);
}
else {
G.v().out.println("Running in interactive mode.");
}
}
runBodyPacks();
handleInnerClasses();
}
代码示例来源:origin: ibinti/bugvm
public void runPacks() {
if (Options.v().src_prec() == Options.src_prec_class && Options.v().keep_line_number()){
LineNumberAdder lineNumAdder = LineNumberAdder.v();
lineNumAdder.internalTransform("", null);
}
retrieveAllBodies();
if (Options.v().interactive_mode()){
if (InteractionHandler.v().getInteractionListener() == null){
G.v().out.println("Cannot run in interactive mode. No listeners available. Continuing in regular mode.");
Options.v().set_interactive_mode(false);
}
else {
G.v().out.println("Running in interactive mode.");
}
}
runBodyPacks();
handleInnerClasses();
}
内容来源于网络,如有侵权,请联系作者删除!