diff options
Diffstat (limited to 'src/org/jetbrains/java/decompiler/modules/decompiler/stats/BasicBlockStatement.java')
-rw-r--r-- | src/org/jetbrains/java/decompiler/modules/decompiler/stats/BasicBlockStatement.java | 157 |
1 files changed, 79 insertions, 78 deletions
diff --git a/src/org/jetbrains/java/decompiler/modules/decompiler/stats/BasicBlockStatement.java b/src/org/jetbrains/java/decompiler/modules/decompiler/stats/BasicBlockStatement.java index 5cfa634..ddac0c5 100644 --- a/src/org/jetbrains/java/decompiler/modules/decompiler/stats/BasicBlockStatement.java +++ b/src/org/jetbrains/java/decompiler/modules/decompiler/stats/BasicBlockStatement.java @@ -1,17 +1,18 @@ /* - * Fernflower - The Analytical Java Decompiler - * http://www.reversed-java.com + * Copyright 2000-2014 JetBrains s.r.o. * - * (C) 2008 - 2010, Stiver + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * - * This software is NEITHER public domain NOR free software - * as per GNU License. See license.txt for more details. + * http://www.apache.org/licenses/LICENSE-2.0 * - * This software is distributed WITHOUT ANY WARRANTY; without - * even the implied warranty of MERCHANTABILITY or FITNESS FOR - * A PARTICULAR PURPOSE. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ - package org.jetbrains.java.decompiler.modules.decompiler.stats; import org.jetbrains.java.decompiler.code.CodeConstants; @@ -23,73 +24,73 @@ import org.jetbrains.java.decompiler.main.collectors.CounterContainer; import org.jetbrains.java.decompiler.modules.decompiler.ExprProcessor; public class BasicBlockStatement extends Statement { - - // ***************************************************************************** - // private fields - // ***************************************************************************** - - private BasicBlock block; - - // ***************************************************************************** - // constructors - // ***************************************************************************** - - public BasicBlockStatement(BasicBlock block) { - - type = Statement.TYPE_BASICBLOCK; - - this.block = block; - - id = block.id; - CounterContainer coun = DecompilerContext.getCountercontainer(); - if(id>=coun.getCounter(CounterContainer.STATEMENT_COUNTER)) { - coun.setCounter(CounterContainer.STATEMENT_COUNTER, id+1); - } - - Instruction instr = block.getLastInstruction(); - if(instr != null) { - if(instr.group==CodeConstants.GROUP_JUMP && instr.opcode != CodeConstants.opc_goto) { - lastBasicType = LASTBASICTYPE_IF; - } else if(instr.group==CodeConstants.GROUP_SWITCH) { - lastBasicType = LASTBASICTYPE_SWITCH; - } - } - - // monitorenter and monitorexits - buildMonitorFlags(); - } - - // ***************************************************************************** - // public methods - // ***************************************************************************** - - public String toJava(int indent) { - return ExprProcessor.listToJava(varDefinitions, indent)+ - ExprProcessor.listToJava(exprents, indent); - } - - public Statement getSimpleCopy() { - - BasicBlock newblock = new BasicBlock( - DecompilerContext.getCountercontainer().getCounterAndIncrement(CounterContainer.STATEMENT_COUNTER)); - - SimpleInstructionSequence seq = new SimpleInstructionSequence(); - for(int i=0;i<block.getSeq().length();i++) { - seq.addInstruction(block.getSeq().getInstr(i).clone(), -1); - } - - newblock.setSeq(seq); - - return new BasicBlockStatement(newblock); - } - - - // ***************************************************************************** - // getter and setter methods - // ***************************************************************************** - - public BasicBlock getBlock() { - return block; - } - + + // ***************************************************************************** + // private fields + // ***************************************************************************** + + private BasicBlock block; + + // ***************************************************************************** + // constructors + // ***************************************************************************** + + public BasicBlockStatement(BasicBlock block) { + + type = Statement.TYPE_BASICBLOCK; + + this.block = block; + + id = block.id; + CounterContainer coun = DecompilerContext.getCountercontainer(); + if (id >= coun.getCounter(CounterContainer.STATEMENT_COUNTER)) { + coun.setCounter(CounterContainer.STATEMENT_COUNTER, id + 1); + } + + Instruction instr = block.getLastInstruction(); + if (instr != null) { + if (instr.group == CodeConstants.GROUP_JUMP && instr.opcode != CodeConstants.opc_goto) { + lastBasicType = LASTBASICTYPE_IF; + } + else if (instr.group == CodeConstants.GROUP_SWITCH) { + lastBasicType = LASTBASICTYPE_SWITCH; + } + } + + // monitorenter and monitorexits + buildMonitorFlags(); + } + + // ***************************************************************************** + // public methods + // ***************************************************************************** + + public String toJava(int indent) { + return ExprProcessor.listToJava(varDefinitions, indent) + + ExprProcessor.listToJava(exprents, indent); + } + + public Statement getSimpleCopy() { + + BasicBlock newblock = new BasicBlock( + DecompilerContext.getCountercontainer().getCounterAndIncrement(CounterContainer.STATEMENT_COUNTER)); + + SimpleInstructionSequence seq = new SimpleInstructionSequence(); + for (int i = 0; i < block.getSeq().length(); i++) { + seq.addInstruction(block.getSeq().getInstr(i).clone(), -1); + } + + newblock.setSeq(seq); + + return new BasicBlockStatement(newblock); + } + + + // ***************************************************************************** + // getter and setter methods + // ***************************************************************************** + + public BasicBlock getBlock() { + return block; + } } |