You are viewing a plain text version of this content. The canonical link for it is here.
Posted to bcel-dev@jakarta.apache.org by db...@apache.org on 2005/11/29 04:59:07 UTC
svn commit: r349608 -
/jakarta/bcel/trunk/src/java/org/apache/bcel/verifier/structurals/Subroutines.java
Author: dbrosius
Date: Mon Nov 28 19:58:56 2005
New Revision: 349608
URL: http://svn.apache.org/viewcvs?rev=349608&view=rev
Log:
replace awt.Color with simple int constants, to remove a dependency on awt for the verifier.
Modified:
jakarta/bcel/trunk/src/java/org/apache/bcel/verifier/structurals/Subroutines.java
Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/verifier/structurals/Subroutines.java
URL: http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/verifier/structurals/Subroutines.java?rev=349608&r1=349607&r2=349608&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/java/org/apache/bcel/verifier/structurals/Subroutines.java (original)
+++ jakarta/bcel/trunk/src/java/org/apache/bcel/verifier/structurals/Subroutines.java Mon Nov 28 19:58:56 2005
@@ -16,8 +16,6 @@
*/
package org.apache.bcel.verifier.structurals;
-
-import java.awt.Color;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Hashtable;
@@ -341,6 +339,11 @@
}// end Inner Class SubrouteImpl
+ //Node coloring constants
+ private static final Integer WHITE = new Integer(0);
+ private static final Integer GRAY = new Integer(1);
+ private static final Integer BLACK = new Integer(2);
+
/**
* The Hashtable containing the subroutines found.
* Key: InstructionHandle of the leader of the subroutine.
@@ -408,7 +411,7 @@
// instructions that belong to a subroutine.
Set instructions_assigned = new HashSet(); // we don't want to assign an instruction to two or more Subroutine objects.
- Hashtable colors = new Hashtable(); //Graph colouring. Key: InstructionHandle, Value: java.awt.Color .
+ Hashtable colors = new Hashtable(); //Graph colouring. Key: InstructionHandle, Value: Integer .
iter = sub_leaders.iterator();
while (iter.hasNext()){
@@ -416,9 +419,9 @@
InstructionHandle actual = (InstructionHandle) (iter.next());
// Init colors
for (int i=0; i<all.length; i++){
- colors.put(all[i], Color.white);
+ colors.put(all[i], WHITE);
}
- colors.put(actual, Color.gray);
+ colors.put(actual, GRAY);
// Init Queue
ArrayList Q = new ArrayList();
Q.add(actual); // add(Obj) adds to the end, remove(0) removes from the start.
@@ -426,7 +429,7 @@
/* BFS ALGORITHM MODIFICATION: Start out with multiple "root" nodes, as exception handlers are starting points of top-level code, too. [why top-level? TODO: Refer to the special JustIce notion of subroutines.]*/
if (actual == all[0]){
for (int j=0; j<handlers.length; j++){
- colors.put(handlers[j].getHandlerPC(), Color.gray);
+ colors.put(handlers[j].getHandlerPC(), GRAY);
Q.add(handlers[j].getHandlerPC());
}
}
@@ -437,16 +440,16 @@
InstructionHandle u = (InstructionHandle) Q.remove(0);
InstructionHandle[] successors = getSuccessors(u);
for (int i=0; i<successors.length; i++){
- if (((Color) colors.get(successors[i])) == Color.white){
- colors.put(successors[i], Color.gray);
+ if (((Integer) colors.get(successors[i])) == WHITE){
+ colors.put(successors[i], GRAY);
Q.add(successors[i]);
}
}
- colors.put(u, Color.black);
+ colors.put(u, BLACK);
}
// BFS ended above.
for (int i=0; i<all.length; i++){
- if (colors.get(all[i]) == Color.black){
+ if (colors.get(all[i]) == BLACK){
((SubroutineImpl) (actual==all[0]?getTopLevel():getSubroutine(actual))).addInstruction(all[i]);
if (instructions_assigned.contains(all[i])){
throw new StructuralCodeConstraintException("Instruction '"+all[i]+"' is part of more than one subroutine (or of the top level and a subroutine).");
---------------------------------------------------------------------
To unsubscribe, e-mail: bcel-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: bcel-dev-help@jakarta.apache.org