From eeebf685e06658ba2ff11b00cfa55865ed046221 Mon Sep 17 00:00:00 2001 From: "igor%mir2.org" Date: Sun, 14 Apr 2002 21:29:35 +0000 Subject: [PATCH] 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 --- .../org/mozilla/javascript/VariableTable.java | 30 +++++++++---------- .../optimizer/OptVariableTable.java | 13 ++++---- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/mozilla/js/rhino/src/org/mozilla/javascript/VariableTable.java b/mozilla/js/rhino/src/org/mozilla/javascript/VariableTable.java index a9587b64ed1..b9b7e5e76ed 100644 --- a/mozilla/js/rhino/src/org/mozilla/javascript/VariableTable.java +++ b/mozilla/js/rhino/src/org/mozilla/javascript/VariableTable.java @@ -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 } diff --git a/mozilla/js/rhino/src/org/mozilla/javascript/optimizer/OptVariableTable.java b/mozilla/js/rhino/src/org/mozilla/javascript/optimizer/OptVariableTable.java index 8dc361c9bf7..cde3158717a 100644 --- a/mozilla/js/rhino/src/org/mozilla/javascript/optimizer/OptVariableTable.java +++ b/mozilla/js/rhino/src/org/mozilla/javascript/optimizer/OptVariableTable.java @@ -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 }