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/02/10 07:13:02 UTC
svn commit: r153168 -
jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/LocalVariableTable.java
Author: dbrosius
Date: Wed Feb 9 22:13:01 2005
New Revision: 153168
URL: http://svn.apache.org/viewcvs?view=rev&rev=153168
Log:
Apply Patch 32077: add a getLocalVariable that takes the current pc, and deprecate the old one that is inprecise.
Modified:
jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/LocalVariableTable.java
Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/LocalVariableTable.java
URL: http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/LocalVariableTable.java?view=diff&r1=153167&r2=153168
==============================================================================
--- jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/LocalVariableTable.java (original)
+++ jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/LocalVariableTable.java Wed Feb 9 22:13:01 2005
@@ -108,7 +108,15 @@
return local_variable_table;
}
- /** @return first matching variable using index
+ /**
+ * @return first matching variable using index
+ *
+ * @param index the variable slot
+ *
+ * @returns the first LocalVariable that matches the slot or null if not found
+ *
+ * @deprecated since 5.2 because multiple variables can share the
+ * same slot, use getLocalVariable(int index, int pc) instead.
*/
public final LocalVariable getLocalVariable(int index) {
for(int i=0; i < local_variable_table_length; i++)
@@ -118,6 +126,26 @@
return null;
}
+ /**
+ * @return matching variable using index when variable is used at supplied pc
+ *
+ * @param index the variable slot
+ * @param pc the current pc that this variable is alive
+ *
+ * @returns the LocalVariable that matches or null if not found
+ */
+ public final LocalVariable getLocalVariable(int index, int pc) {
+ for(int i=0; i < local_variable_table_length; i++)
+ if(local_variable_table[i].getIndex() == index) {
+ int start_pc = local_variable_table[i].getStartPC();
+ int end_pc = start_pc + local_variable_table[i].getLength();
+ if ((pc >= start_pc) && (pc < end_pc))
+ return local_variable_table[i];
+ }
+
+ return null;
+ }
+
public final void setLocalVariableTable(LocalVariable[] local_variable_table)
{
this.local_variable_table = local_variable_table;
---------------------------------------------------------------------
To unsubscribe, e-mail: bcel-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: bcel-dev-help@jakarta.apache.org