Make all fields in VariableTable private and use access API to get them in optimizer/OptVariableTable to allow to change VariableTable implementation without changing its usage
git-svn-id: svn://10.0.0.236/trunk@118959 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
806c98ca85
commit
eeebf685e0
@ -58,6 +58,10 @@ public class VariableTable {
|
||||
return (LocalVariable)(itsVariables.elementAt(index));
|
||||
}
|
||||
|
||||
public boolean hasVariable(String name) {
|
||||
return itsVariableNames.has(name);
|
||||
}
|
||||
|
||||
public LocalVariable getVariable(String name) {
|
||||
int vIndex = itsVariableNames.get(name, -1);
|
||||
if (vIndex != -1)
|
||||
@ -71,7 +75,7 @@ public class VariableTable {
|
||||
}
|
||||
|
||||
public String getName(int index) {
|
||||
return ((LocalVariable)(itsVariables.elementAt(index))).getName();
|
||||
return getVariable(index).getName();
|
||||
}
|
||||
|
||||
public String[] getAllNames() {
|
||||
@ -94,21 +98,17 @@ public class VariableTable {
|
||||
}
|
||||
|
||||
public void addParameter(String pName) {
|
||||
// Check addParameter is not called after addLocal
|
||||
if (varStart != itsVariables.size()) Context.codeBug();
|
||||
int pIndex = itsVariableNames.get(pName, -1);
|
||||
if (pIndex != -1) {
|
||||
LocalVariable p = (LocalVariable)(itsVariables.elementAt(pIndex));
|
||||
if (p.isParameter()) {
|
||||
String message = Context.getMessage1("msg.dup.parms", pName);
|
||||
Context.reportWarning(message, null, 0, null, 0);
|
||||
}
|
||||
else { // there's a local variable with this name, blow it off
|
||||
itsVariables.removeElementAt(pIndex);
|
||||
}
|
||||
if (itsVariableNames.has(pName)) {
|
||||
String message = Context.getMessage1("msg.dup.parms", pName);
|
||||
Context.reportWarning(message, null, 0, null, 0);
|
||||
}
|
||||
int curIndex = varStart++;
|
||||
int index = varStart++;
|
||||
LocalVariable lVar = createLocalVariable(pName, true);
|
||||
itsVariables.insertElementAt(lVar, curIndex);
|
||||
itsVariableNames.put(pName, curIndex);
|
||||
itsVariables.addElement(lVar);
|
||||
itsVariableNames.put(pName, index);
|
||||
}
|
||||
|
||||
public void addLocal(String vName) {
|
||||
@ -140,11 +140,11 @@ public class VariableTable {
|
||||
}
|
||||
|
||||
// a list of the formal parameters and local variables
|
||||
protected Vector itsVariables = new Vector();
|
||||
private Vector itsVariables = new Vector();
|
||||
|
||||
// mapping from name to index in list
|
||||
private ObjToIntMap itsVariableNames = new ObjToIntMap(11);
|
||||
|
||||
protected int varStart; // index in list of first variable
|
||||
private int varStart; // index in list of first variable
|
||||
|
||||
}
|
||||
|
||||
@ -44,9 +44,10 @@ public class OptVariableTable extends VariableTable {
|
||||
|
||||
public void print(PrintWriter pw)
|
||||
{
|
||||
System.out.println("Variable Table, size = " + itsVariables.size());
|
||||
for (int i = 0; i < itsVariables.size(); i++) {
|
||||
LocalVariable lVar = (LocalVariable)(itsVariables.elementAt(i));
|
||||
int N = size();
|
||||
System.out.println("Variable Table, size = " + N);
|
||||
for (int i = 0; i != N; i++) {
|
||||
OptLocalVariable lVar = (OptLocalVariable)(getVariable(i));
|
||||
pw.println(lVar.toString());
|
||||
}
|
||||
}
|
||||
@ -58,9 +59,9 @@ public class OptVariableTable extends VariableTable {
|
||||
// 2 is reserved for parentScope
|
||||
// 3 is reserved for script 'this'
|
||||
short jReg = 4;
|
||||
for (int i = 0; i < varStart; i++) {
|
||||
OptLocalVariable lVar = (OptLocalVariable)
|
||||
itsVariables.elementAt(i);
|
||||
int parameterCount = getParameterCount();
|
||||
for (int i = 0; i < parameterCount; i++) {
|
||||
OptLocalVariable lVar = (OptLocalVariable)getVariable(i);
|
||||
lVar.assignJRegister(jReg);
|
||||
jReg += 3; // 3 is 1 for Object parm and 2 for double parm
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user