Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
ge.htmlunit.htmlunit-core-js.2.28.source-code.rhinoDiff.txt Maven / Gradle / Ivy
Go to download
HtmlUnit adaptation of Mozilla Rhino Javascript engine for Java. Changes are documented by a diff (rhinoDiff.txt) contained in the generated jar files.
diff --git a/.gitignore b/.gitignore
index 2535ffc1..85038527 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,7 +14,9 @@ buildGradle
out/
target/
.gradle
-
+.classpath
+.project
+.settings/
*~
@@ -22,5 +24,6 @@ target/
.classpath
.project
test262
-bin/
-.settings/
+/bin/
+
+.settings/
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
index ea00e780..f630a3f7 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,7 +1,6 @@
language: java
-dist: trusty
jdk:
- - openjdk8
+ - openjdk7
# Took this stuff from the travis docs:
before_cache:
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
diff --git a/README.md b/README.md
index 2594ef39..0acee8a7 100644
--- a/README.md
+++ b/README.md
@@ -15,7 +15,6 @@ Rhino is licensed under the [MPL 2.0](./LICENSE.txt).
Rhino 1.7.6 April 15, 2015
Rhino 1.7.7 June 17, 2015
Rhino 1.7.7.1 February 2, 2016
-Rhino 1.7.7.2 August 24, 2017
[Release Notes](./RELEASE-NOTES.md) for recent releases.
@@ -39,20 +38,37 @@ More resources if you get stuck:
## Building
+### Status of "master" branch
+
+
+
### How to Build
Rhino builds with `Gradle`. Here are some useful tasks:
-```
-./gradlew jar
-```
+
+ ./gradlew jar
+
Build and create `Rhino` jar in the `build/libs` directory.
-```
-./gradlew test
-```
+
+ ./gradlew test
+
Build and run all the tests.
-```
-./gradlew testBenchmark
-```
+
+ ./gradlew testBenchmark
+
Build and run benchmark tests.
## Releasing and publishing new version
@@ -60,30 +76,30 @@ Build and run benchmark tests.
1. Ensure all tests are passing
2. Remove `-SNAPSHOT` from version in `gradle.properties` in project root folder
3. Create file `gradle.properties` in `$HOME/.gradle` folder with following properties. Populate them with maven repo credentials and repo location.
-```
+ ```
mavenUser=
mavenPassword=
mavenSnapshotRepo=
mavenReleaseRepo=
-```
+ ```
4. Run `Gradle` task to publish artifacts to Maven Central.
-```
+ ```
./gradlew publish
-```
+ ```
5. Increase version and add `-SNAPSHOT` to it in `gradle.properties` in project root folder.
6. Push `gradle.properties` to `GitHub`
## Running
Rhino can run as a stand-alone interpreter from the command line:
-```
-java -jar buildGradle/libs/rhino-1.7.7.2.jar
-Rhino 1.7.7.2 2017 08 24
-js> print('Hello, World!');
-Hello, World!
-js>
-```
+
+ java -jar buildGradle/libs/rhino-1.7.7.1.jar
+ Rhino 1.7.7 2015 05 03
+ js> print('Hello, World!');
+ Hello, World!
+ js>
+
You can also embed it, as most people do. See below for more docs.
## Issues
diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md
index 93564cee..f9c0fc40 100644
--- a/RELEASE-NOTES.md
+++ b/RELEASE-NOTES.md
@@ -1,30 +1,5 @@
-# Rhino 1.7.7.2
-## August 24, 2017
-
-This release contains fixes for a few important bugs that have caught Rhino users out in the
-field.
-
-* Do not throw a Java exception from array.prototype.sort() no matter how weird the user-supplied
-comparator function is. This is a major difference between JavaScript and Java and has caused
-us to avoid using "Arrays.sort" on JavaScript arrays.
-* Fix incorrect offsets in the "DataView" class.
-
-It also includes several other fixes:
-
-* Always append a column number to V8-style stack traces. (Unfortunately it is always "0".)
-* Support Object.is and Object.assign.
-* Make the Symbol implementation match the spec (for VERSION_ES6 and up only).
-* Avoid throwing internal Java exceptions for certain native objects in "toJSON".
-* Allow subclassing of ContinuationPending.
-* For VERSION_ES6 and up, sort properties in the spec-defined order (int property names
-first).
-* Fix stack overflow in string concatenation.
-* Improve performance of ConsString.toString
-
-The next release is likely to be 1.7.8.
-
# Rhino 1.7.7.1
-## February 2, 2016
+## February 1, 2016
This release fixes a few critical bugs that were affecting code in the field:
diff --git a/build.gradle b/build.gradle
index 3840c7e7..10e4046f 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,13 +1,11 @@
apply plugin: 'java'
apply plugin: 'idea'
-apply plugin: 'eclipse'
apply plugin: 'maven-publish'
apply plugin: 'jacoco'
apply plugin: 'distribution'
-apply plugin: 'checkstyle'
-sourceCompatibility = 1.8
-targetCompatibility = 1.8
+sourceCompatibility = 1.6
+targetCompatibility = 1.6
tasks.withType(JavaCompile) { options.encoding = "UTF-8" }
@@ -76,7 +74,7 @@ task sunSpiderBenchmark(type: JavaExec) {
classpath sourceSets.test.runtimeClasspath
}
-task v8Benchmark(type: Test) {
+task testBenchmark(type: Test) {
jacoco {
enabled = false
}
@@ -88,18 +86,16 @@ task v8Benchmark(type: Test) {
testLogging.showStandardStreams = true
forkEvery = 1
}
-
-task testBenchmark() {}
testBenchmark.dependsOn sunSpiderBenchmark
-testBenchmark.dependsOn v8Benchmark
task microBenchmark(type: JavaExec) {
main "com.google.caliper.runner.CaliperMain"
- args "-i", "runtime", "org.mozilla.javascript.benchmarks.CaliperObjectBenchmark.FieldAccess", "-DstringKeys=100,1000", "-DintKeys=100,1000"
+ args "-i", "runtime", "org.mozilla.javascript.benchmarks.CaliperObjectBenchmark.FieldAccess", "-DstringKeys=100,1000", "-DintKeys=0,10,1000"
classpath sourceSets.test.runtimeClasspath
}
+
idea {
module {
excludeDirs += file('testsrc/tests/src')
@@ -213,22 +209,15 @@ jacocoTestReport {
}
}
-checkstyle {
- configFile = file("${projectDir}/checkstyle.xml")
- sourceSets = [project.sourceSets.main]
-}
+
distributions {
main {
contents {
- from(sourceSets.main.java) {
+ from(sourceSets.main.allSource) {
exclude 'man'
into 'rhino' + project.version + '/src'
}
- from(sourceSets.main.resources) {
- exclude '**/*.java'
- into 'rhino' + project.version + '/src'
- }
from(javadoc.destinationDir) {
into 'rhino' + project.version + '/docs'
}
@@ -240,8 +229,7 @@ distributions {
into 'rhino' + project.version
}
from(file(".")) {
- include '*.txt', '*.md', 'build.gradle', 'build.properties', 'gradle.properties',
- 'gradle/**', 'gradlew'
+ include '*.txt'
into 'rhino' + project.version
}
into "/"
diff --git a/build.properties b/build.properties
index 1bdfc493..a22d698f 100644
--- a/build.properties
+++ b/build.properties
@@ -19,8 +19,8 @@ classes: ${build.dir}/classes
# compilation settings
debug: on
-target-jvm: 1.8
-source-level: 1.8
+target-jvm: 1.6
+source-level: 1.6
# jar generation settings
jar-compression: true
diff --git a/checkstyle.xml b/checkstyle.xml
deleted file mode 100644
index 4a751460..00000000
--- a/checkstyle.xml
+++ /dev/null
@@ -1,195 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/build.xml b/src/build.xml
index c4f7ee10..d04d7670 100644
--- a/src/build.xml
+++ b/src/build.xml
@@ -14,10 +14,8 @@ Requires Ant version 1.2
-
-
+
@@ -32,15 +30,13 @@ Requires Ant version 1.2
-
-
-
+ source="${source-level}" />
@@ -54,19 +50,6 @@ Requires Ant version 1.2
-
-
-
- typeHint) {
+ return "[object " + getClassName() + "]";
+ }
+
private static BaseFunction iteratorMethod = new BaseFunction() {
@Override
public Object call(Context cx, Scriptable scope, Scriptable thisObj,
diff --git a/src/org/mozilla/javascript/BaseFunction.java b/src/org/mozilla/javascript/BaseFunction.java
index 3c795b7e..221e79aa 100644
--- a/src/org/mozilla/javascript/BaseFunction.java
+++ b/src/org/mozilla/javascript/BaseFunction.java
@@ -48,7 +48,7 @@ public class BaseFunction extends IdScriptableObject implements Function
@Override
public String getTypeOf()
{
- return avoidObjectDetection() ? "undefined" : "function";
+ return avoidObjectDetection() ? "undefined" : "function";
}
/**
@@ -419,13 +419,11 @@ public class BaseFunction extends IdScriptableObject implements Function
if (!justbody) {
sb.append("function ");
sb.append(getFunctionName());
- sb.append("() {\n\t");
+ sb.append("() {\n ");
}
- sb.append("[native code, arity=");
- sb.append(getArity());
- sb.append("]\n");
+ sb.append("[native code]\n");
if (!justbody) {
- sb.append("}\n");
+ sb.append("}");
}
return sb.toString();
}
diff --git a/src/org/mozilla/javascript/CodeGenerator.java b/src/org/mozilla/javascript/CodeGenerator.java
index 3970901e..f8e01d58 100644
--- a/src/org/mozilla/javascript/CodeGenerator.java
+++ b/src/org/mozilla/javascript/CodeGenerator.java
@@ -6,9 +6,13 @@
package org.mozilla.javascript;
-import org.mozilla.javascript.ast.ScriptNode;
-import org.mozilla.javascript.ast.Jump;
+import org.mozilla.javascript.ast.AstNode;
+import org.mozilla.javascript.ast.FunctionCall;
import org.mozilla.javascript.ast.FunctionNode;
+import org.mozilla.javascript.ast.Jump;
+import org.mozilla.javascript.ast.ScriptNode;
+import org.mozilla.javascript.ast.UnaryExpression;
+import org.mozilla.javascript.ast.VariableInitializer;
/**
* Generates bytecode for the Interpreter.
@@ -104,6 +108,8 @@ class CodeGenerator extends Icode {
itsData.isStrict = true;
}
+ itsData.declaredAsVar = (theFunction.getParent() instanceof VariableInitializer);
+
generateICodeFromTree(theFunction.getLastChild());
}
@@ -191,6 +197,12 @@ class CodeGenerator extends Icode {
gen.itsData = new InterpreterData(itsData);
gen.generateFunctionICode();
array[i] = gen.itsData;
+ if (fn.getParent() instanceof FunctionCall) {
+ AstNode grandParent = fn.getParent().getParent();
+ if (grandParent instanceof UnaryExpression && grandParent.getType() == Token.NOT) {
+ gen.itsData.declaredAsFunctionExpression = true;
+ }
+ }
}
itsData.itsNestedFunctions = array;
}
@@ -273,8 +285,8 @@ class CodeGenerator extends Icode {
case Token.EMPTY:
case Token.WITH:
updateLineNumber(node);
- // fallthru
case Token.SCRIPT:
+ // fall through
while (child != null) {
visitStatement(child, initialStackDepth);
child = child.getNext();
diff --git a/src/org/mozilla/javascript/Context.java b/src/org/mozilla/javascript/Context.java
index 515efbe5..bca2996b 100644
--- a/src/org/mozilla/javascript/Context.java
+++ b/src/org/mozilla/javascript/Context.java
@@ -317,6 +317,79 @@ public class Context
*/
public static final int FEATURE_ENUMERATE_IDS_FIRST = 16;
+ /**
+ * Special to HtmlUnit's Rhino fork.
+ *
+ * Whether the "someFunc.arguments" is a read-only view of the function argument
+ * or the real arguments.
+ *
+ * By default {@link #hasFeature(int)} returns false.
+ */
+ public static final int FEATURE_HTMLUNIT_FN_ARGUMENTS_IS_RO_VIEW = 101;
+
+ /**
+ * Special to HtmlUnit's Rhino fork.
+ *
+ * Indicates that 'exception' (technically NativeError) always exposes "stack" property.
+ *
+ * By default {@link #hasFeature(int)} returns true.
+ */
+ public static final int FEATURE_HTMLUNIT_ERROR_STACK = 102;
+
+ /**
+ * Special to HtmlUnit's Rhino fork.
+ *
+ * Indicates that function is defined even before its declaration, inside a block.
+ *
+ * By default {@link #hasFeature(int)} returns false.
+ */
+ public static final int FEATURE_HTMLUNIT_FUNCTION_DECLARED_FORWARD_IN_BLOCK = 103;
+
+ /**
+ * Special to HtmlUnit's Rhino fork.
+ *
+ * Indicates that for(x in []) should enumerate the numbers first.
+ *
+ * By default {@link #hasFeature(int)} returns false.
+ */
+ public static final int FEATURE_HTMLUNIT_ENUM_NUMBERS_FIRST = 104;
+
+ /**
+ * Special to HtmlUnit's Rhino fork.
+ *
+ * Indicates that {@code Object.getPrototypeOf('')} is allowed
+ *
+ * By default {@link #hasFeature(int)} returns true.
+ */
+ public static final int FEATURE_HTMLUNIT_GET_PROTOTYPE_OF_STRING = 105;
+
+ /**
+ * Special to HtmlUnit's Rhino fork.
+ *
+ * Indicates that {@code MemberBox.toString()} contains property name.
+ *
+ * By default {@link #hasFeature(int)} returns true.
+ */
+ public static final int FEATURE_HTMLUNIT_MEMBERBOX_NAME = 106;
+
+ /**
+ * Special to HtmlUnit's Rhino fork.
+ *
+ * Indicates that {@code MemberBox.toString()} starts with new line.
+ *
+ * By default {@link #hasFeature(int)} returns true.
+ */
+ public static final int FEATURE_HTMLUNIT_MEMBERBOX_NEWLINE = 107;
+
+ /**
+ * Special to HtmlUnit's Rhino fork.
+ *
+ * Indicates that {@code Array} supports constructor properties.
+ *
+ * By default {@link #hasFeature(int)} returns false.
+ */
+ public static final int FEATURE_HTMLUNIT_ARRAY_PROPERTIES = 108;
+
public static final String languageVersionProperty = "language version";
public static final String errorReporterProperty = "error reporter";
@@ -1397,7 +1470,8 @@ public class Context
* @return whether the source is ready for compilation
* @since 1.4 Release 2
*/
- public final boolean stringIsCompilableUnit(String source) {
+ public final boolean stringIsCompilableUnit(String source)
+ {
boolean errorseen = false;
CompilerEnvirons compilerEnv = new CompilerEnvirons();
compilerEnv.initFromContext(this);
@@ -1413,7 +1487,10 @@ public class Context
// Return false only if an error occurred as a result of reading past
// the end of the file, i.e. if the source could be fixed by
// appending more source.
- return !(errorseen && p.eof());
+ if (errorseen && p.eof())
+ return false;
+ else
+ return true;
}
/**
@@ -1487,7 +1564,7 @@ public class Context
securityDomain);
}
- final Script compileString(String source,
+ protected Script compileString(String source,
Evaluator compiler,
ErrorReporter compilationErrorReporter,
String sourceName, int lineno,
@@ -1528,7 +1605,7 @@ public class Context
securityDomain);
}
- final Function compileFunction(Scriptable scope, String source,
+ protected Function compileFunction(Scriptable scope, String source,
Evaluator compiler,
ErrorReporter compilationErrorReporter,
String sourceName, int lineno,
@@ -2410,7 +2487,7 @@ public class Context
ClassLoader loader = f.getApplicationClassLoader();
if (loader == null) {
ClassLoader threadLoader
- = Thread.currentThread().getContextClassLoader();
+ = VMBridge.instance.getCurrentThreadClassLoader();
if (threadLoader != null
&& Kit.testIfCanLoadRhinoClasses(threadLoader))
{
diff --git a/src/org/mozilla/javascript/ContextFactory.java b/src/org/mozilla/javascript/ContextFactory.java
index ba607a34..2087ffb7 100644
--- a/src/org/mozilla/javascript/ContextFactory.java
+++ b/src/org/mozilla/javascript/ContextFactory.java
@@ -288,6 +288,24 @@ public class ContextFactory
case Context.FEATURE_ENUMERATE_IDS_FIRST:
return cx.getLanguageVersion() >= Context.VERSION_ES6;
+
+ case Context.FEATURE_HTMLUNIT_FN_ARGUMENTS_IS_RO_VIEW:
+ return false;
+
+ case Context.FEATURE_HTMLUNIT_ERROR_STACK:
+ return true;
+
+ case Context.FEATURE_HTMLUNIT_FUNCTION_DECLARED_FORWARD_IN_BLOCK:
+ return false;
+
+ case Context.FEATURE_HTMLUNIT_ENUM_NUMBERS_FIRST:
+ return false;
+
+ case Context.FEATURE_HTMLUNIT_GET_PROTOTYPE_OF_STRING:
+ return true;
+
+ case Context.FEATURE_HTMLUNIT_ARRAY_PROPERTIES:
+ return false;
}
// It is a bug to call the method with unknown featureIndex
throw new IllegalArgumentException(String.valueOf(featureIndex));
@@ -591,4 +609,4 @@ public class ContextFactory
{
return Context.enter(cx, this);
}
-}
\ No newline at end of file
+}
diff --git a/src/org/mozilla/javascript/DToA.java b/src/org/mozilla/javascript/DToA.java
index 1b18bcbb..f0ecf4d9 100644
--- a/src/org/mozilla/javascript/DToA.java
+++ b/src/org/mozilla/javascript/DToA.java
@@ -602,7 +602,7 @@ class DToA {
break;
case 2:
leftright = false;
- /* fallthru */
+ /* no break */
case 4:
if (ndigits <= 0)
ndigits = 1;
@@ -610,7 +610,7 @@ class DToA {
break;
case 3:
leftright = false;
- /* fallthru */
+ /* no break */
case 5:
i = ndigits + k + 1;
ilim = i;
@@ -1168,7 +1168,7 @@ class DToA {
case DTOSTR_EXPONENTIAL:
// JS_ASSERT(precision > 0);
minNDigits = precision;
- /* fallthru */
+ /* Fall through */
case DTOSTR_STANDARD_EXPONENTIAL:
exponentialNotation = true;
break;
diff --git a/src/org/mozilla/javascript/Decompiler.java b/src/org/mozilla/javascript/Decompiler.java
index 28fd044d..5010b4e7 100644
--- a/src/org/mozilla/javascript/Decompiler.java
+++ b/src/org/mozilla/javascript/Decompiler.java
@@ -311,8 +311,6 @@ public class Decompiler
}
if (!toSource) {
- // add an initial newline to exactly match js.
- result.append('\n');
for (int j = 0; j < indent; j++)
result.append(' ');
} else {
@@ -806,11 +804,7 @@ public class Decompiler
++i;
}
- if (!toSource) {
- // add that trailing newline if it's an outermost function.
- if (!justFunctionBody)
- result.append('\n');
- } else {
+ if (toSource) {
if (topFunctionType == FunctionNode.FUNCTION_EXPRESSION) {
result.append(')');
}
diff --git a/src/org/mozilla/javascript/Delegator.java b/src/org/mozilla/javascript/Delegator.java
index 8e8bac4f..e273d0f2 100644
--- a/src/org/mozilla/javascript/Delegator.java
+++ b/src/org/mozilla/javascript/Delegator.java
@@ -85,85 +85,85 @@ public class Delegator implements Function {
* @see org.mozilla.javascript.Scriptable#getClassName
*/
public String getClassName() {
- return obj.getClassName();
+ return getDelegee().getClassName();
}
/**
* @see org.mozilla.javascript.Scriptable#get(String, Scriptable)
*/
public Object get(String name, Scriptable start) {
- return obj.get(name,start);
+ return getDelegee().get(name,start);
}
/**
* @see org.mozilla.javascript.Scriptable#get(int, Scriptable)
*/
public Object get(int index, Scriptable start) {
- return obj.get(index,start);
+ return getDelegee().get(index,start);
}
/**
* @see org.mozilla.javascript.Scriptable#has(String, Scriptable)
*/
public boolean has(String name, Scriptable start) {
- return obj.has(name,start);
+ return getDelegee().has(name,start);
}
/**
* @see org.mozilla.javascript.Scriptable#has(int, Scriptable)
*/
public boolean has(int index, Scriptable start) {
- return obj.has(index,start);
+ return getDelegee().has(index,start);
}
/**
* @see org.mozilla.javascript.Scriptable#put(String, Scriptable, Object)
*/
public void put(String name, Scriptable start, Object value) {
- obj.put(name,start,value);
+ getDelegee().put(name,start,value);
}
/**
* @see org.mozilla.javascript.Scriptable#put(int, Scriptable, Object)
*/
public void put(int index, Scriptable start, Object value) {
- obj.put(index,start,value);
+ getDelegee().put(index,start,value);
}
/**
* @see org.mozilla.javascript.Scriptable#delete(String)
*/
public void delete(String name) {
- obj.delete(name);
+ getDelegee().delete(name);
}
/**
* @see org.mozilla.javascript.Scriptable#delete(int)
*/
public void delete(int index) {
- obj.delete(index);
+ getDelegee().delete(index);
}
/**
* @see org.mozilla.javascript.Scriptable#getPrototype
*/
public Scriptable getPrototype() {
- return obj.getPrototype();
+ return getDelegee().getPrototype();
}
/**
* @see org.mozilla.javascript.Scriptable#setPrototype
*/
public void setPrototype(Scriptable prototype) {
- obj.setPrototype(prototype);
+ getDelegee().setPrototype(prototype);
}
/**
* @see org.mozilla.javascript.Scriptable#getParentScope
*/
public Scriptable getParentScope() {
- return obj.getParentScope();
+ return getDelegee().getParentScope();
}
/**
* @see org.mozilla.javascript.Scriptable#setParentScope
*/
public void setParentScope(Scriptable parent) {
- obj.setParentScope(parent);
+ getDelegee().setParentScope(parent);
}
/**
* @see org.mozilla.javascript.Scriptable#getIds
*/
public Object[] getIds() {
- return obj.getIds();
+ return getDelegee().getIds();
}
/**
* Note that this method does not get forwarded to the delegee if
@@ -181,13 +181,13 @@ public class Delegator implements Function {
return (hint == null ||
hint == ScriptRuntime.ScriptableClass ||
hint == ScriptRuntime.FunctionClass) ?
- this : obj.getDefaultValue(hint);
+ this : getDelegee().getDefaultValue(hint);
}
/**
* @see org.mozilla.javascript.Scriptable#hasInstance
*/
public boolean hasInstance(Scriptable instance) {
- return obj.hasInstance(instance);
+ return getDelegee().hasInstance(instance);
}
/**
* @see org.mozilla.javascript.Function#call
@@ -195,7 +195,7 @@ public class Delegator implements Function {
public Object call(Context cx, Scriptable scope, Scriptable thisObj,
Object[] args)
{
- return ((Function)obj).call(cx,scope,thisObj,args);
+ return ((Function)getDelegee()).call(cx,scope,thisObj,args);
}
/**
@@ -215,7 +215,7 @@ public class Delegator implements Function {
*/
public Scriptable construct(Context cx, Scriptable scope, Object[] args)
{
- if (obj == null) {
+ if (getDelegee() == null) {
//this little trick allows us to declare prototype objects for
//Delegators
Delegator n = newInstance();
@@ -229,7 +229,7 @@ public class Delegator implements Function {
return n;
}
else {
- return ((Function)obj).construct(cx,scope,args);
+ return ((Function)getDelegee()).construct(cx,scope,args);
}
}
}
diff --git a/src/org/mozilla/javascript/ES6Iterator.java b/src/org/mozilla/javascript/ES6Iterator.java
index c29b60de..1a7958a4 100644
--- a/src/org/mozilla/javascript/ES6Iterator.java
+++ b/src/org/mozilla/javascript/ES6Iterator.java
@@ -6,6 +6,9 @@
package org.mozilla.javascript;
+import static org.mozilla.javascript.NativeSymbol.ITERATOR_PROPERTY;
+import static org.mozilla.javascript.NativeSymbol.TO_STRING_TAG_PROPERTY;
+
public abstract class ES6Iterator extends IdScriptableObject {
static void init(ScriptableObject scope, boolean sealed, IdScriptableObject prototype, String tag) {
@@ -50,10 +53,10 @@ public abstract class ES6Iterator extends IdScriptableObject {
initPrototypeMethod(getTag(), id, NEXT_METHOD, 0);
return;
case Id_iterator:
- initPrototypeMethod(getTag(), id, SymbolKey.ITERATOR, "[Symbol.iterator]", 0);
+ initPrototypeMethod(getTag(), id, ITERATOR_PROPERTY, "[Symbol.iterator]", 0);
return;
case Id_toStringTag:
- initPrototypeValue(Id_toStringTag, SymbolKey.TO_STRING_TAG, getClassName(), DONTENUM | READONLY);
+ initPrototypeValue(Id_toStringTag, TO_STRING_TAG_PROPERTY, getClassName(), DONTENUM | READONLY);
return;
default: throw new IllegalArgumentException(String.valueOf(id));
}
@@ -83,20 +86,14 @@ public abstract class ES6Iterator extends IdScriptableObject {
}
}
- @Override
- protected int findPrototypeId(Symbol k) {
- if (SymbolKey.ITERATOR.equals(k)) {
- return Id_iterator;
- } else if (SymbolKey.TO_STRING_TAG.equals(k)) {
- return Id_toStringTag;
- }
- return 0;
- }
-
@Override
protected int findPrototypeId(String s) {
- if ("next".equals(s)) {
+ if (s.charAt(0) == 'n') {
return Id_next;
+ } else if (ITERATOR_PROPERTY.equals(s)) {
+ return Id_iterator;
+ } else if (TO_STRING_TAG_PROPERTY.equals(s)) {
+ return Id_toStringTag;
}
return 0;
}
diff --git a/src/org/mozilla/javascript/FunctionObject.java b/src/org/mozilla/javascript/FunctionObject.java
index 1d396a6c..4df9cc39 100644
--- a/src/org/mozilla/javascript/FunctionObject.java
+++ b/src/org/mozilla/javascript/FunctionObject.java
@@ -398,6 +398,9 @@ public class FunctionObject extends BaseFunction
} else {
if (!isStatic) {
Class> clazz = member.getDeclaringClass();
+ if (thisObj instanceof Delegator) {
+ thisObj = ((Delegator) thisObj).getDelegee();
+ }
if (!clazz.isInstance(thisObj)) {
boolean compatible = false;
if (thisObj == scope) {
diff --git a/src/org/mozilla/javascript/IRFactory.java b/src/org/mozilla/javascript/IRFactory.java
index c9be7172..070b6f01 100644
--- a/src/org/mozilla/javascript/IRFactory.java
+++ b/src/org/mozilla/javascript/IRFactory.java
@@ -6,67 +6,7 @@
package org.mozilla.javascript;
-import org.mozilla.javascript.ast.ArrayComprehension;
-import org.mozilla.javascript.ast.ArrayComprehensionLoop;
-import org.mozilla.javascript.ast.ArrayLiteral;
-import org.mozilla.javascript.ast.Assignment;
-import org.mozilla.javascript.ast.AstNode;
-import org.mozilla.javascript.ast.AstRoot;
-import org.mozilla.javascript.ast.Block;
-import org.mozilla.javascript.ast.BreakStatement;
-import org.mozilla.javascript.ast.CatchClause;
-import org.mozilla.javascript.ast.ConditionalExpression;
-import org.mozilla.javascript.ast.ContinueStatement;
-import org.mozilla.javascript.ast.DestructuringForm;
-import org.mozilla.javascript.ast.DoLoop;
-import org.mozilla.javascript.ast.ElementGet;
-import org.mozilla.javascript.ast.EmptyExpression;
-import org.mozilla.javascript.ast.ExpressionStatement;
-import org.mozilla.javascript.ast.ForInLoop;
-import org.mozilla.javascript.ast.ForLoop;
-import org.mozilla.javascript.ast.FunctionCall;
-import org.mozilla.javascript.ast.FunctionNode;
-import org.mozilla.javascript.ast.GeneratorExpression;
-import org.mozilla.javascript.ast.GeneratorExpressionLoop;
-import org.mozilla.javascript.ast.IfStatement;
-import org.mozilla.javascript.ast.InfixExpression;
-import org.mozilla.javascript.ast.Jump;
-import org.mozilla.javascript.ast.Label;
-import org.mozilla.javascript.ast.LabeledStatement;
-import org.mozilla.javascript.ast.LetNode;
-import org.mozilla.javascript.ast.Loop;
-import org.mozilla.javascript.ast.Name;
-import org.mozilla.javascript.ast.NewExpression;
-import org.mozilla.javascript.ast.NumberLiteral;
-import org.mozilla.javascript.ast.ObjectLiteral;
-import org.mozilla.javascript.ast.ObjectProperty;
-import org.mozilla.javascript.ast.ParenthesizedExpression;
-import org.mozilla.javascript.ast.PropertyGet;
-import org.mozilla.javascript.ast.RegExpLiteral;
-import org.mozilla.javascript.ast.ReturnStatement;
-import org.mozilla.javascript.ast.Scope;
-import org.mozilla.javascript.ast.ScriptNode;
-import org.mozilla.javascript.ast.StringLiteral;
-import org.mozilla.javascript.ast.SwitchCase;
-import org.mozilla.javascript.ast.SwitchStatement;
-import org.mozilla.javascript.ast.Symbol;
-import org.mozilla.javascript.ast.ThrowStatement;
-import org.mozilla.javascript.ast.TryStatement;
-import org.mozilla.javascript.ast.UnaryExpression;
-import org.mozilla.javascript.ast.VariableDeclaration;
-import org.mozilla.javascript.ast.VariableInitializer;
-import org.mozilla.javascript.ast.WhileLoop;
-import org.mozilla.javascript.ast.WithStatement;
-import org.mozilla.javascript.ast.XmlDotQuery;
-import org.mozilla.javascript.ast.XmlElemRef;
-import org.mozilla.javascript.ast.XmlExpression;
-import org.mozilla.javascript.ast.XmlFragment;
-import org.mozilla.javascript.ast.XmlLiteral;
-import org.mozilla.javascript.ast.XmlMemberGet;
-import org.mozilla.javascript.ast.XmlPropRef;
-import org.mozilla.javascript.ast.XmlRef;
-import org.mozilla.javascript.ast.XmlString;
-import org.mozilla.javascript.ast.Yield;
+import org.mozilla.javascript.ast.*;
import java.util.List;
import java.util.ArrayList;
@@ -421,6 +361,7 @@ public final class IRFactory extends Parser
private Node transformAssignment(Assignment node) {
AstNode left = removeParens(node.getLeft());
+ left = transformAssignmentLeft(node, left);
Node target = null;
if (isDestructuring(left)) {
decompile(left);
@@ -434,6 +375,31 @@ public final class IRFactory extends Parser
transform(node.getRight()));
}
+ private AstNode transformAssignmentLeft(Assignment node, AstNode left) {
+ AstNode right = node.getRight();
+
+ if (right.getType() == Token.NULL && node.getType() == Token.ASSIGN
+ && left instanceof Name && right instanceof KeywordLiteral) {
+
+ final String identifier = ((Name) left).getIdentifier();
+ for (AstNode p = node.getParent(); p != null; p = p.getParent()) {
+ if (p instanceof FunctionNode) {
+ final Name functionName = ((FunctionNode) p).getFunctionName();
+ if (functionName != null && functionName.getIdentifier().equals(identifier)) {
+ final PropertyGet propertyGet = new PropertyGet();
+ final KeywordLiteral thisKeyword = new KeywordLiteral();
+ thisKeyword.setType(Token.THIS);
+ propertyGet.setLeft(thisKeyword);
+ propertyGet.setRight(left);
+ node.setLeft(propertyGet);
+ return propertyGet;
+ }
+ }
+ }
+ }
+ return left;
+ }
+
private Node transformBlock(AstNode node) {
if (node instanceof Scope) {
pushScope((Scope)node);
@@ -503,6 +469,16 @@ public final class IRFactory extends Parser
}
private Node transformElementGet(ElementGet node) {
+ //Ensure "function['eval']" is transformed into "function.eval"
+ if (node.getElement().type == Token.STRING
+ && "eval".equals(((StringLiteral) node.getElement()).getValue())) {
+ final PropertyGet propertyGet = new PropertyGet();
+ propertyGet.setLeft(node.getTarget());
+ final Name name = new Name();
+ name.setIdentifier("eval");
+ propertyGet.setRight(name);
+ return transform(propertyGet);
+ }
// OPT: could optimize to createPropertyGet
// iff elem is string that can not be number
Node target = transform(node.getTarget());
diff --git a/src/org/mozilla/javascript/IdFunctionObject.java b/src/org/mozilla/javascript/IdFunctionObject.java
index 57f7ef28..de228e15 100644
--- a/src/org/mozilla/javascript/IdFunctionObject.java
+++ b/src/org/mozilla/javascript/IdFunctionObject.java
@@ -114,29 +114,6 @@ public class IdFunctionObject extends BaseFunction
throw ScriptRuntime.typeError1("msg.not.ctor", functionName);
}
- @Override
- String decompile(int indent, int flags)
- {
- StringBuilder sb = new StringBuilder();
- boolean justbody = (0 != (flags & Decompiler.ONLY_BODY_FLAG));
- if (!justbody) {
- sb.append("function ");
- sb.append(getFunctionName());
- sb.append("() { ");
- }
- sb.append("[native code for ");
- if (idcall instanceof Scriptable) {
- Scriptable sobj = (Scriptable)idcall;
- sb.append(sobj.getClassName());
- sb.append('.');
- }
- sb.append(getFunctionName());
- sb.append(", arity=");
- sb.append(getArity());
- sb.append(justbody ? "]\n" : "] }\n");
- return sb.toString();
- }
-
@Override
public int getArity()
{
diff --git a/src/org/mozilla/javascript/IdScriptableObject.java b/src/org/mozilla/javascript/IdScriptableObject.java
index bb32addf..19007953 100644
--- a/src/org/mozilla/javascript/IdScriptableObject.java
+++ b/src/org/mozilla/javascript/IdScriptableObject.java
@@ -6,10 +6,7 @@
package org.mozilla.javascript;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
+import java.io.*;
/**
Base class for native object implementation that uses IdFunctionObject to export its methods to script via .prototype object.
@@ -90,30 +87,6 @@ public abstract class IdScriptableObject extends ScriptableObject
initSlot(id, name, value, attributes);
}
- final void initValue(int id, Symbol key, Object value, int attributes)
- {
- if (!(1 <= id && id <= maxId))
- throw new IllegalArgumentException();
- if (key == null)
- throw new IllegalArgumentException();
- if (value == NOT_FOUND)
- throw new IllegalArgumentException();
- ScriptableObject.checkValidAttributes(attributes);
- if (obj.findPrototypeId(key) != id)
- throw new IllegalArgumentException(key.toString());
-
- if (id == constructorId) {
- if (!(value instanceof IdFunctionObject)) {
- throw new IllegalArgumentException("consructor should be initialized with IdFunctionObject");
- }
- constructor = (IdFunctionObject)value;
- constructorAttrs = (short)attributes;
- return;
- }
-
- initSlot(id, "", value, attributes);
- }
-
private void initSlot(int id, String name, Object value,
int attributes)
{
@@ -163,11 +136,6 @@ public abstract class IdScriptableObject extends ScriptableObject
return obj.findPrototypeId(name);
}
- final int findId(Symbol key)
- {
- return obj.findPrototypeId(key);
- }
-
final boolean has(int id)
{
Object[] array = valueArray;
@@ -366,28 +334,6 @@ public abstract class IdScriptableObject extends ScriptableObject
return super.has(name, start);
}
-
- @Override
- public boolean has(Symbol key, Scriptable start)
- {
- int info = findInstanceIdInfo(key);
- if (info != 0) {
- int attr = (info >>> 16);
- if ((attr & PERMANENT) != 0) {
- return true;
- }
- int id = (info & 0xFFFF);
- return NOT_FOUND != getInstanceIdValue(id);
- }
- if (prototypeValues != null) {
- int id = prototypeValues.findId(key);
- if (id != 0) {
- return prototypeValues.has(id);
- }
- }
- return super.has(key, start);
- }
-
@Override
public Object get(String name, Scriptable start)
{
@@ -413,29 +359,6 @@ public abstract class IdScriptableObject extends ScriptableObject
return NOT_FOUND;
}
- @Override
- public Object get(Symbol key, Scriptable start)
- {
- Object value = super.get(key, start);
- if (value != NOT_FOUND) {
- return value;
- }
- int info = findInstanceIdInfo(key);
- if (info != 0) {
- int id = (info & 0xFFFF);
- value = getInstanceIdValue(id);
- if (value != NOT_FOUND) return value;
- }
- if (prototypeValues != null) {
- int id = prototypeValues.findId(key);
- if (id != 0) {
- value = prototypeValues.get(id);
- if (value != NOT_FOUND) return value;
- }
- }
- return NOT_FOUND;
- }
-
@Override
public void put(String name, Scriptable start, Object value)
{
@@ -471,39 +394,6 @@ public abstract class IdScriptableObject extends ScriptableObject
super.put(name, start, value);
}
- @Override
- public void put(Symbol key, Scriptable start, Object value)
- {
- int info = findInstanceIdInfo(key);
- if (info != 0) {
- if (start == this && isSealed()) {
- throw Context.reportRuntimeError0("msg.modify.sealed");
- }
- int attr = (info >>> 16);
- if ((attr & READONLY) == 0) {
- if (start == this) {
- int id = (info & 0xFFFF);
- setInstanceIdValue(id, value);
- }
- else {
- ensureSymbolScriptable(start).put(key, start, value);
- }
- }
- return;
- }
- if (prototypeValues != null) {
- int id = prototypeValues.findId(key);
- if (id != 0) {
- if (start == this && isSealed()) {
- throw Context.reportRuntimeError0("msg.modify.sealed");
- }
- prototypeValues.set(id, start, value);
- return;
- }
- }
- super.put(key, start, value);
- }
-
@Override
public void delete(String name)
{
@@ -537,39 +427,6 @@ public abstract class IdScriptableObject extends ScriptableObject
super.delete(name);
}
- @Override
- public void delete(Symbol key)
- {
- int info = findInstanceIdInfo(key);
- if (info != 0) {
- // Let the super class to throw exceptions for sealed objects
- if (!isSealed()) {
- int attr = (info >>> 16);
- // non-configurable
- if ((attr & PERMANENT) != 0) {
- Context cx = Context.getContext();
- if (cx.isStrictMode()) {
- throw ScriptRuntime.typeError0("msg.delete.property.with.configurable.false");
- }
- } else {
- int id = (info & 0xFFFF);
- setInstanceIdValue(id, NOT_FOUND);
- }
- return;
- }
- }
- if (prototypeValues != null) {
- int id = prototypeValues.findId(key);
- if (id != 0) {
- if (!isSealed()) {
- prototypeValues.delete(id);
- }
- return;
- }
- }
- super.delete(key);
- }
-
@Override
public int getAttributes(String name)
{
@@ -611,12 +468,12 @@ public abstract class IdScriptableObject extends ScriptableObject
}
@Override
- Object[] getIds(boolean getNonEnumerable, boolean getSymbols)
+ Object[] getIds(boolean getAll)
{
- Object[] result = super.getIds(getNonEnumerable, getSymbols);
+ Object[] result = super.getIds(getAll);
if (prototypeValues != null) {
- result = prototypeValues.getNames(getNonEnumerable, result);
+ result = prototypeValues.getNames(getAll, result);
}
int maxInstanceId = getMaxInstanceId();
@@ -634,7 +491,7 @@ public abstract class IdScriptableObject extends ScriptableObject
continue;
}
}
- if (getNonEnumerable || (attr & DONTENUM) == 0) {
+ if (getAll || (attr & DONTENUM) == 0) {
if (count == 0) {
// Need extra room for no more then [1..id] names
ids = new Object[id];
@@ -681,16 +538,6 @@ public abstract class IdScriptableObject extends ScriptableObject
return 0;
}
- /**
- * Map name to id of instance property.
- * Should return 0 if not found or the result of
- * {@link #instanceIdInfo(int, int)}.
- */
- protected int findInstanceIdInfo(Symbol key)
- {
- return 0;
- }
-
/** Map id back to property name it defines.
*/
protected String getInstanceIdName(int id)
@@ -781,7 +628,7 @@ public abstract class IdScriptableObject extends ScriptableObject
public final IdFunctionObject initPrototypeMethod(Object tag, int id, String name,
int arity)
{
- return initPrototypeMethod(tag, id, name, name, arity);
+ return initPrototypeMethod(tag, id, name, name, arity);
}
public final IdFunctionObject initPrototypeMethod(Object tag, int id, String propertyName, String functionName,
@@ -795,15 +642,6 @@ public abstract class IdScriptableObject extends ScriptableObject
return function;
}
- public final IdFunctionObject initPrototypeMethod(Object tag, int id, Symbol key, String functionName,
- int arity)
- {
- Scriptable scope = ScriptableObject.getTopLevelScope(this);
- IdFunctionObject function = newIdFunction(tag, id, functionName, arity, scope);
- prototypeValues.initValue(id, key, function, DONTENUM);
- return function;
- }
-
public final void initPrototypeConstructor(IdFunctionObject f)
{
int id = prototypeValues.constructorId;
@@ -821,12 +659,6 @@ public abstract class IdScriptableObject extends ScriptableObject
prototypeValues.initValue(id, name, value, attributes);
}
- public final void initPrototypeValue(int id, Symbol key, Object value,
- int attributes)
- {
- prototypeValues.initValue(id, key, value, attributes);
- }
-
protected void initPrototypeId(int id)
{
throw new IllegalStateException(String.valueOf(id));
@@ -837,11 +669,6 @@ public abstract class IdScriptableObject extends ScriptableObject
throw new IllegalStateException(name);
}
- protected int findPrototypeId(Symbol key)
- {
- return 0;
- }
-
protected void fillConstructorProperties(IdFunctionObject ctor)
{
}
@@ -950,12 +777,8 @@ public abstract class IdScriptableObject extends ScriptableObject
@Override
protected ScriptableObject getOwnPropertyDescriptor(Context cx, Object id) {
ScriptableObject desc = super.getOwnPropertyDescriptor(cx, id);
- if (desc == null) {
- if (id instanceof String) {
- desc = getBuiltInDescriptor((String) id);
- } else if (ScriptRuntime.isSymbol(id)) {
- desc = getBuiltInDescriptor(((NativeSymbol)id).getKey());
- }
+ if (desc == null && id instanceof String) {
+ desc = getBuiltInDescriptor((String) id);
}
return desc;
}
@@ -987,26 +810,6 @@ public abstract class IdScriptableObject extends ScriptableObject
return null;
}
- private ScriptableObject getBuiltInDescriptor(Symbol key) {
- Object value = null;
- int attr = EMPTY;
-
- Scriptable scope = getParentScope();
- if (scope == null) {
- scope = this;
- }
-
- if (prototypeValues != null) {
- int id = prototypeValues.findId(key);
- if (id != 0) {
- value = prototypeValues.get(id);
- attr = prototypeValues.getAttributes(id);
- return buildDataDescriptor(scope, value, attr);
- }
- }
- return null;
- }
-
private void readObject(ObjectInputStream stream)
throws IOException, ClassNotFoundException
{
diff --git a/src/org/mozilla/javascript/InterpretedFunction.java b/src/org/mozilla/javascript/InterpretedFunction.java
index 37b2e4dd..d007c7ff 100644
--- a/src/org/mozilla/javascript/InterpretedFunction.java
+++ b/src/org/mozilla/javascript/InterpretedFunction.java
@@ -16,6 +16,8 @@ final class InterpretedFunction extends NativeFunction implements Script
SecurityController securityController;
Object securityDomain;
+ private Arguments arguments;
+
private InterpretedFunction(InterpreterData idata,
Object staticSecurityDomain)
{
@@ -176,5 +178,57 @@ final class InterpretedFunction extends NativeFunction implements Script
{
return idata.argIsConst[index];
}
+
+ /**
+ * Provides the decompiled source of the function what is helpful
+ * while debugging.
+ */
+ @Override
+ public String toString() {
+ return decompile(2, 0);
+ }
+
+ void setArguments(final Arguments arguments) {
+ if (arguments == null) {
+ this.arguments = null;
+ return;
+ }
+
+ final Context currentContext = Context.getCurrentContext();
+ if (currentContext.hasFeature(Context.FEATURE_HTMLUNIT_FN_ARGUMENTS_IS_RO_VIEW)) {
+ this.arguments = new Arguments(arguments) {
+ @Override
+ public void put(int index, Scriptable start, Object value) {
+ // ignore
+ }
+
+ @Override
+ public void put(String name, Scriptable start, Object value) {
+ // ignore
+ }
+
+ @Override
+ public void delete(int index) {
+ // ignore
+ }
+
+ @Override
+ public void delete(String name) {
+ // ignore
+ }
+ };
+ }
+ else {
+ this.arguments = arguments;
+ }
+ }
+
+ @Override
+ public Object get(final String name, final Scriptable start) {
+ if (start == this && "arguments".equals(name)) {
+ return this.arguments;
+ }
+ return super.get(name, start);
+ }
}
diff --git a/src/org/mozilla/javascript/Interpreter.java b/src/org/mozilla/javascript/Interpreter.java
index c591b1c8..8b7dd08b 100644
--- a/src/org/mozilla/javascript/Interpreter.java
+++ b/src/org/mozilla/javascript/Interpreter.java
@@ -1011,6 +1011,11 @@ switch (op) {
}
case Token.THROW: {
Object value = stack[stackTop];
+ if (value instanceof NativeError) {
+ EcmaError er = ScriptRuntime.constructError("", "");
+ ((NativeError) value).setStackProvider(er);
+ }
+
if (value == DBL_MRK) value = ScriptRuntime.wrapNumber(sDbl[stackTop]);
--stackTop;
@@ -2876,6 +2881,17 @@ switch (op) {
private static void enterFrame(Context cx, CallFrame frame, Object[] args,
boolean continuationRestart)
{
+ if (frame.parentFrame != null && !frame.parentFrame.fnOrScript.isScript()) {
+ frame.fnOrScript.defaultPut("caller", frame.parentFrame.fnOrScript);
+ frame.fnOrScript.setAttributes("caller", ScriptableObject.DONTENUM);
+ }
+ if (frame.scope instanceof NativeCall) {
+ Object arguments = ScriptableObject.getProperty(frame.scope, "arguments");
+ if (arguments instanceof Arguments) {
+ frame.fnOrScript.setArguments((Arguments) arguments);
+ }
+ }
+
boolean usesActivation = frame.idata.itsNeedsActivation;
boolean isDebugged = frame.debuggerFrame != null;
if(usesActivation || isDebugged) {
@@ -2925,6 +2941,9 @@ switch (op) {
private static void exitFrame(Context cx, CallFrame frame,
Object throwable)
{
+ frame.fnOrScript.defaultPut("caller", null);
+ frame.fnOrScript.setArguments(null);
+
if (frame.idata.itsNeedsActivation) {
ScriptRuntime.exitActivationFunction(cx);
}
diff --git a/src/org/mozilla/javascript/InterpreterData.java b/src/org/mozilla/javascript/InterpreterData.java
index 817d52c7..b4894692 100644
--- a/src/org/mozilla/javascript/InterpreterData.java
+++ b/src/org/mozilla/javascript/InterpreterData.java
@@ -89,6 +89,12 @@ final class InterpreterData implements Serializable, DebuggableScript
boolean evalScriptFlag; // true if script corresponds to eval() code
+ /** true if the function has been declared like "var foo = function() {...}" */
+ boolean declaredAsVar;
+
+ /** true if the function has been declared like "!function() {}". */
+ boolean declaredAsFunctionExpression;
+
public boolean isTopLevel()
{
return topLevel;
diff --git a/src/org/mozilla/javascript/JavaAdapter.java b/src/org/mozilla/javascript/JavaAdapter.java
index dcbfdc97..49fc088c 100644
--- a/src/org/mozilla/javascript/JavaAdapter.java
+++ b/src/org/mozilla/javascript/JavaAdapter.java
@@ -384,8 +384,7 @@ public final class JavaAdapter implements IdFunctionCall
for (int j = 0; j < methods.length; j++) {
Method method = methods[j];
int mods = method.getModifiers();
- if (Modifier.isStatic(mods) || Modifier.isFinal(mods) ||
- VMBridge.instance.isDefaultMethod(method)) {
+ if (Modifier.isStatic(mods) || Modifier.isFinal(mods)) {
continue;
}
String methodName = method.getName();
diff --git a/src/org/mozilla/javascript/JavaMembers.java b/src/org/mozilla/javascript/JavaMembers.java
index 02a0124e..b2f6100a 100644
--- a/src/org/mozilla/javascript/JavaMembers.java
+++ b/src/org/mozilla/javascript/JavaMembers.java
@@ -327,11 +327,6 @@ class JavaMembers
}
}
}
- Class>[] interfaces = clazz.getInterfaces();
- for (Class> intface : interfaces) {
- discoverAccessibleMethods(intface, map, includeProtected,
- includePrivate);
- }
clazz = clazz.getSuperclass();
} catch (SecurityException e) {
// Some security settings (i.e., applets) disallow
diff --git a/src/org/mozilla/javascript/LazilyLoadedCtor.java b/src/org/mozilla/javascript/LazilyLoadedCtor.java
index 62ba7a2a..9bdb22b8 100644
--- a/src/org/mozilla/javascript/LazilyLoadedCtor.java
+++ b/src/org/mozilla/javascript/LazilyLoadedCtor.java
@@ -16,7 +16,7 @@ import java.security.PrivilegedAction;
* This improves startup time and average memory usage.
*/
public final class LazilyLoadedCtor implements java.io.Serializable {
- private static final long serialVersionUID = 1L;
+ private static final long serialVersionUID = 1L;
private static final int STATE_BEFORE_INIT = 0;
private static final int STATE_INITIALIZING = 1;
diff --git a/src/org/mozilla/javascript/MemberBox.java b/src/org/mozilla/javascript/MemberBox.java
index 140dee48..4b1de26c 100644
--- a/src/org/mozilla/javascript/MemberBox.java
+++ b/src/org/mozilla/javascript/MemberBox.java
@@ -6,8 +6,15 @@
package org.mozilla.javascript;
-import java.lang.reflect.*;
-import java.io.*;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Member;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
/**
* Wrappper class for Method and Constructor instances to cache
@@ -25,7 +32,37 @@ final class MemberBox implements Serializable
transient Class>[] argTypes;
transient Object delegateTo;
transient boolean vararg;
+ transient Function asFunction;
+ /**
+ * Function returned by calls to __lookupGetter__/__lookupSetter__
+ */
+ Function asFunction(final String name, final Scriptable scope, final Scriptable prototype) {
+ if (asFunction == null) {
+ asFunction = new BaseFunction(scope, prototype) {
+ @Override
+ public Object call(Context cx, Scriptable scope, Scriptable thisObj, Object[] originalArgs) {
+ MemberBox nativeGetter = MemberBox.this;
+ Object getterThis;
+ Object[] args;
+ if (nativeGetter.delegateTo == null) {
+ getterThis = thisObj;
+ args = ScriptRuntime.emptyArgs;
+ } else {
+ getterThis = nativeGetter.delegateTo;
+ args = new Object[] { thisObj };
+ }
+ return nativeGetter.invoke(getterThis, args);
+ }
+
+ @Override
+ public String getFunctionName() {
+ return name;
+ }
+ };
+ }
+ return asFunction;
+ }
MemberBox(Method method)
{
@@ -41,14 +78,14 @@ final class MemberBox implements Serializable
{
this.memberObject = method;
this.argTypes = method.getParameterTypes();
- this.vararg = method.isVarArgs();
+ this.vararg = VMBridge.instance.isVarArgs(method);
}
private void init(Constructor> constructor)
{
this.memberObject = constructor;
this.argTypes = constructor.getParameterTypes();
- this.vararg = constructor.isVarArgs();
+ this.vararg = VMBridge.instance.isVarArgs(constructor);
}
Method method()
@@ -115,12 +152,32 @@ final class MemberBox implements Serializable
@Override
public String toString()
{
- return memberObject.toString();
+ Context context = Context.getCurrentContext();
+ if (!context.hasFeature(Context.FEATURE_HTMLUNIT_MEMBERBOX_NAME)) {
+ return "function () { [native code] }";
+ }
+ String name = memberObject.getName();
+ name = Character.toLowerCase(name.charAt(3)) + name.substring(4);
+ if (context.hasFeature(Context.FEATURE_HTMLUNIT_MEMBERBOX_NEWLINE)) {
+ return "\nfunction " + name + "() {\n [native code]\n}\n";
+ }
+ return "function " + name + "() {\n [native code]\n}";
}
Object invoke(Object target, Object[] args)
{
Method method = method();
+
+ // handle delegators
+ if (target instanceof Delegator) {
+ target = ((Delegator) target).getDelegee();
+ }
+ for (int i=0; i klass = Class.forName("java.util.Arrays$LegacyMergeSort");
+ Field field = klass.getDeclaredField("userRequested");
+ field.setAccessible(true);
+
+ Field modifiersField = Field.class.getDeclaredField("modifiers");
+ modifiersField.setAccessible(true);
+ modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
+
+ field.setBoolean(null, true);
+ }
+ catch (final Exception e) {
+ // RIP
+ }
+ }
static final long serialVersionUID = 7331366857676127338L;
/*
@@ -136,48 +159,46 @@ public class NativeArray extends IdScriptableObject implements List
@Override
protected void fillConstructorProperties(IdFunctionObject ctor)
{
- addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_join,
- "join", 1);
- addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_reverse,
- "reverse", 0);
- addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_sort,
- "sort", 1);
- addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_push,
- "push", 1);
- addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_pop,
- "pop", 0);
- addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_shift,
- "shift", 0);
- addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_unshift,
- "unshift", 1);
- addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_splice,
- "splice", 2);
- addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_concat,
- "concat", 1);
- addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_slice,
- "slice", 2);
- addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_indexOf,
- "indexOf", 1);
- addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_lastIndexOf,
- "lastIndexOf", 1);
- addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_every,
- "every", 1);
- addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_filter,
- "filter", 1);
- addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_forEach,
- "forEach", 1);
- addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_map,
- "map", 1);
- addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_some,
- "some", 1);
- addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_find,
- "find", 1);
- addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_findIndex,
- "findIndex", 1);
- addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_reduce,
- "reduce", 1);
- addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_reduceRight,
- "reduceRight", 1);
+ if (Context.getCurrentContext().hasFeature(Context.FEATURE_HTMLUNIT_ARRAY_PROPERTIES)) {
+ addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_join,
+ "join", 1);
+ addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_reverse,
+ "reverse", 0);
+ addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_sort,
+ "sort", 1);
+ addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_push,
+ "push", 1);
+ addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_pop,
+ "pop", 0);
+ addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_shift,
+ "shift", 0);
+ addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_unshift,
+ "unshift", 1);
+ addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_splice,
+ "splice", 2);
+ addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_concat,
+ "concat", 1);
+ addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_slice,
+ "slice", 2);
+ addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_indexOf,
+ "indexOf", 1);
+ addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_lastIndexOf,
+ "lastIndexOf", 1);
+ addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_every,
+ "every", 1);
+ addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_filter,
+ "filter", 1);
+ addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_forEach,
+ "forEach", 1);
+ addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_map,
+ "map", 1);
+ addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_some,
+ "some", 1);
+ addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_reduce,
+ "reduce", 1);
+ addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_reduceRight,
+ "reduceRight", 1);
+ }
addIdFunctionProperty(ctor, ARRAY_TAG, ConstructorId_isArray,
"isArray", 1);
super.fillConstructorProperties(ctor);
@@ -186,11 +207,6 @@ public class NativeArray extends IdScriptableObject implements List
@Override
protected void initPrototypeId(int id)
{
- if (id == SymbolId_iterator) {
- initPrototypeMethod(ARRAY_TAG, id, SymbolKey.ITERATOR, "[Symbol.iterator]", 0);
- return;
- }
-
String s, fnName = null;
int arity;
switch (id) {
@@ -219,6 +235,7 @@ public class NativeArray extends IdScriptableObject implements List
case Id_findIndex: arity=1; s="findIndex"; break;
case Id_reduce: arity=1; s="reduce"; break;
case Id_reduceRight: arity=1; s="reduceRight"; break;
+ case Id_iterator: arity=0; s= ITERATOR_PROPERTY; fnName="[Symbol.iterator]"; break;
default: throw new IllegalArgumentException(String.valueOf(id));
}
@@ -257,11 +274,6 @@ public class NativeArray extends IdScriptableObject implements List
case ConstructorId_findIndex:
case ConstructorId_reduce:
case ConstructorId_reduceRight: {
- // this is a small trick; we will handle all the ConstructorId_xxx calls
- // the same way the object calls are processed
- // so we adjust the args, inverting the id and
- // restarting the method selection
- // Attention: the implementations have to be aware of this
if (args.length > 0) {
thisObj = ScriptRuntime.toObject(cx, scope, args[0]);
Object[] newArgs = new Object[args.length-1];
@@ -343,7 +355,7 @@ public class NativeArray extends IdScriptableObject implements List
case Id_reduceRight:
return reduceMethod(cx, id, scope, thisObj, args);
- case SymbolId_iterator:
+ case Id_iterator:
return new NativeArrayIterator(scope, thisObj);
}
throw new IllegalArgumentException("Array.prototype has no method: " + f.getFunctionName());
@@ -484,9 +496,9 @@ public class NativeArray extends IdScriptableObject implements List
}
@Override
- public Object[] getIds(boolean nonEnumerable, boolean getSymbols)
+ public Object[] getIds()
{
- Object[] superIds = super.getIds(nonEnumerable, getSymbols);
+ Object[] superIds = super.getIds();
if (dense == null) { return superIds; }
int N = dense.length;
long currentLength = length;
@@ -515,6 +527,15 @@ public class NativeArray extends IdScriptableObject implements List
return ids;
}
+ @Override
+ public Object[] getAllIds()
+ {
+ Set allIds = new LinkedHashSet(
+ Arrays.asList(this.getIds()));
+ allIds.addAll(Arrays.asList(super.getAllIds()));
+ return allIds.toArray();
+ }
+
public Integer[] getIndexIds() {
Object[] ids = getIds();
java.util.List indices = new java.util.ArrayList(ids.length);
@@ -998,25 +1019,51 @@ public class NativeArray extends IdScriptableObject implements List
.getValueFunctionAndThis(args[0], cx);
final Scriptable funThis = ScriptRuntime.lastStoredScriptable(cx);
final Object[] cmpBuf = new Object[2]; // Buffer for cmp arguments
- comparator = new ElementComparator(
- new Comparator() {
- public int compare(final Object x, final Object y) {
- // This comparator is invoked only for non-undefined objects
+ comparator = new Comparator() {
+ public int compare(final Object x, final Object y) {
+ // sort undefined to end
+ if (x == NOT_FOUND) {
+ return y == NOT_FOUND ? 0 : 1;
+ } else if (y == NOT_FOUND) {
+ return -1;
+ } else if (x == Undefined.instance) {
+ return y == Undefined.instance ? 0 : 1;
+ } else if (y == Undefined.instance) {
+ return -1;
+ }
+
cmpBuf[0] = x;
cmpBuf[1] = y;
Object ret = jsCompareFunction.call(cx, scope, funThis,
- cmpBuf);
+ cmpBuf);
final double d = ScriptRuntime.toNumber(ret);
if (d < 0) {
- return -1;
+ return -1;
} else if (d > 0) {
- return +1;
+ return +1;
}
return 0; // ??? double and 0???
- }
- });
+ }
+ };
} else {
- comparator = DEFAULT_COMPARATOR;
+ comparator = new Comparator() {
+ public int compare(final Object x, final Object y) {
+ // sort undefined to end
+ if (x == NOT_FOUND) {
+ return y == NOT_FOUND ? 0 : 1;
+ } else if (y == NOT_FOUND) {
+ return -1;
+ } else if (x == Undefined.instance) {
+ return y == Undefined.instance ? 0 : 1;
+ } else if (y == Undefined.instance) {
+ return -1;
+ }
+
+ final String a = ScriptRuntime.toString(x);
+ final String b = ScriptRuntime.toString(y);
+ return a.compareTo(b);
+ }
+ };
}
long llength = getLengthProperty(cx, thisObj);
@@ -1032,7 +1079,7 @@ public class NativeArray extends IdScriptableObject implements List
working[i] = getRawElem(thisObj, i);
}
- Sorting.hybridSort(working, comparator);
+ Arrays.sort(working, comparator);
// copy the working array back into thisObj
for (int i = 0; i < length; ++i) {
@@ -1195,8 +1242,8 @@ public class NativeArray extends IdScriptableObject implements List
private static Object js_splice(Context cx, Scriptable scope,
Scriptable thisObj, Object[] args)
{
- NativeArray na = null;
- boolean denseMode = false;
+ NativeArray na = null;
+ boolean denseMode = false;
if (thisObj instanceof NativeArray) {
na = (NativeArray) thisObj;
denseMode = na.denseOnly;
@@ -1250,7 +1297,7 @@ public class NativeArray extends IdScriptableObject implements List
*/
result = getElem(cx, thisObj, begin);
} else {
- if (denseMode) {
+ if (denseMode) {
int intLen = (int) (end - begin);
Object[] copy = new Object[intLen];
System.arraycopy(na.dense, (int) begin, copy, 0, intLen);
@@ -1266,10 +1313,10 @@ public class NativeArray extends IdScriptableObject implements List
// Need to set length for sparse result array
setLengthProperty(cx, resultArray, end - begin);
result = resultArray;
- }
+ }
}
} else { // (count == 0)
- if (cx.getLanguageVersion() == Context.VERSION_1_2) {
+ if (cx.getLanguageVersion() == Context.VERSION_1_2) {
/* Emulate C JS1.2; if no elements are removed, return undefined. */
result = Undefined.instance;
} else {
@@ -1575,11 +1622,8 @@ public class NativeArray extends IdScriptableObject implements List
private static Object iterativeMethod(Context cx, IdFunctionObject idFunctionObject, Scriptable scope,
Scriptable thisObj, Object[] args)
{
- // execIdCall(..) uses a trick for all the ConstructorId_xxx calls
- // they are handled like object calls by adjusting the args list
- // as a result we have to handle ConstructorId_xxx calls (negative id)
- // the same way and always us the abs value of the id for method selection
int id = Math.abs(idFunctionObject.methodId());
+
if (Id_find == id || Id_findIndex == id) thisObj = requireObjectCoercible(cx, thisObj, idFunctionObject);
long length = getLengthProperty(cx, thisObj);
@@ -1932,76 +1976,13 @@ public class NativeArray extends IdScriptableObject implements List
throw new UnsupportedOperationException();
}
- @Override
- protected int findPrototypeId(Symbol k)
- {
- if (SymbolKey.ITERATOR.equals(k)) {
- return SymbolId_iterator;
- }
- return 0;
- }
-
- // Comparators for the js_sort method. Putting them here lets us unit-test them better.
-
- private static final Comparator STRING_COMPARATOR = new StringLikeComparator();
- private static final Comparator DEFAULT_COMPARATOR = new ElementComparator();
-
- public static final class StringLikeComparator
- implements Comparator {
-
- public int compare(final Object x, final Object y) {
- final String a = ScriptRuntime.toString(x);
- final String b = ScriptRuntime.toString(y);
- return a.compareTo(b);
- }
- }
-
- public static final class ElementComparator
- implements Comparator {
-
- private final Comparator child;
-
- public ElementComparator() {
- child = STRING_COMPARATOR;
- }
-
- public ElementComparator(Comparator c) {
- child = c;
- }
-
- public int compare(final Object x, final Object y) {
- // Sort NOT_FOUND to very end, Undefined before that, exclusively, as per
- // ECMA 22.1.3.25.1.
- if (x == Undefined.instance) {
- if (y == Undefined.instance) {
- return 0;
- }
- if (y == NOT_FOUND) {
- return -1;
- }
- return 1;
- } else if (x == NOT_FOUND) {
- return y == NOT_FOUND ? 0 : 1;
- }
-
- if (y == NOT_FOUND) {
- return -1;
- }
- if (y == Undefined.instance) {
- return -1;
- }
-
- return child.compare(x, y);
- }
- }
-
// #string_id_map#
@Override
protected int findPrototypeId(String s)
{
int id;
-// #generated# Last update: 2016-03-04 20:46:26 GMT
+// #generated# Last update: 2015-02-24 17:45:09 PST
L0: { id = 0; String X = null; int c;
L: switch (s.length()) {
case 3: c=s.charAt(0);
@@ -2037,6 +2018,7 @@ public class NativeArray extends IdScriptableObject implements List
else if (c=='t') { X="toString";id=Id_toString; }
break L;
case 9: X="findIndex";id=Id_findIndex; break L;
+ case 10: X="@@iterator";id=Id_iterator; break L;
case 11: c=s.charAt(0);
if (c=='c') { X="constructor";id=Id_constructor; }
else if (c=='l') { X="lastIndexOf";id=Id_lastIndexOf; }
@@ -2077,9 +2059,9 @@ public class NativeArray extends IdScriptableObject implements List
Id_findIndex = 23,
Id_reduce = 24,
Id_reduceRight = 25,
- SymbolId_iterator = 26,
+ Id_iterator = 26,
- MAX_PROTOTYPE_ID = SymbolId_iterator;
+ MAX_PROTOTYPE_ID = 26;
// #/string_id_map#
diff --git a/src/org/mozilla/javascript/NativeBoolean.java b/src/org/mozilla/javascript/NativeBoolean.java
index 2ab42ab4..d83f7920 100644
--- a/src/org/mozilla/javascript/NativeBoolean.java
+++ b/src/org/mozilla/javascript/NativeBoolean.java
@@ -74,7 +74,7 @@ final class NativeBoolean extends IdScriptableObject
} else {
b = args[0] instanceof ScriptableObject &&
((ScriptableObject) args[0]).avoidObjectDetection()
- ? true
+ ? false
: ScriptRuntime.toBoolean(args[0]);
}
if (thisObj == null) {
diff --git a/src/org/mozilla/javascript/NativeCall.java b/src/org/mozilla/javascript/NativeCall.java
index 3bca84b9..7df79f09 100644
--- a/src/org/mozilla/javascript/NativeCall.java
+++ b/src/org/mozilla/javascript/NativeCall.java
@@ -6,6 +6,8 @@
package org.mozilla.javascript;
+import org.mozilla.javascript.debug.DebuggableScript;
+
/**
* This class implements the activation object.
*
@@ -63,8 +65,23 @@ public final class NativeCall extends IdScriptableObject
if (!super.has(name, this)) {
if (function.getParamOrVarConst(i))
defineProperty(name, Undefined.instance, CONST);
- else
- defineProperty(name, Undefined.instance, PERMANENT);
+ else {
+ boolean define = true;
+ if (function instanceof InterpretedFunction) {
+ InterpreterData idata = ((InterpretedFunction) function).idata;
+ for (int f = 0; f < idata.getFunctionCount(); f++) {
+ final InterpreterData functionData = (InterpreterData) idata.getFunction(f);
+ if (!functionData.declaredAsFunctionExpression
+ && name.equals(functionData.getFunctionName())) {
+ define = functionData.declaredAsVar; // define local property only for inner functions declared with var
+ break;
+ }
+ }
+ }
+ if (define) {
+ defineProperty(name, Undefined.instance, PERMANENT);
+ }
+ }
}
}
}
diff --git a/src/org/mozilla/javascript/NativeError.java b/src/org/mozilla/javascript/NativeError.java
index 914e518b..c22b3eb0 100644
--- a/src/org/mozilla/javascript/NativeError.java
+++ b/src/org/mozilla/javascript/NativeError.java
@@ -79,6 +79,10 @@ final class NativeError extends IdScriptableObject
}
}
}
+ if (!(scope instanceof NativeObject) && Context.getContext().hasFeature(Context.FEATURE_HTMLUNIT_ERROR_STACK)) {
+ EcmaError er = ScriptRuntime.constructError("", "");
+ obj.setStackProvider(er);
+ }
return obj;
}
@@ -161,6 +165,7 @@ final class NativeError extends IdScriptableObject
// generated on demand, is cached after the first access, and is
// overwritable like an ordinary property. Hence this setup with
// the getter and setter below.
+
if (stackProvider == null) {
stackProvider = re;
defineProperty("stack", this,
@@ -192,11 +197,14 @@ final class NativeError extends IdScriptableObject
// Determine whether to format the stack trace ourselves, or call the user's code to do it
Object value;
if (prepare == null) {
+ RhinoException.useMozillaStackStyle(true);
value = RhinoException.formatStackTrace(stack, stackProvider.details());
+ RhinoException.useMozillaStackStyle(false);
} else {
value = callPrepareStack(prepare, stack);
}
+ RhinoException.useMozillaStackStyle(false);
// We store the stack as local property both to cache it
// and to make the property writable
setStackDelegated(target, value);
diff --git a/src/org/mozilla/javascript/NativeGlobal.java b/src/org/mozilla/javascript/NativeGlobal.java
index bd06aa5e..bd605679 100644
--- a/src/org/mozilla/javascript/NativeGlobal.java
+++ b/src/org/mozilla/javascript/NativeGlobal.java
@@ -9,6 +9,7 @@ package org.mozilla.javascript;
import java.io.Serializable;
import org.mozilla.javascript.xml.XMLLib;
+
import static org.mozilla.javascript.ScriptableObject.DONTENUM;
import static org.mozilla.javascript.ScriptableObject.READONLY;
import static org.mozilla.javascript.ScriptableObject.PERMANENT;
@@ -242,9 +243,6 @@ public class NativeGlobal implements Serializable, IdFunctionCall
if (c == 'x' || c == 'X') {
radix = 16;
start += 2;
- } else if ('0' <= c && c <= '9') {
- radix = 8;
- start++;
}
}
}
diff --git a/src/org/mozilla/javascript/NativeJSON.java b/src/org/mozilla/javascript/NativeJSON.java
index 4cc8aa0f..ae6e7345 100644
--- a/src/org/mozilla/javascript/NativeJSON.java
+++ b/src/org/mozilla/javascript/NativeJSON.java
@@ -92,11 +92,11 @@ public final class NativeJSON extends IdScriptableObject
case Id_stringify: {
Object value = null, replacer = null, space = null;
switch (args.length) {
+ default:
case 3: space = args[2];
- /* fallthru */ case 2: replacer = args[1];
- /* fallthru */ case 1: value = args[0];
- /* fallthru */ case 0:
- /* fallthru */ default:
+ case 2: replacer = args[1];
+ case 1: value = args[0];
+ case 0:
}
return stringify(cx, scope, value, replacer, space);
}
diff --git a/src/org/mozilla/javascript/NativeJavaObject.java b/src/org/mozilla/javascript/NativeJavaObject.java
index 4432bd94..bb2fa79b 100644
--- a/src/org/mozilla/javascript/NativeJavaObject.java
+++ b/src/org/mozilla/javascript/NativeJavaObject.java
@@ -807,7 +807,8 @@ public class NativeJavaObject implements Scriptable, Wrapper, Serializable
else {
Method meth;
try {
- meth = value.getClass().getMethod("doubleValue", (Class [])null);
+ meth = value.getClass().getMethod("doubleValue",
+ (Class [])null);
}
catch (NoSuchMethodException e) {
meth = null;
@@ -817,7 +818,8 @@ public class NativeJavaObject implements Scriptable, Wrapper, Serializable
}
if (meth != null) {
try {
- return ((Number)meth.invoke(value, (Object [])null)).doubleValue();
+ return ((Number)meth.invoke(value,
+ (Object [])null)).doubleValue();
}
catch (IllegalAccessException e) {
// XXX: ignore, or error message?
diff --git a/src/org/mozilla/javascript/NativeObject.java b/src/org/mozilla/javascript/NativeObject.java
index 62c68192..0ac1bd6b 100644
--- a/src/org/mozilla/javascript/NativeObject.java
+++ b/src/org/mozilla/javascript/NativeObject.java
@@ -6,7 +6,13 @@
package org.mozilla.javascript;
-import java.util.*;
+import java.util.AbstractCollection;
+import java.util.AbstractSet;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.NoSuchElementException;
+import java.util.Set;
/**
* This class implements the Object native object.
@@ -46,8 +52,6 @@ public class NativeObject extends IdScriptableObject implements Map
"keys", 1);
addIdFunctionProperty(ctor, OBJECT_TAG, ConstructorId_getOwnPropertyNames,
"getOwnPropertyNames", 1);
- addIdFunctionProperty(ctor, OBJECT_TAG, ConstructorId_getOwnPropertySymbols,
- "getOwnPropertySymbols", 1);
addIdFunctionProperty(ctor, OBJECT_TAG, ConstructorId_getOwnPropertyDescriptor,
"getOwnPropertyDescriptor", 2);
addIdFunctionProperty(ctor, OBJECT_TAG, ConstructorId_defineProperty,
@@ -70,8 +74,6 @@ public class NativeObject extends IdScriptableObject implements Map
"freeze", 1);
addIdFunctionProperty(ctor, OBJECT_TAG, ConstructorId_assign,
"assign", 2);
- addIdFunctionProperty(ctor, OBJECT_TAG, ConstructorId_is,
- "is", 2);
super.fillConstructorProperties(ctor);
}
@@ -152,50 +154,36 @@ public class NativeObject extends IdScriptableObject implements Map
return thisObj;
case Id_hasOwnProperty: {
- boolean result;
- Object arg = args.length < 1 ? Undefined.instance : args[0];
- if (arg instanceof Symbol) {
- result = ensureSymbolScriptable(thisObj).has((Symbol) arg, thisObj);
- } else {
- String s = ScriptRuntime.toStringIdOrIndex(cx, arg);
- if (s == null) {
- int index = ScriptRuntime.lastIndexResult(cx);
- result = thisObj.has(index, thisObj);
- } else {
- result = thisObj.has(s, thisObj);
- }
- }
- return ScriptRuntime.wrapBoolean(result);
+ boolean result;
+ Object arg = args.length < 1 ? Undefined.instance : args[0];
+ String s = ScriptRuntime.toStringIdOrIndex(cx, arg);
+ if (s == null) {
+ int index = ScriptRuntime.lastIndexResult(cx);
+ result = thisObj.has(index, thisObj);
+ } else {
+ result = thisObj.has(s, thisObj);
+ }
+ return ScriptRuntime.wrapBoolean(result);
}
case Id_propertyIsEnumerable: {
boolean result;
Object arg = args.length < 1 ? Undefined.instance : args[0];
-
- if (arg instanceof Symbol) {
- result = ((SymbolScriptable)thisObj).has((Symbol)arg, thisObj);
+ String s = ScriptRuntime.toStringIdOrIndex(cx, arg);
+ if (s == null) {
+ int index = ScriptRuntime.lastIndexResult(cx);
+ result = thisObj.has(index, thisObj);
if (result && thisObj instanceof ScriptableObject) {
ScriptableObject so = (ScriptableObject)thisObj;
- int attrs = so.getAttributes((Symbol)arg);
+ int attrs = so.getAttributes(index);
result = ((attrs & ScriptableObject.DONTENUM) == 0);
}
} else {
- String s = ScriptRuntime.toStringIdOrIndex(cx, arg);
- if (s == null) {
- int index = ScriptRuntime.lastIndexResult(cx);
- result = thisObj.has(index, thisObj);
- if (result && thisObj instanceof ScriptableObject) {
- ScriptableObject so = (ScriptableObject) thisObj;
- int attrs = so.getAttributes(index);
- result = ((attrs & ScriptableObject.DONTENUM) == 0);
- }
- } else {
- result = thisObj.has(s, thisObj);
- if (result && thisObj instanceof ScriptableObject) {
- ScriptableObject so = (ScriptableObject) thisObj;
- int attrs = so.getAttributes(s);
- result = ((attrs & ScriptableObject.DONTENUM) == 0);
- }
+ result = thisObj.has(s, thisObj);
+ if (result && thisObj instanceof ScriptableObject) {
+ ScriptableObject so = (ScriptableObject)thisObj;
+ int attrs = so.getAttributes(s);
+ result = ((attrs & ScriptableObject.DONTENUM) == 0);
}
}
return ScriptRuntime.wrapBoolean(result);
@@ -272,15 +260,33 @@ public class NativeObject extends IdScriptableObject implements Map
else
break;
}
- if (gs != null)
+ if (gs != null) {
+ if (gs instanceof MemberBox) {
+ gs = ((MemberBox) gs).asFunction(name, f.getParentScope(), f.getPrototype());
+ }
return gs;
+ }
}
return Undefined.instance;
case ConstructorId_getPrototypeOf:
{
Object arg = args.length < 1 ? Undefined.instance : args[0];
+
+ if (cx.hasFeature(Context.FEATURE_HTMLUNIT_GET_PROTOTYPE_OF_STRING)) {
+ if (arg instanceof String) {
+ return "";
+ }
+ else if (arg instanceof Number) {
+ return 0;
+ }
+ else if (arg instanceof Boolean) {
+ return false;
+ }
+ }
+
Scriptable obj = getCompatibleObject(cx, scope, arg);
+
return obj.getPrototype();
}
case ConstructorId_keys:
@@ -298,26 +304,12 @@ public class NativeObject extends IdScriptableObject implements Map
Object arg = args.length < 1 ? Undefined.instance : args[0];
Scriptable s = getCompatibleObject(cx, scope, arg);
ScriptableObject obj = ensureScriptableObject(s);
- Object[] ids = obj.getIds(true, false);
+ Object[] ids = obj.getAllIds();
for (int i = 0; i < ids.length; i++) {
ids[i] = ScriptRuntime.toString(ids[i]);
}
return cx.newArray(scope, ids);
}
- case ConstructorId_getOwnPropertySymbols:
- {
- Object arg = args.length < 1 ? Undefined.instance : args[0];
- Scriptable s = getCompatibleObject(cx, scope, arg);
- ScriptableObject obj = ensureScriptableObject(s);
- Object[] ids = obj.getIds(true, true);
- ArrayList syms = new ArrayList();
- for (int i = 0; i < ids.length; i++) {
- if (ids[i] instanceof Symbol) {
- syms.add(ids[i]);
- }
- }
- return cx.newArray(scope, syms.toArray());
- }
case ConstructorId_getOwnPropertyDescriptor:
{
Object arg = args.length < 1 ? Undefined.instance : args[0];
@@ -327,7 +319,8 @@ public class NativeObject extends IdScriptableObject implements Map
Scriptable s = getCompatibleObject(cx, scope, arg);
ScriptableObject obj = ensureScriptableObject(s);
Object nameArg = args.length < 2 ? Undefined.instance : args[1];
- Scriptable desc = obj.getOwnPropertyDescriptor(cx, nameArg);
+ String name = ScriptRuntime.toString(nameArg);
+ Scriptable desc = obj.getOwnPropertyDescriptor(cx, name);
return desc == null ? Undefined.instance : desc;
}
case ConstructorId_defineProperty:
@@ -443,43 +436,19 @@ public class NativeObject extends IdScriptableObject implements Map
return obj;
}
-
case ConstructorId_assign:
- {
- if (args.length < 1) {
- throw ScriptRuntime.typeError1("msg.incompat.call", "assign");
- }
- Scriptable t = ScriptRuntime.toObject(cx, thisObj, args[0]);
- for (int i = 1; i < args.length; i++) {
- if ((args[i] == null) || Undefined.instance.equals(args[i])) {
- continue;
- }
- Scriptable s = ScriptRuntime.toObject(cx, thisObj, args[i]);
- Object[] ids = s.getIds();
- for (Object key : ids) {
- if (key instanceof String) {
- Object val = s.get((String) key, t);
- if ((val != Scriptable.NOT_FOUND) && (val != Undefined.instance)) {
- t.put((String) key, t, val);
- }
- } else if (key instanceof Number) {
- int ii = ScriptRuntime.toInt32(key);
- Object val = s.get(ii, t);
- if ((val != Scriptable.NOT_FOUND) && (val != Undefined.instance)) {
- t.put(ii, t, val);
+ {
+ ScriptableObject target = ensureScriptableObject(args[0]);
+ for (int i = 1; i < args.length; i++) {
+ if (args[i] != Undefined.instance && args[i] != null) {
+ ScriptableObject obj = ensureScriptableObject(args[i]);
+ for (Object objId : obj.getIds()) {
+ target.defineOwnProperty(cx, objId, obj.getOwnPropertyDescriptor(cx, objId));
+ }
+ }
}
- }
+ return target;
}
- }
- return t;
- }
-
- case ConstructorId_is:
- {
- Object a1 = args.length < 1 ? Undefined.instance : args[0];
- Object a2 = args.length < 2 ? Undefined.instance : args[1];
- return ScriptRuntime.wrapBoolean(ScriptRuntime.same(a1, a2));
- }
default:
@@ -746,15 +715,13 @@ public class NativeObject extends IdScriptableObject implements Map
ConstructorId_defineProperty = -5,
ConstructorId_isExtensible = -6,
ConstructorId_preventExtensions = -7,
- ConstructorId_defineProperties= -8,
+ ConstructorId_defineProperties = -8,
ConstructorId_create = -9,
ConstructorId_isSealed = -10,
ConstructorId_isFrozen = -11,
ConstructorId_seal = -12,
ConstructorId_freeze = -13,
- ConstructorId_getOwnPropertySymbols = -14,
- ConstructorId_assign = -15,
- ConstructorId_is = -16,
+ ConstructorId_assign = -14,
Id_constructor = 1,
Id_toString = 2,
diff --git a/src/org/mozilla/javascript/NativeString.java b/src/org/mozilla/javascript/NativeString.java
index d26aa3f7..d8766f94 100644
--- a/src/org/mozilla/javascript/NativeString.java
+++ b/src/org/mozilla/javascript/NativeString.java
@@ -11,6 +11,7 @@ import org.mozilla.javascript.regexp.NativeRegExp;
import java.text.Collator;
import java.text.Normalizer;
+import static org.mozilla.javascript.NativeSymbol.ITERATOR_PROPERTY;
import static org.mozilla.javascript.ScriptRuntime.rangeError;
import static org.mozilla.javascript.ScriptRuntimeES6.requireObjectCoercible;
@@ -127,11 +128,6 @@ final class NativeString extends IdScriptableObject
@Override
protected void initPrototypeId(int id)
{
- if (id == SymbolId_iterator) {
- initPrototypeMethod(STRING_TAG, id, SymbolKey.ITERATOR, "[Symbol.iterator]", 0);
- return;
- }
-
String s, fnName = null;
int arity;
switch (id) {
@@ -180,6 +176,7 @@ final class NativeString extends IdScriptableObject
case Id_normalize: arity=0; s="normalize"; break;
case Id_repeat: arity=1; s="repeat"; break;
case Id_codePointAt: arity=1; s="codePointAt"; break;
+ case Id_iterator: arity=0; s= ITERATOR_PROPERTY; fnName="[Symbol.iterator]"; break;
default: throw new IllegalArgumentException(String.valueOf(id));
}
initPrototypeMethod(STRING_TAG, id, s, fnName, arity);
@@ -240,17 +237,8 @@ final class NativeString extends IdScriptableObject
}
case Id_constructor: {
- CharSequence s;
- if (args.length == 0) {
- s = "";
- } else if
- (ScriptRuntime.isSymbol(args[0]) &&
- (thisObj != null)) {
- // 19.4.3.2 et.al. Convert a symbol to a string with String() but not new String()
- s = args[0].toString();
- } else {
- s = ScriptRuntime.toCharSequence(args[0]);
- }
+ CharSequence s = (args.length >= 1)
+ ? ScriptRuntime.toCharSequence(args[0]) : "";
if (thisObj == null) {
// new String(val) creates a new String object.
return new NativeString(s);
@@ -488,7 +476,7 @@ final class NativeString extends IdScriptableObject
: str.codePointAt((int) cnt);
}
- case SymbolId_iterator:
+ case Id_iterator:
return new NativeStringIterator(scope, thisObj);
}
@@ -557,20 +545,12 @@ final class NativeString extends IdScriptableObject
}
@Override
- public boolean has(int index, Scriptable start) {
- if (0 <= index && index < string.length()) {
- return true;
- }
- return super.has(index, start);
- }
-
- @Override
- protected Object[] getIds(boolean nonEnumerable, boolean getSymbols)
+ public Object[] getAllIds()
{
// In ES6, Strings have entries in the property map for each character.
Context cx = Context.getCurrentContext();
if ((cx != null) && (cx.getLanguageVersion() >= Context.VERSION_ES6)) {
- Object[] sids = super.getIds(nonEnumerable, getSymbols);
+ Object[] sids = super.getAllIds();
Object[] a = new Object[sids.length + string.length()];
int i;
for (i = 0; i < string.length(); i++) {
@@ -579,7 +559,7 @@ final class NativeString extends IdScriptableObject
System.arraycopy(sids, 0, a, i, sids.length);
return a;
}
- return super.getIds(nonEnumerable, getSymbols);
+ return super.getAllIds();
}
/*
@@ -795,22 +775,13 @@ final class NativeString extends IdScriptableObject
return retval.toString();
}
- @Override
- protected int findPrototypeId(Symbol k)
- {
- if (SymbolKey.ITERATOR.equals(k)) {
- return SymbolId_iterator;
- }
- return 0;
- }
-
// #string_id_map#
@Override
protected int findPrototypeId(String s)
{
int id;
-// #generated# Last update: 2016-03-04 20:51:44 GMT
+// #generated# Last update: 2015-05-06 14:41:38 PDT
L0: { id = 0; String X = null; int c;
L: switch (s.length()) {
case 3: c=s.charAt(2);
@@ -866,6 +837,7 @@ final class NativeString extends IdScriptableObject
case 10: c=s.charAt(0);
if (c=='c') { X="charCodeAt";id=Id_charCodeAt; }
else if (c=='s') { X="startsWith";id=Id_startsWith; }
+ else if (c=='@') { X="@@iterator";id=Id_iterator; }
break L;
case 11: switch (s.charAt(2)) {
case 'L': X="toLowerCase";id=Id_toLowerCase; break L;
@@ -936,8 +908,8 @@ final class NativeString extends IdScriptableObject
Id_normalize = 43,
Id_repeat = 44,
Id_codePointAt = 45,
- SymbolId_iterator = 46,
- MAX_PROTOTYPE_ID = SymbolId_iterator;
+ Id_iterator = 46,
+ MAX_PROTOTYPE_ID = Id_iterator;
// #/string_id_map#
diff --git a/src/org/mozilla/javascript/NativeSymbol.java b/src/org/mozilla/javascript/NativeSymbol.java
index ed976170..3c76cfd9 100644
--- a/src/org/mozilla/javascript/NativeSymbol.java
+++ b/src/org/mozilla/javascript/NativeSymbol.java
@@ -6,80 +6,20 @@
package org.mozilla.javascript;
-import java.util.HashMap;
-import java.util.Map;
+public class NativeSymbol extends IdScriptableObject {
-/**
- * This is an implementation of the standard "Symbol" type that implements
- * all of its weird properties. One of them is that some objects can have
- * an "internal data slot" that makes them a Symbol and others cannot.
- */
-
-public class NativeSymbol
- extends IdScriptableObject
- implements Symbol
-{
- private static final long serialVersionUID = -589539749749830003L;
+ public static final String SPECIES_PROPERTY = "@@species";
+ public static final String ITERATOR_PROPERTY = "@@iterator";
+ public static final String TO_STRING_TAG_PROPERTY = "@@toStringTag";
public static final String CLASS_NAME = "Symbol";
- public static final String TYPE_NAME = "symbol";
-
- private static final Object GLOBAL_TABLE_KEY = new Object();
- private static final Object CONSTRUCTOR_SLOT = new Object();
-
- private final SymbolKey key;
- private final NativeSymbol symbolData;
public static void init(Context cx, Scriptable scope, boolean sealed) {
- NativeSymbol obj = new NativeSymbol("");
- ScriptableObject ctor = obj.exportAsJSClass(MAX_PROTOTYPE_ID, scope, sealed);
-
- cx.putThreadLocal(CONSTRUCTOR_SLOT, Boolean.TRUE);
- try {
- createStandardSymbol(cx, scope, ctor, "iterator", SymbolKey.ITERATOR);
- createStandardSymbol(cx, scope, ctor, "species", SymbolKey.SPECIES);
- createStandardSymbol(cx, scope, ctor, "toStringTag", SymbolKey.TO_STRING_TAG);
- createStandardSymbol(cx, scope, ctor, "hasInstance", SymbolKey.HAS_INSTANCE);
- createStandardSymbol(cx, scope, ctor, "isConcatSpreadable", SymbolKey.IS_CONCAT_SPREADABLE);
- createStandardSymbol(cx, scope, ctor, "isRegExp", SymbolKey.IS_REGEXP);
- createStandardSymbol(cx, scope, ctor, "toPrimitive", SymbolKey.TO_PRIMITIVE);
- createStandardSymbol(cx, scope, ctor, "match", SymbolKey.MATCH);
- createStandardSymbol(cx, scope, ctor, "replace", SymbolKey.REPLACE);
- createStandardSymbol(cx, scope, ctor, "search", SymbolKey.SEARCH);
- createStandardSymbol(cx, scope, ctor, "split", SymbolKey.SPLIT);
- createStandardSymbol(cx, scope, ctor, "unscopables", SymbolKey.UNSCOPABLES);
- } finally {
- cx.removeThreadLocal(CONSTRUCTOR_SLOT);
- }
- }
-
- private NativeSymbol(String desc) {
- this.key = new SymbolKey(desc);
- this.symbolData = this;
- }
-
- private NativeSymbol(SymbolKey key) {
- this.key = key;
- this.symbolData = this;
- }
-
- public NativeSymbol(NativeSymbol s) {
- this.key = s.key;
- this.symbolData = s.symbolData;
+ NativeSymbol obj = new NativeSymbol();
+ obj.exportAsJSClass(MAX_PROTOTYPE_ID, scope, sealed);
}
- /**
- * Use this when we need to create symbols internally because of the convoluted way we have to
- * construct them.
- */
- public static NativeSymbol construct(Context cx, Scriptable scope, Object[] args)
- {
- cx.putThreadLocal(CONSTRUCTOR_SLOT, Boolean.TRUE);
- try {
- return (NativeSymbol)cx.newObject(scope, CLASS_NAME, args);
- } finally {
- cx.removeThreadLocal(CONSTRUCTOR_SLOT);
- }
+ private NativeSymbol() {
}
@Override
@@ -90,16 +30,9 @@ public class NativeSymbol
@Override
protected void fillConstructorProperties(IdFunctionObject ctor) {
super.fillConstructorProperties(ctor);
- addIdFunctionProperty(ctor, CLASS_NAME, ConstructorId_for, "for", 1);
- addIdFunctionProperty(ctor, CLASS_NAME, ConstructorId_keyFor, "keyFor", 1);
- }
-
- private static void createStandardSymbol(Context cx, Scriptable scope,
- ScriptableObject ctor,
- String name, SymbolKey key)
- {
- Scriptable sym = cx.newObject(scope, CLASS_NAME, new Object[] { name, key });
- ctor.defineProperty(name, sym, DONTENUM | READONLY | PERMANENT);
+ ctor.defineProperty("iterator", ITERATOR_PROPERTY, DONTENUM | READONLY | PERMANENT);
+ ctor.defineProperty("species", SPECIES_PROPERTY, DONTENUM | READONLY | PERMANENT);
+ ctor.defineProperty("toStringTag", TO_STRING_TAG_PROPERTY, DONTENUM | READONLY | PERMANENT);
}
// #string_id_map#
@@ -107,38 +40,19 @@ public class NativeSymbol
@Override
protected int findPrototypeId(String s) {
int id = 0;
-// #generated# Last update: 2016-01-26 16:39:41 PST
+// #generated# Last update: 2015-06-07 10:40:05 EEST
L0: { id = 0; String X = null;
- int s_length = s.length();
- if (s_length==7) { X="valueOf";id=Id_valueOf; }
- else if (s_length==8) { X="toString";id=Id_toString; }
- else if (s_length==11) { X="constructor";id=Id_constructor; }
+ if (s.length()==11) { X="constructor";id=Id_constructor; }
if (X!=null && X!=s && !X.equals(s)) id = 0;
break L0;
}
-// #/generated#
+// #/generated#
return id;
}
- @Override
- protected int findPrototypeId(Symbol key) {
- if (SymbolKey.TO_STRING_TAG.equals(key)) {
- return SymbolId_toStringTag;
- } else if (SymbolKey.TO_PRIMITIVE.equals(key)) {
- return SymbolId_toPrimitive;
- }
- return 0;
- }
-
private static final int
- ConstructorId_keyFor = -2,
- ConstructorId_for = -1,
Id_constructor = 1,
- Id_toString = 2,
- Id_valueOf = 4,
- SymbolId_toStringTag = 3,
- SymbolId_toPrimitive = 5,
- MAX_PROTOTYPE_ID = SymbolId_toPrimitive;
+ MAX_PROTOTYPE_ID = Id_constructor;
// #/string_id_map#
@@ -146,26 +60,13 @@ public class NativeSymbol
@Override
protected void initPrototypeId(int id)
{
+ String s = null;
+ int arity = -1;
switch (id) {
- case Id_constructor:
- initPrototypeMethod(CLASS_NAME, id, "constructor", 1);
- break;
- case Id_toString:
- initPrototypeMethod(CLASS_NAME, id, "toString", 0);
- break;
- case Id_valueOf:
- initPrototypeMethod(CLASS_NAME, id, "valueOf", 0);
- break;
- case SymbolId_toStringTag:
- initPrototypeValue(id, SymbolKey.TO_STRING_TAG, CLASS_NAME, DONTENUM | READONLY);
- break;
- case SymbolId_toPrimitive:
- initPrototypeMethod(CLASS_NAME, id, SymbolKey.TO_PRIMITIVE, "Symbol.toPrimitive", 1);
- break;
- default:
- super.initPrototypeId(id);
- break;
+ case Id_constructor: arity = 0; s = "constructor"; break;
+ default: super.initPrototypeId(id);
}
+ initPrototypeMethod(CLASS_NAME, id, s, arity);
}
@Override
@@ -175,169 +76,15 @@ public class NativeSymbol
}
int id = f.methodId();
switch (id) {
- case ConstructorId_for:
- return js_for(cx, scope, args);
- case ConstructorId_keyFor:
- return js_keyFor(cx, scope, args);
-
- case Id_constructor:
- if (thisObj == null) {
- if (cx.getThreadLocal(CONSTRUCTOR_SLOT) == null) {
- // We should never get to this via "new".
- throw ScriptRuntime.typeError0("msg.no.symbol.new");
- } else {
- // Unless we are being called by our own internal "new"
- return js_constructor(args);
- }
- } else {
- return construct(cx, scope, args);
- }
-
- case Id_toString:
- return getSelf(thisObj).toString();
- case Id_valueOf:
- case SymbolId_toPrimitive:
- return getSelf(thisObj).js_valueOf();
- default:
- return super.execIdCall(f, cx, scope, thisObj, args);
+ case Id_constructor:
+ return new NativeSymbol();
}
- }
+ return super.execIdCall(f, cx, scope, thisObj, args);
- private NativeSymbol getSelf(Object thisObj) {
- try {
- return (NativeSymbol)thisObj;
- } catch (ClassCastException cce) {
- throw ScriptRuntime.typeError1("msg.invalid.type", thisObj.getClass().getName());
- }
- }
-
- private static NativeSymbol js_constructor(Object[] args) {
- String desc;
- if (args.length > 0) {
- if (Undefined.instance.equals(args[0])) {
- desc = "";
- } else {
- desc = ScriptRuntime.toString(args[0]);
- }
- } else {
- desc = "";
- }
-
- if (args.length > 1) {
- return new NativeSymbol((SymbolKey) args[1]);
- }
-
- return new NativeSymbol(desc);
- }
-
- private Object js_valueOf() {
- // In the case that "Object()" was called we actually have a different "internal slot"
- return symbolData;
- }
-
- private Object js_for(Context cx, Scriptable scope, Object[] args) {
- String name = (args.length > 0 ? ScriptRuntime.toString(args[0]) : ScriptRuntime.toString(Undefined.instance));
-
- Map table = getGlobalMap();
- NativeSymbol ret = table.get(name);
-
- if (ret == null) {
- ret = construct(cx, scope, new Object[]{name});
- table.put(name, ret);
- }
- return ret;
- }
-
- private Object js_keyFor(Context cx, Scriptable scope, Object[] args) {
- Object s = (args.length > 0 ? args[0] : Undefined.instance);
- if (!(s instanceof NativeSymbol)) {
- throw ScriptRuntime.throwCustomError(cx, scope, "TypeError", "Not a Symbol");
- }
- NativeSymbol sym = (NativeSymbol)s;
-
- Map table = getGlobalMap();
- for (Map.Entry e : table.entrySet()) {
- if (e.getValue().key == sym.key) {
- return e.getKey();
- }
- }
- return Undefined.instance;
- }
-
- @Override
- public String toString() {
- return key.toString();
- }
-
- // Symbol objects have a special property that one cannot add properties.
-
- @Override
- public void put(String name, Scriptable start, Object value)
- {
- if (!isSymbol()) {
- super.put(name, start, value);
- } else if (Context.getCurrentContext().isStrictMode()) {
- throw ScriptRuntime.typeError0("msg.no.assign.symbol.strict");
- }
- }
-
- @Override
- public void put(int index, Scriptable start, Object value)
- {
- if (!isSymbol()) {
- super.put(index, start, value);
- } else if (Context.getCurrentContext().isStrictMode()) {
- throw ScriptRuntime.typeError0("msg.no.assign.symbol.strict");
- }
- }
-
- @Override
- public void put(Symbol key, Scriptable start, Object value)
- {
- if (!isSymbol()) {
- super.put(key, start, value);
- } else if (Context.getCurrentContext().isStrictMode()) {
- throw ScriptRuntime.typeError0("msg.no.assign.symbol.strict");
- }
- }
-
- /**
- * Object() on a Symbol constructs an object which is NOT a symbol, but which has an "internal data slot"
- * that is. Furthermore, such an object has the Symbol prototype so this particular object is still used.
- * Account for that here: an "Object" that was created from a Symbol has a different value of the slot.
- */
- public boolean isSymbol()
- {
- return (symbolData == this);
}
@Override
- public String getTypeOf()
- {
- return (isSymbol() ? TYPE_NAME : super.getTypeOf());
- }
-
- @Override
- public int hashCode() {
- return key.hashCode();
- }
-
- @Override
- public boolean equals(Object x) {
- return key.equals(x);
- }
-
- SymbolKey getKey() {
- return key;
- }
-
- private Map getGlobalMap() {
- ScriptableObject top = (ScriptableObject)getTopLevelScope(this);
- Map map = (Map)top.getAssociatedValue(GLOBAL_TABLE_KEY);
- if (map == null) {
- map = new HashMap();
- top.associateValue(GLOBAL_TABLE_KEY, map);
- }
- return map;
+ public String getTypeOf() {
+ return "symbol";
}
}
diff --git a/src/org/mozilla/javascript/NodeTransformer.java b/src/org/mozilla/javascript/NodeTransformer.java
index 11ea20e6..88f54508 100644
--- a/src/org/mozilla/javascript/NodeTransformer.java
+++ b/src/org/mozilla/javascript/NodeTransformer.java
@@ -6,14 +6,16 @@
package org.mozilla.javascript;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.mozilla.javascript.ast.AstRoot;
import org.mozilla.javascript.ast.FunctionNode;
import org.mozilla.javascript.ast.Jump;
+import org.mozilla.javascript.ast.Name;
import org.mozilla.javascript.ast.Scope;
import org.mozilla.javascript.ast.ScriptNode;
-import java.util.ArrayList;
-import java.util.List;
-
/**
* This class transforms a tree to a lower-level representation for codegen.
*
@@ -68,6 +70,34 @@ public class NodeTransformer
boolean createScopeObjects,
boolean inStrictMode)
{
+ if (parent instanceof Scope
+ && Context.getContext().hasFeature(Context.FEATURE_HTMLUNIT_FUNCTION_DECLARED_FORWARD_IN_BLOCK)) {
+ // Make sure that all "Name" children are at the start of all siblings
+ Node lastInitialName = null;
+ boolean initial = true;
+ Node node = parent.getFirstChild();
+ while (node != null) {
+ if (node instanceof Name) {
+ if (initial) {
+ lastInitialName = node;
+ }
+ else {
+ parent.removeChild(node);
+ if (lastInitialName == null) {
+ parent.addChildToFront(node);
+ }
+ else {
+ parent.addChildAfter(node, lastInitialName);
+ }
+ lastInitialName = node;
+ }
+ }
+ else {
+ initial = false;
+ }
+ node = node.getNext();
+ }
+ }
Node node = null;
siblingLoop:
for (;;) {
@@ -323,28 +353,27 @@ public class NodeTransformer
* for the following constructs: typeof o.p, if (o.p),
* if (!o.p), if (o.p == undefined), if (undefined == o.p)
*/
- Node child = node.getFirstChild();
- if (type == Token.IFNE) {
- while (child.getType() == Token.NOT) {
- child = child.getFirstChild();
- }
- if (child.getType() == Token.EQ ||
- child.getType() == Token.NE) {
- Node first = child.getFirstChild();
- Node last = child.getLastChild();
- if (first.getType() == Token.NAME &&
- first.getString().equals("undefined")) {
- child = last;
- } else if (last.getType() == Token.NAME &&
- last.getString().equals("undefined")) {
- child = first;
- }
- }
- }
- if (child.getType() == Token.GETPROP) {
- child.setType(Token.GETPROPNOWARN);
- }
- break;
+ Node child = node.getFirstChild();
+ if (type == Token.IFNE) {
+ while (child.getType() == Token.NOT) {
+ child = child.getFirstChild();
+ }
+ if (child.getType() == Token.EQ ||
+ child.getType() == Token.NE)
+ {
+ Node first = child.getFirstChild();
+ Node last = child.getLastChild();
+ if (first.getType() == Token.NAME &&
+ first.getString().equals("undefined"))
+ child = last;
+ else if (last.getType() == Token.NAME &&
+ last.getString().equals("undefined"))
+ child = first;
+ }
+ }
+ if (child.getType() == Token.GETPROP)
+ child.setType(Token.GETPROPNOWARN);
+ break;
}
case Token.SETNAME:
diff --git a/src/org/mozilla/javascript/ObjArray.java b/src/org/mozilla/javascript/ObjArray.java
index eeddb27f..09696d0a 100644
--- a/src/org/mozilla/javascript/ObjArray.java
+++ b/src/org/mozilla/javascript/ObjArray.java
@@ -174,21 +174,21 @@ public class ObjArray implements Serializable
case 0:
if (N == 0) { f0 = value; break; }
tmp = f0; f0 = value; value = tmp;
- /* fallthru */ case 1:
+ case 1:
if (N == 1) { f1 = value; break; }
tmp = f1; f1 = value; value = tmp;
- /* fallthru */ case 2:
+ case 2:
if (N == 2) { f2 = value; break; }
tmp = f2; f2 = value; value = tmp;
- /* fallthru */ case 3:
+ case 3:
if (N == 3) { f3 = value; break; }
tmp = f3; f3 = value; value = tmp;
- /* fallthru */ case 4:
+ case 4:
if (N == 4) { f4 = value; break; }
tmp = f4; f4 = value; value = tmp;
index = FIELDS_STORE_SIZE;
- /* fallthru */ default:
+ default:
ensureCapacity(N + 1);
if (index != N) {
System.arraycopy(data, index - FIELDS_STORE_SIZE,
@@ -210,21 +210,21 @@ public class ObjArray implements Serializable
case 0:
if (N == 0) { f0 = null; break; }
f0 = f1;
- /* fallthru */ case 1:
+ case 1:
if (N == 1) { f1 = null; break; }
f1 = f2;
- /* fallthru */ case 2:
+ case 2:
if (N == 2) { f2 = null; break; }
f2 = f3;
- /* fallthru */ case 3:
+ case 3:
if (N == 3) { f3 = null; break; }
f3 = f4;
- /* fallthru */ case 4:
+ case 4:
if (N == 4) { f4 = null; break; }
f4 = data[0];
index = FIELDS_STORE_SIZE;
- /* fallthru */ default:
+ default:
if (index != N) {
System.arraycopy(data, index - FIELDS_STORE_SIZE + 1,
data, index - FIELDS_STORE_SIZE,
@@ -264,12 +264,12 @@ public class ObjArray implements Serializable
default:
System.arraycopy(data, 0, array, offset + FIELDS_STORE_SIZE,
N - FIELDS_STORE_SIZE);
- /* fallthru */ case 5: array[offset + 4] = f4;
- /* fallthru */ case 4: array[offset + 3] = f3;
- /* fallthru */ case 3: array[offset + 2] = f2;
- /* fallthru */ case 2: array[offset + 1] = f1;
- /* fallthru */ case 1: array[offset + 0] = f0;
- /* fallthru */ case 0: break;
+ case 5: array[offset + 4] = f4;
+ case 4: array[offset + 3] = f3;
+ case 3: array[offset + 2] = f2;
+ case 2: array[offset + 1] = f1;
+ case 1: array[offset + 0] = f0;
+ case 0: break;
}
}
diff --git a/src/org/mozilla/javascript/Parser.java b/src/org/mozilla/javascript/Parser.java
index da03f0c7..ea10d5bd 100644
--- a/src/org/mozilla/javascript/Parser.java
+++ b/src/org/mozilla/javascript/Parser.java
@@ -6,71 +6,7 @@
package org.mozilla.javascript;
-import org.mozilla.javascript.ast.ArrayComprehension;
-import org.mozilla.javascript.ast.ArrayComprehensionLoop;
-import org.mozilla.javascript.ast.ArrayLiteral;
-import org.mozilla.javascript.ast.Assignment;
-import org.mozilla.javascript.ast.AstNode;
-import org.mozilla.javascript.ast.AstRoot;
-import org.mozilla.javascript.ast.Block;
-import org.mozilla.javascript.ast.BreakStatement;
-import org.mozilla.javascript.ast.CatchClause;
-import org.mozilla.javascript.ast.Comment;
-import org.mozilla.javascript.ast.ConditionalExpression;
-import org.mozilla.javascript.ast.ContinueStatement;
-import org.mozilla.javascript.ast.DestructuringForm;
-import org.mozilla.javascript.ast.DoLoop;
-import org.mozilla.javascript.ast.ElementGet;
-import org.mozilla.javascript.ast.EmptyExpression;
-import org.mozilla.javascript.ast.EmptyStatement;
-import org.mozilla.javascript.ast.ErrorNode;
-import org.mozilla.javascript.ast.ExpressionStatement;
-import org.mozilla.javascript.ast.ForInLoop;
-import org.mozilla.javascript.ast.ForLoop;
-import org.mozilla.javascript.ast.FunctionCall;
-import org.mozilla.javascript.ast.FunctionNode;
-import org.mozilla.javascript.ast.GeneratorExpression;
-import org.mozilla.javascript.ast.GeneratorExpressionLoop;
-import org.mozilla.javascript.ast.IdeErrorReporter;
-import org.mozilla.javascript.ast.IfStatement;
-import org.mozilla.javascript.ast.InfixExpression;
-import org.mozilla.javascript.ast.Jump;
-import org.mozilla.javascript.ast.KeywordLiteral;
-import org.mozilla.javascript.ast.Label;
-import org.mozilla.javascript.ast.LabeledStatement;
-import org.mozilla.javascript.ast.LetNode;
-import org.mozilla.javascript.ast.Loop;
-import org.mozilla.javascript.ast.Name;
-import org.mozilla.javascript.ast.NewExpression;
-import org.mozilla.javascript.ast.NumberLiteral;
-import org.mozilla.javascript.ast.ObjectLiteral;
-import org.mozilla.javascript.ast.ObjectProperty;
-import org.mozilla.javascript.ast.ParenthesizedExpression;
-import org.mozilla.javascript.ast.PropertyGet;
-import org.mozilla.javascript.ast.RegExpLiteral;
-import org.mozilla.javascript.ast.ReturnStatement;
-import org.mozilla.javascript.ast.Scope;
-import org.mozilla.javascript.ast.ScriptNode;
-import org.mozilla.javascript.ast.StringLiteral;
-import org.mozilla.javascript.ast.SwitchCase;
-import org.mozilla.javascript.ast.SwitchStatement;
-import org.mozilla.javascript.ast.Symbol;
-import org.mozilla.javascript.ast.ThrowStatement;
-import org.mozilla.javascript.ast.TryStatement;
-import org.mozilla.javascript.ast.UnaryExpression;
-import org.mozilla.javascript.ast.VariableDeclaration;
-import org.mozilla.javascript.ast.VariableInitializer;
-import org.mozilla.javascript.ast.WhileLoop;
-import org.mozilla.javascript.ast.WithStatement;
-import org.mozilla.javascript.ast.XmlDotQuery;
-import org.mozilla.javascript.ast.XmlElemRef;
-import org.mozilla.javascript.ast.XmlExpression;
-import org.mozilla.javascript.ast.XmlLiteral;
-import org.mozilla.javascript.ast.XmlMemberGet;
-import org.mozilla.javascript.ast.XmlPropRef;
-import org.mozilla.javascript.ast.XmlRef;
-import org.mozilla.javascript.ast.XmlString;
-import org.mozilla.javascript.ast.Yield;
+import org.mozilla.javascript.ast.*; // we use basically every class
import java.io.BufferedReader;
import java.io.IOException;
@@ -635,6 +571,17 @@ public class Parser
n = function(calledByCompileFunction
? FunctionNode.FUNCTION_EXPRESSION
: FunctionNode.FUNCTION_STATEMENT);
+ FunctionNode functionNode = (FunctionNode) n;
+ if (functionNode.getName().indexOf('.') != -1) {
+ String functionName = functionNode.getName();
+ String left = functionName.substring(0, functionName.indexOf('.'));
+ String right = functionName.substring(functionName.indexOf('.') + 1);
+ PropertyGet propertyGet = new PropertyGet(new Name(0, left), new Name(0, right));
+ Assignment assignment = new Assignment(Token.ASSIGN, propertyGet, functionNode, -1);
+ functionNode.setFunctionName(null);
+ functionNode.setFunctionType(FunctionNode.FUNCTION_EXPRESSION);
+ n = new ExpressionStatement(assignment, !insideFunction());
+ }
} catch (ParserException e) {
break;
}
@@ -808,12 +755,7 @@ public class Parser
destructuring.put(pname, expr);
} else {
if (mustMatchToken(Token.NAME, "msg.no.parm")) {
- Name paramNameNode = createNameNode();
- Comment jsdocNodeForName = getAndResetJsDoc();
- if (jsdocNodeForName != null) {
- paramNameNode.setJsDocNode(jsdocNodeForName);
- }
- fnNode.addParam(paramNameNode);
+ fnNode.addParam(createNameNode());
String paramName = ts.getString();
defineSymbol(Token.LP, paramName);
if (this.inUseStrictDirective) {
@@ -1589,12 +1531,7 @@ public class Parser
lp = ts.tokenBeg;
mustMatchToken(Token.NAME, "msg.bad.catchcond");
-
Name varName = createNameNode();
- Comment jsdocNodeForName = getAndResetJsDoc();
- if (jsdocNodeForName != null) {
- varName.setJsDocNode(jsdocNodeForName);
- }
String varNameString = varName.getIdentifier();
if (inUseStrictDirective) {
if ("eval".equals(varNameString) ||
@@ -3074,6 +3011,9 @@ public class Parser
pos = ts.tokenBeg; end = ts.tokenEnd;
return new KeywordLiteral(pos, end - pos, tt);
+ case Token.RP:
+ return new EmptyExpression();
+
case Token.RESERVED:
consumeToken();
reportError("msg.reserved.id");
@@ -3106,7 +3046,7 @@ public class Parser
Comment jsdocNode = getAndResetJsDoc();
int lineno = ts.lineno;
int begin = ts.tokenBeg;
- AstNode e = (peekToken() == Token.RP ? new EmptyExpression() : expr());
+ AstNode e = expr();
if (peekToken() == Token.FOR) {
return generatorExpression(e, begin);
}
diff --git a/src/org/mozilla/javascript/ScriptRuntime.java b/src/org/mozilla/javascript/ScriptRuntime.java
index fb1c7227..ac64da24 100644
--- a/src/org/mozilla/javascript/ScriptRuntime.java
+++ b/src/org/mozilla/javascript/ScriptRuntime.java
@@ -8,15 +8,20 @@ package org.mozilla.javascript;
import java.io.Serializable;
import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Locale;
import java.util.ResourceBundle;
+import java.util.Set;
+import java.util.TreeSet;
import org.mozilla.javascript.ast.FunctionNode;
import org.mozilla.javascript.v8dtoa.DoubleConversion;
import org.mozilla.javascript.v8dtoa.FastDtoa;
-import org.mozilla.javascript.xml.XMLObject;
import org.mozilla.javascript.xml.XMLLib;
+import org.mozilla.javascript.xml.XMLObject;
/**
* This is the class that implements the runtime.
@@ -258,9 +263,13 @@ public class ScriptRuntime {
}
if (cx.getLanguageVersion() >= Context.VERSION_ES6) {
- NativeSymbol.init(cx, scope, sealed);
+ new LazilyLoadedCtor(scope, NativeSymbol.CLASS_NAME,
+ NativeSymbol.class.getName(),
+ sealed, true);
+
}
+
if (scope instanceof TopLevel) {
((TopLevel)scope).cacheBuiltins();
}
@@ -338,21 +347,21 @@ public class ScriptRuntime {
*/
static boolean isStrWhiteSpaceChar(int c)
{
- switch (c) {
- case ' ': //
- case '\n': //
- case '\r': //
- case '\t': //
- case '\u00A0': //
- case '\u000C': //
- case '\u000B': //
- case '\u2028': //
- case '\u2029': //
- case '\uFEFF': //
- return true;
- default:
- return Character.getType(c) == Character.SPACE_SEPARATOR;
- }
+ switch (c) {
+ case ' ': //
+ case '\n': //
+ case '\r': //
+ case '\t': //
+ case '\u00A0': //
+ case '\u000C': //
+ case '\u000B': //
+ case '\u2028': //
+ case '\u2029': //
+ case '\uFEFF': //
+ return true;
+ default:
+ return Character.getType(c) == Character.SPACE_SEPARATOR;
+ }
}
public static Boolean wrapBoolean(boolean b)
@@ -403,7 +412,7 @@ public class ScriptRuntime {
}
// ECMA extension
val = ((Scriptable) val).getDefaultValue(BooleanClass);
- if ((val instanceof Scriptable) && !isSymbol(val))
+ if (val instanceof Scriptable)
throw errorWithClassName("msg.primitive.expected", val);
continue;
}
@@ -432,11 +441,9 @@ public class ScriptRuntime {
return toNumber(val.toString());
if (val instanceof Boolean)
return ((Boolean) val).booleanValue() ? 1 : +0.0;
- if (val instanceof Symbol)
- throw typeError0("msg.not.a.number");
if (val instanceof Scriptable) {
val = ((Scriptable) val).getDefaultValue(NumberClass);
- if ((val instanceof Scriptable) && !isSymbol(val))
+ if (val instanceof Scriptable)
throw errorWithClassName("msg.primitive.expected", val);
continue;
}
@@ -827,12 +834,9 @@ public class ScriptRuntime {
// about Numbers?
return numberToString(((Number)val).doubleValue(), 10);
}
- if (val instanceof Symbol) {
- throw typeError0("msg.not.a.string");
- }
if (val instanceof Scriptable) {
val = ((Scriptable) val).getDefaultValue(StringClass);
- if ((val instanceof Scriptable) && !isSymbol(val)) {
+ if (val instanceof Scriptable) {
throw errorWithClassName("msg.primitive.expected", val);
}
continue;
@@ -1036,7 +1040,10 @@ public class ScriptRuntime {
public static Scriptable toObjectOrNull(Context cx, Object obj,
Scriptable scope)
{
- if (obj instanceof Scriptable) {
+ if (obj instanceof Delegator) {
+ return ((Delegator) obj).getDelegee();
+ }
+ else if (obj instanceof Scriptable) {
return (Scriptable)obj;
} else if (obj != null && obj != Undefined.instance) {
return toObject(cx, scope, obj);
@@ -1064,11 +1071,6 @@ public class ScriptRuntime {
*/
public static Scriptable toObject(Context cx, Scriptable scope, Object val)
{
- if (isSymbol(val)) {
- NativeSymbol result = new NativeSymbol((NativeSymbol)val);
- setBuiltinProtoAndParent(result, scope, TopLevel.Builtins.Symbol);
- return result;
- }
if (val instanceof Scriptable) {
return (Scriptable) val;
}
@@ -1461,7 +1463,7 @@ public class ScriptRuntime {
@Deprecated
public static Object getObjectElem(Object obj, Object elem, Context cx)
{
- return getObjectElem(obj, elem, cx, getTopCallScope(cx));
+ return getObjectElem(obj, elem, cx, getTopCallScope(cx));
}
/**
@@ -1484,8 +1486,6 @@ public class ScriptRuntime {
if (obj instanceof XMLObject) {
result = ((XMLObject)obj).get(cx, elem);
- } else if (isSymbol(elem)) {
- result = ScriptableObject.getProperty(obj, (Symbol)elem);
} else {
String s = toStringIdOrIndex(cx, elem);
if (s == null) {
@@ -1645,8 +1645,6 @@ public class ScriptRuntime {
{
if (obj instanceof XMLObject) {
((XMLObject)obj).put(cx, elem, value);
- } else if (isSymbol(elem)) {
- ScriptableObject.putProperty(obj, (Symbol)elem, value);
} else {
String s = toStringIdOrIndex(cx, elem);
if (s == null) {
@@ -1738,12 +1736,6 @@ public class ScriptRuntime {
public static boolean deleteObjectElem(Scriptable target, Object elem,
Context cx)
{
- if (isSymbol(elem)) {
- SymbolScriptable so = ScriptableObject.ensureSymbolScriptable(target);
- Symbol s = (Symbol)elem;
- so.delete(s);
- return !so.has(s, target);
- }
String s = toStringIdOrIndex(cx, elem);
if (s == null) {
int index = lastIndexResult(cx);
@@ -1760,16 +1752,12 @@ public class ScriptRuntime {
{
boolean result;
- if (isSymbol(elem)) {
- result = ScriptableObject.hasProperty(target, (Symbol)elem);
+ String s = toStringIdOrIndex(cx, elem);
+ if (s == null) {
+ int index = lastIndexResult(cx);
+ result = ScriptableObject.hasProperty(target, index);
} else {
- String s = toStringIdOrIndex(cx, elem);
- if (s == null) {
- int index = lastIndexResult(cx);
- result = ScriptableObject.hasProperty(target, index);
- } else {
- result = ScriptableObject.hasProperty(target, s);
- }
+ result = ScriptableObject.hasProperty(target, s);
}
return result;
@@ -2223,15 +2211,10 @@ public class ScriptRuntime {
}
private static Object enumInitInOrder(Context cx, IdEnumeration x) {
- if (!(x.obj instanceof ScriptableObject)) {
- throw typeError1("msg.not.iterable", toString(x.obj));
- }
-
- ScriptableObject xo = (ScriptableObject)x.obj;
- if (!ScriptableObject.hasProperty(xo, SymbolKey.ITERATOR)) {
+ if (x.obj == null || !ScriptableObject.hasProperty(x.obj, NativeSymbol.ITERATOR_PROPERTY)) {
throw typeError1("msg.not.iterable", toString(x.obj));
}
- Object iterator = ScriptableObject.getProperty(xo, SymbolKey.ITERATOR);
+ Object iterator = ScriptableObject.getProperty(x.obj, NativeSymbol.ITERATOR_PROPERTY);
if (!(iterator instanceof Callable)) {
throw typeError1("msg.not.iterable", toString(x.obj));
}
@@ -2286,10 +2269,8 @@ public class ScriptRuntime {
if (x.used != null && x.used.has(id)) {
continue;
}
- if (id instanceof Symbol) {
- continue;
- } else if (id instanceof String) {
- String strId = (String) id;
+ if (id instanceof String) {
+ String strId = (String)id;
if (!x.obj.has(strId, x.obj))
continue; // must have been deleted
x.currentId = strId;
@@ -2350,17 +2331,12 @@ public class ScriptRuntime {
Object result;
- if (isSymbol(x.currentId)) {
- SymbolScriptable so = ScriptableObject.ensureSymbolScriptable(x.obj);
- result = so.get((Symbol)x.currentId, x.obj);
+ String s = toStringIdOrIndex(cx, x.currentId);
+ if (s == null) {
+ int index = lastIndexResult(cx);
+ result = x.obj.get(index, x.obj);
} else {
- String s = toStringIdOrIndex(cx, x.currentId);
- if (s == null) {
- int index = lastIndexResult(cx);
- result = x.obj.get(index, x.obj);
- } else {
- result = x.obj.get(s, x.obj);
- }
+ result = x.obj.get(s, x.obj);
}
return result;
@@ -2386,6 +2362,24 @@ public class ScriptRuntime {
x.used.intern(previous[i]);
}
}
+ if (ids != null && Context.getCurrentContext().hasFeature(Context.FEATURE_HTMLUNIT_ENUM_NUMBERS_FIRST)) {
+ Set integers = new TreeSet();
+ List others = new ArrayList();
+ for (Object o : ids) {
+ if (o instanceof Integer) {
+ integers.add((Integer) o);
+ }
+ else {
+ others.add(o);
+ }
+ }
+ if (!integers.isEmpty()) {
+ Object[] newIds = new Object[ids.length];
+ System.arraycopy(integers.toArray(), 0, newIds, 0, integers.size());
+ System.arraycopy(others.toArray(), 0, newIds, integers.size(), others.size());
+ ids = newIds;
+ }
+ }
x.ids = ids;
x.index = 0;
}
@@ -2401,6 +2395,9 @@ public class ScriptRuntime {
Context cx,
Scriptable scope)
{
+ if ("eval".equals(name)) {
+ lastEvalTopCalled_ = true;
+ }
Scriptable parent = scope.getParentScope();
if (parent == null) {
Object result = topScopeName(cx, scope, name);
@@ -2448,31 +2445,18 @@ public class ScriptRuntime {
public static Callable getElemFunctionAndThis(Object obj, Object elem,
Context cx, Scriptable scope)
{
- Scriptable thisObj;
- Object value;
-
- if (isSymbol(elem)) {
- thisObj = toObjectOrNull(cx, obj, scope);
- if (thisObj == null) {
- throw undefCallError(obj, String.valueOf(elem));
- }
- value = ScriptableObject.getProperty(thisObj, (Symbol)elem);
-
- } else {
- String str = toStringIdOrIndex(cx, elem);
- if (str != null) {
- return getPropFunctionAndThis(obj, str, cx, scope);
- }
- int index = lastIndexResult(cx);
-
- thisObj = toObjectOrNull(cx, obj, scope);
- if (thisObj == null) {
- throw undefCallError(obj, String.valueOf(elem));
- }
+ String str = toStringIdOrIndex(cx, elem);
+ if (str != null) {
+ return getPropFunctionAndThis(obj, str, cx, scope);
+ }
+ int index = lastIndexResult(cx);
- value = ScriptableObject.getProperty(thisObj, index);
+ Scriptable thisObj = toObjectOrNull(cx, obj, scope);
+ if (thisObj == null) {
+ throw undefCallError(obj, String.valueOf(index));
}
+ Object value = ScriptableObject.getProperty(thisObj, index);
if (!(value instanceof Callable)) {
throw notFunctionError(value, elem);
}
@@ -2511,6 +2495,9 @@ public class ScriptRuntime {
String property,
Context cx, Scriptable scope)
{
+ if ("eval".equals(property)) {
+ lastEvalTopCalled_ = false;
+ }
Scriptable thisObj = toObjectOrNull(cx, obj, scope);
return getPropFunctionAndThisHelper(obj, property, cx, thisObj);
}
@@ -2613,6 +2600,18 @@ public class ScriptRuntime {
return function.construct(cx, scope, args);
}
+ /**
+ * This indicates whether last call of "eval" was at the top scope (i.e. "eval()")
+ * or not (i.e. "scope.eval()"), as each one has different behavior.
+ *
+ * Ideally, we should have "eval" at top scope and we use Context.FEATURE_DYNAMIC_SCOPE,
+ * but it will complex the code.
+ *
+ * The current implementation sets this value to true when "eval" is called, and
+ * false on "something.eval()"
+ */
+ private static boolean lastEvalTopCalled_;
+
public static Object callSpecial(Context cx, Callable fun,
Scriptable thisObj,
Object[] args, Scriptable scope,
@@ -2621,6 +2620,9 @@ public class ScriptRuntime {
{
if (callType == Node.SPECIALCALL_EVAL) {
if (thisObj.getParentScope() == null && NativeGlobal.isEvalFunction(fun)) {
+ if (!lastEvalTopCalled_) {
+ scope = thisObj;
+ }
return evalSpecial(cx, scope, callerThis, args,
filename, lineNumber);
}
@@ -2701,7 +2703,7 @@ public class ScriptRuntime {
{
if (arg1 == null || arg1 == Undefined.instance) {
return ScriptRuntime.emptyArgs;
- } else if (arg1 instanceof NativeArray || arg1 instanceof Arguments) {
+ } else if (arg1 instanceof Scriptable) {
return cx.getElements((Scriptable) arg1);
} else {
throw ScriptRuntime.typeError0("msg.arg.isnt.array");
@@ -2785,7 +2787,9 @@ public class ScriptRuntime {
if (value == Undefined.instance)
return "undefined";
if (value instanceof ScriptableObject)
- return ((ScriptableObject) value).getTypeOf();
+ return ((ScriptableObject) value).getTypeOf();
+ if (value instanceof Delegator)
+ return typeof(((Delegator) value).getDelegee());
if (value instanceof Scriptable)
return (value instanceof Callable) ? "function" : "object";
if (value instanceof CharSequence)
@@ -2794,6 +2798,10 @@ public class ScriptRuntime {
return "number";
if (value instanceof Boolean)
return "boolean";
+ if (value instanceof MemberBox)
+ return typeof(((MemberBox) value).member());
+ if (value instanceof Method)
+ return "function";
throw errorWithClassName("msg.invalid.type", value);
}
@@ -2839,9 +2847,6 @@ public class ScriptRuntime {
return test;
}
}
- if ((val1 instanceof Symbol) || (val2 instanceof Symbol)) {
- throw typeError0("msg.not.a.number");
- }
if (val1 instanceof Scriptable)
val1 = ((Scriptable) val1).getDefaultValue(null);
if (val2 instanceof Scriptable)
@@ -3061,7 +3066,7 @@ public class ScriptRuntime {
}
Scriptable s = (Scriptable)val;
Object result = s.getDefaultValue(typeHint);
- if ((result instanceof Scriptable) && !isSymbol(result))
+ if (result instanceof Scriptable)
throw typeError0("msg.bad.default.value");
return result;
}
@@ -3149,38 +3154,6 @@ public class ScriptRuntime {
}
}
- /*
- * Implement "SameValue" as in ECMA 7.2.9. This is not the same as "eq" because it handles
- * signed zeroes and NaNs differently.
- */
- public static boolean same(Object x, Object y) {
- if (!typeof(x).equals(typeof(y))) {
- return false;
- }
- if (x instanceof Number) {
- if (isNaN(x) && isNaN(y)) {
- return true;
- }
- return x.equals(y);
- }
- return eq(x, y);
- }
-
- public static boolean isNaN(Object n) {
- if (n == NaNobj) {
- return true;
- }
- if (n instanceof Double) {
- Double d = (Double)n;
- return ((d == NaN) || Double.isNaN(d));
- }
- if (n instanceof Float) {
- Float f = (Float)n;
- return ((f == NaN) || Float.isNaN(f));
- }
- return false;
- }
-
public static boolean isPrimitive(Object obj) {
return obj == null || obj == Undefined.instance ||
(obj instanceof Number) || (obj instanceof String) ||
@@ -3197,9 +3170,7 @@ public class ScriptRuntime {
} else if (y instanceof CharSequence) {
return x == toNumber(y);
} else if (y instanceof Boolean) {
- return x == (((Boolean) y).booleanValue() ? 1.0 : +0.0);
- } else if (isSymbol(y)) {
- return false;
+ return x == (((Boolean)y).booleanValue() ? 1.0 : +0.0);
} else if (y instanceof Scriptable) {
if (y instanceof ScriptableObject) {
Object xval = wrapNumber(x);
@@ -3227,9 +3198,7 @@ public class ScriptRuntime {
} else if (y instanceof Number) {
return toNumber(x.toString()) == ((Number)y).doubleValue();
} else if (y instanceof Boolean) {
- return toNumber(x.toString()) == (((Boolean) y).booleanValue() ? 1.0 : 0.0);
- } else if (isSymbol(y)) {
- return false;
+ return toNumber(x.toString()) == (((Boolean)y).booleanValue() ? 1.0 : 0.0);
} else if (y instanceof Scriptable) {
if (y instanceof ScriptableObject) {
Object test = ((ScriptableObject)y).equivalentValues(x.toString());
@@ -3275,6 +3244,15 @@ public class ScriptRuntime {
if (x instanceof Wrapper && y instanceof Wrapper) {
return ((Wrapper)x).unwrap() == ((Wrapper)y).unwrap();
}
+ if (x instanceof Delegator && y instanceof Delegator) {
+ return shallowEq(((Delegator)x).getDelegee(), ((Delegator)y).getDelegee());
+ }
+ if (x instanceof Delegator && ((Delegator)x).getDelegee() == y) {
+ return true;
+ }
+ if (y instanceof Delegator && ((Delegator)y).getDelegee() == x) {
+ return true;
+ }
} else {
warnAboutNonJSObject(x);
return x == y;
@@ -3347,9 +3325,6 @@ public class ScriptRuntime {
d1 = ((Number)val1).doubleValue();
d2 = ((Number)val2).doubleValue();
} else {
- if ((val1 instanceof Symbol) || (val2 instanceof Symbol)) {
- throw typeError0("msg.compare.symbol");
- }
if (val1 instanceof Scriptable)
val1 = ((Scriptable) val1).getDefaultValue(NumberClass);
if (val2 instanceof Scriptable)
@@ -3370,9 +3345,6 @@ public class ScriptRuntime {
d1 = ((Number)val1).doubleValue();
d2 = ((Number)val2).doubleValue();
} else {
- if ((val1 instanceof Symbol) || (val2 instanceof Symbol)) {
- throw typeError0("msg.compare.symbol");
- }
if (val1 instanceof Scriptable)
val1 = ((Scriptable) val1).getDefaultValue(NumberClass);
if (val2 instanceof Scriptable)
@@ -3492,7 +3464,7 @@ public class ScriptRuntime {
public static void addInstructionCount(Context cx, int instructionsToAdd)
{
- cx.instructionCount += instructionsToAdd;
+ cx.instructionCount += instructionsToAdd;
if (cx.instructionCount > cx.instructionThreshold)
{
cx.observeInstructionCount(cx.instructionCount);
@@ -3523,13 +3495,29 @@ public class ScriptRuntime {
// Don't overwrite existing def if already defined in object
// or prototypes of object.
if (!ScriptableObject.hasProperty(scope, name)) {
- if (isConst) {
- ScriptableObject.defineConstProperty(varScope, name);
- } else if (!evalScript) {
+ if (!evalScript) {
// Global var definitions are supposed to be DONTDELETE
- ScriptableObject.defineProperty(
- varScope, name, Undefined.instance,
- ScriptableObject.PERMANENT);
+ if (isConst)
+ ScriptableObject.defineConstProperty(varScope, name);
+ else {
+ boolean define = true;
+ if (funObj instanceof InterpretedFunction) {
+ InterpreterData idata = ((InterpretedFunction) funObj).idata;
+ for (int f = 0; f < idata.getFunctionCount(); f++) {
+ InterpreterData functionData = (InterpreterData) idata.getFunction(f);
+ if (!functionData.declaredAsFunctionExpression
+ && name.equals(functionData.getFunctionName())) {
+ define = false;
+ break;
+ }
+ }
+ }
+ if (define) {
+ ScriptableObject.defineProperty(
+ varScope, name, Undefined.instance,
+ ScriptableObject.PERMANENT);
+ }
+ }
} else {
varScope.put(name, varScope, Undefined.instance);
}
@@ -4181,20 +4169,24 @@ public class ScriptRuntime {
public static RuntimeException undefReadError(Object object, Object id)
{
- return typeError2("msg.undef.prop.read", toString(object), toString(id));
+ final String idStr = toString(id);
+ return typeError2("msg.undef.prop.read", toString(object), idStr);
}
public static RuntimeException undefCallError(Object object, Object id)
{
- return typeError2("msg.undef.method.call", toString(object), toString(id));
+ final String idStr = toString(id);
+ return typeError2("msg.undef.method.call", toString(object), idStr);
}
public static RuntimeException undefWriteError(Object object,
Object id,
Object value)
{
- return typeError3("msg.undef.prop.write", toString(object), toString(id),
- toString(value));
+ final String idStr = toString(id);
+ final String valueStr = toString(value);
+ return typeError3("msg.undef.prop.write", toString(object), idStr,
+ valueStr);
}
private static RuntimeException undefDeleteError(Object object, Object id)
@@ -4255,13 +4247,12 @@ public class ScriptRuntime {
private static void warnAboutNonJSObject(Object nonJSObject)
{
- final String omitParam = ScriptRuntime.getMessage0("params.omit.non.js.object.warning");
- if (!"true".equals(omitParam)) {
- String message = ScriptRuntime.getMessage2("msg.non.js.object.warning",nonJSObject,nonJSObject.getClass().getName());
- Context.reportWarning(message);
- // Just to be sure that it would be noticed
- System.err.println(message);
- }
+ String message =
+"RHINO USAGE WARNING: Missed Context.javaToJS() conversion:\n"
++"Rhino runtime detected object "+nonJSObject+" of class "+nonJSObject.getClass().getName()+" where it expected String, Number, Boolean or Scriptable instance. Please check your code for missing Context.javaToJS() call.";
+ Context.reportWarning(message);
+ // Just to be sure that it would be noticed
+ System.err.println(message);
}
public static RegExpProxy getRegExpProxy(Context cx)
@@ -4421,15 +4412,6 @@ public class ScriptRuntime {
|| sourceUrl.indexOf("(Function)") >= 0;
}
- /**
- * Not all "NativeSymbol" instances are actually symbols. So account for that here rather than just
- * by using an "instanceof" check.
- */
- static boolean isSymbol(Object obj) {
- return (((obj instanceof NativeSymbol) &&
- ((NativeSymbol)obj).isSymbol())) || (obj instanceof SymbolKey);
- }
-
private static RuntimeException errorWithClassName(String msg, Object val)
{
return Context.reportRuntimeError1(msg, val.getClass().getName());
@@ -4464,7 +4446,7 @@ public class ScriptRuntime {
int[] linep = { 0 };
String filename = Context.getSourcePositionFromStack(linep);
final Scriptable error = cx.newObject(scope, constructorName,
- new Object[] { message, filename, Integer.valueOf(linep[0]) });
+ new Object[] { message, filename, Integer.valueOf(linep[0]) });
return new JavaScriptException(error, filename, linep[0]);
}
diff --git a/src/org/mozilla/javascript/ScriptStackElement.java b/src/org/mozilla/javascript/ScriptStackElement.java
index b9507d2f..0ec42e1a 100644
--- a/src/org/mozilla/javascript/ScriptStackElement.java
+++ b/src/org/mozilla/javascript/ScriptStackElement.java
@@ -15,7 +15,7 @@ import java.io.Serializable;
public final class ScriptStackElement implements Serializable {
static final long serialVersionUID = -6416688260860477449L;
-
+
public final String fileName;
public final String functionName;
public final int lineNumber;
@@ -36,7 +36,6 @@ public final class ScriptStackElement implements Serializable {
/**
* Render stack element in Java-inspired style:
* at fileName:lineNumber (functionName)
- *
* @param sb the StringBuilder to append to
*/
public void renderJavaStyle(StringBuilder sb) {
@@ -52,7 +51,6 @@ public final class ScriptStackElement implements Serializable {
/**
* Render stack element in Mozilla/Firefox style:
* functionName()@fileName:lineNumber
- *
* @param sb the StringBuilder to append to
*/
public void renderMozillaStyle(StringBuilder sb) {
@@ -70,14 +68,12 @@ public final class ScriptStackElement implements Serializable {
* at functionName (fileName:lineNumber:columnNumber)
* or:
* at fileName:lineNumber:columnNumber
- *
* @param sb the StringBuilder to append to
*/
public void renderV8Style(StringBuilder sb) {
sb.append(" at ");
- if ((functionName == null) || "anonymous".equals(functionName) || "undefined"
- .equals(functionName)) {
+ if ((functionName == null) || "anonymous".equals(functionName) || "undefined".equals(functionName)) {
// Anonymous functions in V8 don't have names in the stack trace
appendV8Location(sb);
@@ -88,8 +84,11 @@ public final class ScriptStackElement implements Serializable {
}
}
- private void appendV8Location(StringBuilder sb) {
- sb.append(fileName).append(':');
- sb.append(lineNumber > -1 ? lineNumber : 0).append(":0");
+ private void appendV8Location(StringBuilder sb)
+ {
+ sb.append(fileName);
+ if (lineNumber > -1) {
+ sb.append(':').append(lineNumber);
+ }
}
}
diff --git a/src/org/mozilla/javascript/ScriptableObject.java b/src/org/mozilla/javascript/ScriptableObject.java
index dcf6eb15..eb2f1a8b 100644
--- a/src/org/mozilla/javascript/ScriptableObject.java
+++ b/src/org/mozilla/javascript/ScriptableObject.java
@@ -46,9 +46,7 @@ import org.mozilla.javascript.annotations.JSStaticFunction;
* @author Norris Boyd
*/
-public abstract class ScriptableObject implements Scriptable,
- SymbolScriptable,
- Serializable,
+public abstract class ScriptableObject implements Scriptable, Serializable,
DebuggableObject,
ConstProperties
{
@@ -152,7 +150,7 @@ public abstract class ScriptableObject implements Scriptable,
private static class Slot implements Serializable
{
private static final long serialVersionUID = -6090581677123995491L;
- Object name; // This can change due to caching
+ String name; // This can change due to caching
int indexOrHash;
private volatile short attributes;
transient volatile boolean wasDeleted;
@@ -160,7 +158,7 @@ public abstract class ScriptableObject implements Scriptable,
transient Slot next; // next in hash table bucket
transient volatile Slot orderedNext; // next in linked list
- Slot(Object name, int indexOrHash, int attributes)
+ Slot(String name, int indexOrHash, int attributes)
{
this.name = name;
this.indexOrHash = indexOrHash;
@@ -238,7 +236,7 @@ public abstract class ScriptableObject implements Scriptable,
Object getter;
Object setter;
- GetterSlot(Object name, int indexOrHash, int attributes)
+ GetterSlot(String name, int indexOrHash, int attributes)
{
super(name, indexOrHash, attributes);
}
@@ -267,11 +265,24 @@ public abstract class ScriptableObject implements Scriptable,
// Based on TC39 ES3.1 Draft of 9-Feb-2009, 8.12.4, step 2,
// we should throw a TypeError in this case.
cx.hasFeature(Context.FEATURE_STRICT_MODE)) {
- throw ScriptRuntime.typeError1("msg.set.prop.no.setter", name);
+
+ throw ScriptRuntime.typeError3("msg.set.prop.no.setter", name, start.getClassName(), Context.toString(value));
+ }
+ Scriptable scriptable = start;
+
+ if (scriptable instanceof Delegator) {
+ scriptable = ((Delegator) scriptable).getDelegee();
+ }
+
+ if (scriptable instanceof ScriptableObject) {
+ boolean allowSetting = ((ScriptableObject) scriptable).isReadOnlySettable(name, value);
+ if (!allowSetting) {
+ return true;
+ }
+ }
+ if (owner == start) {
+ getter = null;
}
- // Assignment to a property with only a getter defined. The
- // assignment is ignored. See bug 478047.
- return true;
}
} else {
Context cx = Context.getContext();
@@ -427,7 +438,7 @@ public abstract class ScriptableObject implements Scriptable,
* case it returns "undefined"
*/
public String getTypeOf() {
- return avoidObjectDetection() ? "undefined" : "object";
+ return avoidObjectDetection() ? "undefined" : "object";
}
/**
@@ -466,14 +477,6 @@ public abstract class ScriptableObject implements Scriptable,
return null != getSlot(null, index, SLOT_QUERY);
}
- /**
- * A version of "has" that supports symbols.
- */
- public boolean has(Symbol key, Scriptable start)
- {
- return null != getSlot(key, 0, SLOT_QUERY);
- }
-
/**
* Returns the value of the named property or NOT_FOUND.
*
@@ -516,18 +519,6 @@ public abstract class ScriptableObject implements Scriptable,
return slot.getValue(start);
}
- /**
- * Another version of Get that supports Symbol keyed properties.
- */
- public Object get(Symbol key, Scriptable start)
- {
- Slot slot = getSlot(key, 0, SLOT_QUERY);
- if (slot == null) {
- return Scriptable.NOT_FOUND;
- }
- return slot.getValue(start);
- }
-
/**
* Sets the value of the named property, creating it if need be.
*
@@ -581,18 +572,6 @@ public abstract class ScriptableObject implements Scriptable,
start.put(index, start, value);
}
- /**
- * Implementation of put required by SymbolScriptable objects.
- */
- public void put(Symbol key, Scriptable start, Object value)
- {
- if (putImpl(key, 0, start, value))
- return;
-
- if (start == this) throw Kit.codeBug();
- ensureSymbolScriptable(start).put(key, start, value);
- }
-
/**
* Removes a named property from the object.
*
@@ -621,15 +600,6 @@ public abstract class ScriptableObject implements Scriptable,
removeSlot(null, index);
}
- /**
- * Removes an object like the others, but using a Symbol as the key.
- */
- public void delete(Symbol key)
- {
- checkNotSealed(key, 0);
- removeSlot(key, 0);
- }
-
/**
* Sets the value of the named const property, creating it if need be.
*
@@ -764,12 +734,6 @@ public abstract class ScriptableObject implements Scriptable,
return findAttributeSlot(null, index, SLOT_QUERY).getAttributes();
}
- public int getAttributes(Symbol sym)
- {
- return findAttributeSlot(sym, SLOT_QUERY).getAttributes();
- }
-
-
/**
* Set the attributes of a named property.
*
@@ -815,15 +779,6 @@ public abstract class ScriptableObject implements Scriptable,
findAttributeSlot(null, index, SLOT_MODIFY).setAttributes(attributes);
}
- /**
- * Set attributes of a Symbol-keyed property.
- */
- public void setAttributes(Symbol key, int attributes)
- {
- checkNotSealed(key, 0);
- findAttributeSlot(key, SLOT_MODIFY).setAttributes(attributes);
- }
-
/**
* XXX: write docs.
*/
@@ -1011,7 +966,7 @@ public abstract class ScriptableObject implements Scriptable,
* a String will have a String entry in the returned array.
*/
public Object[] getIds() {
- return getIds(false, false);
+ return getIds(false);
}
/**
@@ -1026,7 +981,7 @@ public abstract class ScriptableObject implements Scriptable,
* a String will have a String entry in the returned array.
*/
public Object[] getAllIds() {
- return getIds(true, false);
+ return getIds(true);
}
/**
@@ -1683,17 +1638,6 @@ public abstract class ScriptableObject implements Scriptable,
setAttributes(propertyName, attributes);
}
- /**
- * A version of defineProperty that uses a Symbol key.
- */
- public void defineProperty(Symbol key, Object value,
- int attributes)
- {
- checkNotSealed(key, 0);
- put(key, this, value);
- setAttributes(key, attributes);
- }
-
/**
* Utility method to add properties to arbitrary Scriptable object.
* If destination is instance of ScriptableObject, calls
@@ -1910,7 +1854,7 @@ public abstract class ScriptableObject implements Scriptable,
* @param props a map of property ids to property descriptors
*/
public void defineOwnProperties(Context cx, ScriptableObject props) {
- Object[] ids = props.getIds(false, true);
+ Object[] ids = props.getIds();
ScriptableObject[] descs = new ScriptableObject[ids.length];
for (int i = 0, len = ids.length; i < len; ++i) {
Object descObj = ScriptRuntime.getObjectElem(props, ids[i], cx);
@@ -1954,7 +1898,8 @@ public abstract class ScriptableObject implements Scriptable,
if (checkValid) {
ScriptableObject current = slot == null ?
null : slot.getPropertyDescriptor(cx, this);
- checkPropertyChange(id, current, desc);
+ String name = ScriptRuntime.toString(id);
+ checkPropertyChange(name, current, desc);
}
boolean isAccessor = isAccessorDescriptor(desc);
@@ -2005,12 +1950,12 @@ public abstract class ScriptableObject implements Scriptable,
protected void checkPropertyDefinition(ScriptableObject desc) {
Object getter = getProperty(desc, "get");
if (getter != NOT_FOUND && getter != Undefined.instance
- && !(getter instanceof Callable)) {
+ && !(getter instanceof Callable) && !(getter instanceof MemberBox)) {
throw ScriptRuntime.notFunctionError(getter);
}
Object setter = getProperty(desc, "set");
if (setter != NOT_FOUND && setter != Undefined.instance
- && !(setter instanceof Callable)) {
+ && !(setter instanceof Callable) && !(setter instanceof MemberBox)) {
throw ScriptRuntime.notFunctionError(setter);
}
if (isDataDescriptor(desc) && isAccessorDescriptor(desc)) {
@@ -2018,7 +1963,7 @@ public abstract class ScriptableObject implements Scriptable,
}
}
- protected void checkPropertyChange(Object id, ScriptableObject current,
+ protected void checkPropertyChange(String id, ScriptableObject current,
ScriptableObject desc) {
if (current == null) { // new property
if (!isExtensible()) throw ScriptRuntime.typeError0("msg.not.extensible");
@@ -2153,21 +2098,23 @@ public abstract class ScriptableObject implements Scriptable,
}
protected static Scriptable ensureScriptable(Object arg) {
- if ( !(arg instanceof Scriptable) )
- throw ScriptRuntime.typeError1("msg.arg.not.object", ScriptRuntime.typeof(arg));
- return (Scriptable) arg;
- }
-
- protected static SymbolScriptable ensureSymbolScriptable(Object arg) {
- if ( !(arg instanceof SymbolScriptable) )
- throw ScriptRuntime.typeError1("msg.object.not.symbolscriptable", ScriptRuntime.typeof(arg));
- return (SymbolScriptable) arg;
+ if (arg instanceof Scriptable) {
+ return (Scriptable) arg;
+ }
+ if (arg instanceof Delegator) {
+ return ((Delegator) arg).getDelegee();
+ }
+ throw ScriptRuntime.typeError1("msg.arg.not.object", ScriptRuntime.typeof(arg));
}
protected static ScriptableObject ensureScriptableObject(Object arg) {
- if ( !(arg instanceof ScriptableObject) )
- throw ScriptRuntime.typeError1("msg.arg.not.object", ScriptRuntime.typeof(arg));
- return (ScriptableObject) arg;
+ if (arg instanceof ScriptableObject) {
+ return (ScriptableObject) arg;
+ }
+ if (arg instanceof Delegator) {
+ return (ScriptableObject) ((Delegator) arg).getDelegee();
+ }
+ throw ScriptRuntime.typeError1("msg.arg.not.object", ScriptRuntime.typeof(arg));
}
/**
@@ -2325,12 +2272,12 @@ public abstract class ScriptableObject implements Scriptable,
return count < 0;
}
- private void checkNotSealed(Object key, int index)
+ private void checkNotSealed(String name, int index)
{
if (!isSealed())
return;
- String str = (key != null) ? key.toString() : Integer.toString(index);
+ String str = (name != null) ? name : Integer.toString(index);
throw Context.reportRuntimeError1("msg.modify.sealed", str);
}
@@ -2359,22 +2306,6 @@ public abstract class ScriptableObject implements Scriptable,
return result;
}
- /**
- * This is a version of getProperty that works with Symbols.
- */
- public static Object getProperty(Scriptable obj, Symbol key)
- {
- Scriptable start = obj;
- Object result;
- do {
- result = ensureSymbolScriptable(obj).get(key, start);
- if (result != Scriptable.NOT_FOUND)
- break;
- obj = obj.getPrototype();
- } while (obj != null);
- return result;
- }
-
/**
* Gets an indexed property from an object or any object in its prototype
* chain and coerces it to the requested Java type.
@@ -2510,14 +2441,6 @@ public abstract class ScriptableObject implements Scriptable,
return null != getBase(obj, index);
}
- /**
- * A version of hasProperty for properties with Symbol keys.
- */
- public static boolean hasProperty(Scriptable obj, Symbol key)
- {
- return null != getBase(obj, key);
- }
-
/**
* Puts a named property in an object or in an object in its prototype chain.
*
@@ -2541,17 +2464,6 @@ public abstract class ScriptableObject implements Scriptable,
base.put(name, obj, value);
}
- /**
- * This is a version of putProperty for Symbol keys.
- */
- public static void putProperty(Scriptable obj, Symbol key, Object value)
- {
- Scriptable base = getBase(obj, key);
- if (base == null)
- base = obj;
- ensureSymbolScriptable(base).put(key, obj, value);
- }
-
/**
* Puts a named property in an object or in an object in its prototype chain.
*
@@ -2750,16 +2662,6 @@ public abstract class ScriptableObject implements Scriptable,
return obj;
}
- private static Scriptable getBase(Scriptable obj, Symbol key)
- {
- do {
- if (ensureSymbolScriptable(obj).has(key, obj))
- break;
- obj = obj.getPrototype();
- } while(obj != null);
- return obj;
- }
-
/**
* Get arbitrary application-specific value associated with this object.
* @param key key object to select particular value.
@@ -2827,14 +2729,14 @@ public abstract class ScriptableObject implements Scriptable,
/**
*
- * @param key
+ * @param name
* @param index
* @param start
* @param value
* @return false if this != start and no slot was found. true if this == start
* or this != start and a READONLY slot was found.
*/
- private boolean putImpl(Object key, int index, Scriptable start,
+ private boolean putImpl(String name, int index, Scriptable start,
Object value)
{
// This method is very hot (basically called on each assignment)
@@ -2847,18 +2749,18 @@ public abstract class ScriptableObject implements Scriptable,
}
Slot slot;
if (this != start) {
- slot = getSlot(key, index, SLOT_QUERY);
+ slot = getSlot(name, index, SLOT_QUERY);
if (slot == null) {
return false;
}
} else if (!isExtensible) {
- slot = getSlot(key, index, SLOT_QUERY);
+ slot = getSlot(name, index, SLOT_QUERY);
if (slot == null) {
return true;
}
} else {
- if (count < 0) checkNotSealed(key, index);
- slot = getSlot(key, index, SLOT_MODIFY);
+ if (count < 0) checkNotSealed(name, index);
+ slot = getSlot(name, index, SLOT_MODIFY);
}
return slot.setValue(value, this, start);
}
@@ -2924,15 +2826,6 @@ public abstract class ScriptableObject implements Scriptable,
return slot;
}
- private Slot findAttributeSlot(Symbol key, int accessType)
- {
- Slot slot = getSlot(key, 0, accessType);
- if (slot == null) {
- throw Context.reportRuntimeError1("msg.prop.not.found", key);
- }
- return slot;
- }
-
private static Slot unwrapSlot(Slot slot) {
return (slot instanceof RelinkedSlot) ? ((RelinkedSlot)slot).slot : slot;
}
@@ -2941,10 +2834,10 @@ public abstract class ScriptableObject implements Scriptable,
* Locate the slot with given name or index. Depending on the accessType
* parameter and the current slot status, a new slot may be allocated.
*
- * @param key either a String or a Symbol object that identifies the property
+ * @param name property name or null if slot holds spare array index.
* @param index index or 0 if slot holds property name.
*/
- private Slot getSlot(Object key, int index, int accessType)
+ private Slot getSlot(String name, int index, int accessType)
{
// Check the hashtable without using synchronization
Slot[] slotsLocalRef = slots; // Get stable local reference
@@ -2952,17 +2845,17 @@ public abstract class ScriptableObject implements Scriptable,
return null;
}
- int indexOrHash = (key != null ? key.hashCode() : index);
+ int indexOrHash = (name != null ? name.hashCode() : index);
if (slotsLocalRef != null) {
Slot slot;
int slotIndex = getSlotIndex(slotsLocalRef.length, indexOrHash);
for (slot = slotsLocalRef[slotIndex];
slot != null;
slot = slot.next) {
- Object skey = slot.name;
+ Object sname = slot.name;
if (indexOrHash == slot.indexOrHash &&
- (skey == key ||
- (key != null && key.equals(skey)))) {
+ (sname == name ||
+ (name != null && name.equals(sname)))) {
break;
}
}
@@ -2989,10 +2882,10 @@ public abstract class ScriptableObject implements Scriptable,
// A new slot has to be inserted or the old has to be replaced
// by GetterSlot. Time to synchronize.
- return createSlot(key, indexOrHash, accessType);
+ return createSlot(name, indexOrHash, accessType);
}
- private synchronized Slot createSlot(Object key, int indexOrHash, int accessType) {
+ private synchronized Slot createSlot(String name, int indexOrHash, int accessType) {
Slot[] slotsLocalRef = slots;
int insertPos;
if (count == 0) {
@@ -3007,8 +2900,8 @@ public abstract class ScriptableObject implements Scriptable,
Slot slot = prev;
while (slot != null) {
if (slot.indexOrHash == indexOrHash &&
- (slot.name == key ||
- (key != null && key.equals(slot.name))))
+ (slot.name == name ||
+ (name != null && name.equals(slot.name))))
{
break;
}
@@ -3028,10 +2921,10 @@ public abstract class ScriptableObject implements Scriptable,
if (accessType == SLOT_MODIFY_GETTER_SETTER
&& !(inner instanceof GetterSlot)) {
- newSlot = new GetterSlot(key, indexOrHash, inner.getAttributes());
+ newSlot = new GetterSlot(name, indexOrHash, inner.getAttributes());
} else if (accessType == SLOT_CONVERT_ACCESSOR_TO_DATA
&& (inner instanceof GetterSlot)) {
- newSlot = new Slot(key, indexOrHash, inner.getAttributes());
+ newSlot = new Slot(name, indexOrHash, inner.getAttributes());
} else if (accessType == SLOT_MODIFY_CONST) {
return null;
} else {
@@ -3070,8 +2963,8 @@ public abstract class ScriptableObject implements Scriptable,
}
}
Slot newSlot = (accessType == SLOT_MODIFY_GETTER_SETTER
- ? new GetterSlot(key, indexOrHash, 0)
- : new Slot(key, indexOrHash, 0));
+ ? new GetterSlot(name, indexOrHash, 0)
+ : new Slot(name, indexOrHash, 0));
if (accessType == SLOT_MODIFY_CONST)
newSlot.setAttributes(CONST);
++count;
@@ -3086,8 +2979,8 @@ public abstract class ScriptableObject implements Scriptable,
return newSlot;
}
- private synchronized void removeSlot(Object key, int index) {
- int indexOrHash = (key != null ? key.hashCode() : index);
+ private synchronized void removeSlot(String name, int index) {
+ int indexOrHash = (name != null ? name.hashCode() : index);
Slot[] slotsLocalRef = slots;
if (count != 0) {
@@ -3097,8 +2990,8 @@ public abstract class ScriptableObject implements Scriptable,
Slot slot = prev;
while (slot != null) {
if (slot.indexOrHash == indexOrHash &&
- (slot.name == key ||
- (key != null && key.equals(slot.name))))
+ (slot.name == name ||
+ (name != null && name.equals(slot.name))))
{
break;
}
@@ -3110,7 +3003,7 @@ public abstract class ScriptableObject implements Scriptable,
if ((slot.getAttributes() & PERMANENT) != 0) {
Context cx = Context.getContext();
if (cx.isStrictMode()) {
- throw ScriptRuntime.typeError1("msg.delete.property.with.configurable.false", key);
+ throw ScriptRuntime.typeError1("msg.delete.property.with.configurable.false", name);
}
return;
}
@@ -3198,7 +3091,7 @@ public abstract class ScriptableObject implements Scriptable,
}
}
- Object[] getIds(boolean getNonEnumerable, boolean getSymbols) {
+ Object[] getIds(boolean getAll) {
Slot[] s = slots;
Object[] a;
int externalLen = (externalData == null ? 0 : externalData.getArrayLength());
@@ -3225,10 +3118,8 @@ public abstract class ScriptableObject implements Scriptable,
slot = slot.orderedNext;
}
while (slot != null) {
- if ((getNonEnumerable || (slot.getAttributes() & DONTENUM) == 0) &&
- (getSymbols || !(slot.name instanceof Symbol))) {
+ if (getAll || (slot.getAttributes() & DONTENUM) == 0) {
if (c == externalLen) {
- // Special handling to combine external array with additional properties
Object[] oldA = a;
a = new Object[s.length + externalLen];
if (oldA != null) {
@@ -3333,15 +3224,18 @@ public abstract class ScriptableObject implements Scriptable,
protected ScriptableObject getOwnPropertyDescriptor(Context cx, Object id) {
Slot slot = getSlot(cx, id, SLOT_QUERY);
- if (slot == null) return null;
+ if (slot == null) {
+ Object prototype = getPrototype();
+ if (prototype != null) {
+ return ((ScriptableObject) prototype).getOwnPropertyDescriptor(cx, id);
+ }
+ return null;
+ }
Scriptable scope = getParentScope();
return slot.getPropertyDescriptor(cx, (scope == null ? this : scope));
}
protected Slot getSlot(Context cx, Object id, int accessType) {
- if (id instanceof Symbol) {
- return getSlot(id, 0, accessType);
- }
String name = ScriptRuntime.toStringIdOrIndex(cx, id);
if (name == null) {
return getSlot(null, ScriptRuntime.lastIndexResult(cx), accessType);
@@ -3366,8 +3260,6 @@ public abstract class ScriptableObject implements Scriptable,
Object value = null;
if (key instanceof String) {
value = get((String) key, this);
- } else if (key instanceof Symbol) {
- value = get((Symbol) key, this);
} else if (key instanceof Number) {
value = get(((Number) key).intValue(), this);
}
@@ -3380,16 +3272,32 @@ public abstract class ScriptableObject implements Scriptable,
}
}
+ /**
+ * Special to HtmlUnit's Rhino fork.
+ *
+ * Decides what to do when setting a ReadOnly property.
+ * The SimpleScriptable can return true for allowing to value to be set, false for not allowing (ignoring),
+ * or can simply throw {@link ScriptRuntime#typeError3(String, String, String, String)} with
+ * "msg.set.prop.no.setter", name, this.getClassName() and Context.toString(value).
+ *
+ * By default, this method returns true
+ * @param name the property name
+ * @param value the value
+ * @return true for allowing setting the value, false for ignoring the setting, or we can throw an exception
+ */
+ protected boolean isReadOnlySettable(final String name, final Object value) {
+ return true;
+ }
+
private static final Comparator KEY_COMPARATOR = new KeyComparator();
/**
* This comparator sorts property fields in spec-compliant order. Numeric ids first, in numeric
- * order, followed by string ids, in insertion order. Since this class already keeps string keys
+ * order, folowed by string ids, in insertion order. Since this class already keeps string keys
* in insertion-time order, we treat all as equal. The "Arrays.sort" method will then not
- * change their order, but simply move all the numeric properties to the front, since this
- * method is defined to be stable.
+ * change their order, but simply move all the numeric properties to the front.
*/
- public static final class KeyComparator
+ private static final class KeyComparator
implements Comparator
{
@Override
diff --git a/src/org/mozilla/javascript/Sorting.java b/src/org/mozilla/javascript/Sorting.java
deleted file mode 100644
index edf5f0cd..00000000
--- a/src/org/mozilla/javascript/Sorting.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package org.mozilla.javascript;
-
-import java.util.Arrays;
-import java.util.Comparator;
-
-public final class Sorting {
- private static final int SMALLSORT = 16;
-
- public static void insertionSort(Object[] a, Comparator cmp)
- {
- insertionSort(a, 0, a.length - 1, cmp);
- }
-
- public static void insertionSort(Object[] a, int start, int end, Comparator cmp)
- {
- int i = start;
- while (i <= end) {
- Object x = a[i];
- int j = i - 1;
- while ((j >= start) && (cmp.compare(a[j], x) > 0)) {
- a[j + 1] = a[j];
- j--;
- }
- a[j + 1] = x;
- i++;
- }
- }
-
- /*
- Hybrid sorting mechanism similar to Introsort by David Musser. Uses quicksort's
- partitioning mechanism recursively until the resulting array is small or the
- recursion is too deep, and then use insertion sort for the rest.
- This is the same basic algorithm used by the GNU Standard C++ library.
- */
- public static void hybridSort(Object[] a, Comparator cmp)
- {
- hybridSort(a, 0, a.length - 1, cmp, log2(a.length) * 2);
- }
-
- private static void hybridSort(Object[] a, int start, int end, Comparator cmp, int maxdepth)
- {
- if (start < end) {
- if ((maxdepth == 0) || ((end - start) <= SMALLSORT)) {
- insertionSort(a, start, end, cmp);
- } else {
- int p = partition(a, start, end, cmp);
- hybridSort(a, start, p, cmp, maxdepth - 1);
- hybridSort(a, p + 1, end, cmp, maxdepth - 1);
- }
- }
- }
-
- /*
- Quicksort-style partitioning, using the Hoare partition scheme described on Wikipedia.
- Use the "median of three" method to determine which index to pivot on, and then
- separate the array into two halves based on the pivot.
- */
- private static int partition(Object[] a, int start, int end, Comparator cmp) {
- Object pivot = a[median(start, end, start + ((end - start) / 2))];
- int i = start - 1;
- int j = end + 1;
- while (true) {
- do {
- i++;
- } while (cmp.compare(a[i], pivot) < 0);
- do {
- j--;
- } while (cmp.compare(a[j], pivot) > 0);
- if (i >= j) {
- return j;
- }
- swap(a, i, j);
- }
- }
-
- private static void swap(Object[] a, int l, int h)
- {
- Object tmp = a[l];
- a[l] = a[h];
- a[h] = tmp;
- }
-
- private static int log2(int n)
- {
- return (int)(Math.log10(n) / Math.log10(2.0));
- }
-
- private static int median(int n1, int n2, int n3)
- {
- int[] a = {n1, n2, n3};
- Arrays.sort(a);
- return a[1];
- }
-}
diff --git a/src/org/mozilla/javascript/Symbol.java b/src/org/mozilla/javascript/Symbol.java
deleted file mode 100644
index 75d024cd..00000000
--- a/src/org/mozilla/javascript/Symbol.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/* -*- Mode: java; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-package org.mozilla.javascript;
-
-/**
- * A Symbol is a JavaScript objecy that obeys the special properties of the
- * Symbol prototype. This interface lets us possibly support multiple
- * implementations of Symbol.
- *
- * @since 1.7.8
- */
-
-public interface Symbol
-{
-}
diff --git a/src/org/mozilla/javascript/SymbolKey.java b/src/org/mozilla/javascript/SymbolKey.java
deleted file mode 100644
index 6a06c98a..00000000
--- a/src/org/mozilla/javascript/SymbolKey.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package org.mozilla.javascript;
-
-import java.io.Serializable;
-
-/**
- * A SymbolKey is one of the implementations of Symbol. It is really there
- * so that we can easily use pre-defined symbols as keys in native code.
- * A SymbolKey has the special property that two NativeSymbol objects
- * with the same key are equal.
- */
-
-public class SymbolKey
- implements Symbol, Serializable
-{
- static final long serialVersionUID = -6019782713330994754L;
-
- // These are common SymbolKeys that are equivalent to well-known symbols
- // defined in ECMAScript.
- public static final SymbolKey ITERATOR = new SymbolKey("Symbol.iterator");
- public static final SymbolKey TO_STRING_TAG = new SymbolKey("Symbol.toStringTag");
- public static final SymbolKey SPECIES = new SymbolKey("Symbol.species");
- public static final SymbolKey HAS_INSTANCE = new SymbolKey("Symbol.hasInstance");
- public static final SymbolKey IS_CONCAT_SPREADABLE = new SymbolKey("Symbol.isConcatSpreadable");
- public static final SymbolKey IS_REGEXP = new SymbolKey("Symbol.isRegExp");
- public static final SymbolKey TO_PRIMITIVE = new SymbolKey("Symbol.toPrimitive");
- public static final SymbolKey MATCH = new SymbolKey("Symbol.match");
- public static final SymbolKey REPLACE = new SymbolKey("Symbol.replace");
- public static final SymbolKey SEARCH = new SymbolKey("Symbol.search");
- public static final SymbolKey SPLIT = new SymbolKey("Symbol.split");
- public static final SymbolKey UNSCOPABLES = new SymbolKey("Symbol.unscopables");
-
- private String name;
-
- public SymbolKey(String name)
- {
- this.name = name;
- }
-
- public String getName() {
- return name;
- }
-
- @Override
- public int hashCode()
- {
- return System.identityHashCode(this);
- }
-
- @Override
- public boolean equals(Object o)
- {
- if (o instanceof SymbolKey) {
- return o == this;
- }
- if (o instanceof NativeSymbol) {
- return ((NativeSymbol) o).getKey() == this;
- }
- return false;
- }
-
- @Override
- public String toString()
- {
- if (name == null) {
- return "Symbol()";
- }
- return "Symbol(" + name + ')';
- }
-}
diff --git a/src/org/mozilla/javascript/SymbolScriptable.java b/src/org/mozilla/javascript/SymbolScriptable.java
deleted file mode 100644
index 89bc8954..00000000
--- a/src/org/mozilla/javascript/SymbolScriptable.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/* -*- Mode: java; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-package org.mozilla.javascript;
-
-/**
- * This interface may be combined with any object that implements Scriptable
- * to add support for properties keyed by Symbol objects (as opposed to
- * String and number objects as in previous versions of JavaScript.
- * It's separated into its own interface so that the addition of Symbol
- * support does not break compatibility for existing code.
- *
- * @since 1.7.8
- */
-
-public interface SymbolScriptable
-{
- /**
- * Return the value of the property with the specified key, or
- * NOT_FOUND.
- */
- Object get(Symbol key, Scriptable start);
-
- /**
- * Return true if the specified property exists.
- */
- boolean has(Symbol key, Scriptable start);
-
- /**
- * Add a new property to to the object.
- */
- void put(Symbol key, Scriptable start, Object value);
-
- /**
- * Delete a property with the specified key.
- */
- void delete(Symbol key);
-}
diff --git a/src/org/mozilla/javascript/TokenStream.java b/src/org/mozilla/javascript/TokenStream.java
index e120c3b6..259325b7 100644
--- a/src/org/mozilla/javascript/TokenStream.java
+++ b/src/org/mozilla/javascript/TokenStream.java
@@ -1785,7 +1785,7 @@ class TokenStream
private String convertLastCharToHex(String str) {
int lastIndex = str.length()-1;
- StringBuilder buf = new StringBuilder(
+ StringBuffer buf = new StringBuffer(
str.substring(0, lastIndex));
buf.append("\\u");
String hexCode = Integer.toHexString(str.charAt(lastIndex));
diff --git a/src/org/mozilla/javascript/TopLevel.java b/src/org/mozilla/javascript/TopLevel.java
index e2059877..dc779181 100644
--- a/src/org/mozilla/javascript/TopLevel.java
+++ b/src/org/mozilla/javascript/TopLevel.java
@@ -58,9 +58,7 @@ public class TopLevel extends IdScriptableObject {
/** The built-in RegExp type. */
RegExp,
/** The built-in Error type. */
- Error,
- /** The built-in Symbol type. */
- Symbol
+ Error
}
/**
diff --git a/src/org/mozilla/javascript/Undefined.java b/src/org/mozilla/javascript/Undefined.java
index be85055b..07cf6e98 100644
--- a/src/org/mozilla/javascript/Undefined.java
+++ b/src/org/mozilla/javascript/Undefined.java
@@ -34,12 +34,6 @@ public class Undefined implements Serializable
return isUndefined(obj) || super.equals(obj);
}
- @Override
- public int hashCode() {
- // All instances of Undefined are equivalent!
- return 0;
- }
-
public static final Scriptable SCRIPTABLE_UNDEFINED;
static {
diff --git a/src/org/mozilla/javascript/VMBridge.java b/src/org/mozilla/javascript/VMBridge.java
index 15b789fc..923a34eb 100644
--- a/src/org/mozilla/javascript/VMBridge.java
+++ b/src/org/mozilla/javascript/VMBridge.java
@@ -8,8 +8,8 @@
package org.mozilla.javascript;
-import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Method;
+import java.lang.reflect.Member;
import java.util.Iterator;
public abstract class VMBridge
@@ -21,8 +21,9 @@ public abstract class VMBridge
{
String[] classNames = {
"org.mozilla.javascript.VMBridge_custom",
- "org.mozilla.javascript.jdk18.VMBridge_jdk18",
"org.mozilla.javascript.jdk15.VMBridge_jdk15",
+ "org.mozilla.javascript.jdk13.VMBridge_jdk13",
+ "org.mozilla.javascript.jdk11.VMBridge_jdk11",
};
for (int i = 0; i != classNames.length; ++i) {
String className = classNames[i];
@@ -66,6 +67,11 @@ public abstract class VMBridge
*/
protected abstract void setContext(Object contextHelper, Context cx);
+ /**
+ * Return the ClassLoader instance associated with the current thread.
+ */
+ protected abstract ClassLoader getCurrentThreadClassLoader();
+
/**
* In many JVMSs, public methods in private
* classes are not accessible by default (Sun Bug #4071593).
@@ -77,7 +83,7 @@ public abstract class VMBridge
* @return true if it was possible to make method accessible
* or false otherwise.
*/
- protected abstract boolean tryToMakeAccessible(AccessibleObject accessible);
+ protected abstract boolean tryToMakeAccessible(Object accessibleObject);
/**
* Create helper object to create later proxies implementing the specified
@@ -90,34 +96,54 @@ public abstract class VMBridge
*
* @param interfaces Array with one or more interface class objects.
*/
- protected abstract Object getInterfaceProxyHelper(ContextFactory cf,
- Class>[] interfaces);
+ protected Object getInterfaceProxyHelper(ContextFactory cf,
+ Class>[] interfaces)
+ {
+ throw Context.reportRuntimeError(
+ "VMBridge.getInterfaceProxyHelper is not supported");
+ }
/**
* Create proxy object for {@link InterfaceAdapter}. The proxy should call
* {@link InterfaceAdapter#invoke(ContextFactory, Object, Scriptable,
* Method, Object[])}
* as implementation of interface methods associated with
- * proxyHelper . {@link Method}
+ * proxyHelper .
*
* @param proxyHelper The result of the previous call to
* {@link #getInterfaceProxyHelper(ContextFactory, Class[])}.
*/
- protected abstract Object newInterfaceProxy(Object proxyHelper,
+ protected Object newInterfaceProxy(Object proxyHelper,
ContextFactory cf,
InterfaceAdapter adapter,
Object target,
- Scriptable topScope);
+ Scriptable topScope)
+ {
+ throw Context.reportRuntimeError(
+ "VMBridge.newInterfaceProxy is not supported");
+ }
/**
- * If "obj" is a java.util.Iterator or a java.lang.Iterable, return a
- * wrapping as a JavaScript Iterator. Otherwise, return null.
- * This method is in VMBridge since Iterable is a JDK 1.5 addition.
+ * Returns whether or not a given member (method or constructor)
+ * has variable arguments.
+ * Variable argument methods have only been supported in Java since
+ * JDK 1.5.
*/
- protected abstract Iterator> getJavaIterator(Context cx, Scriptable scope, Object obj);
+ protected abstract boolean isVarArgs(Member member);
/**
- * Support checking to see if this is the default method for Java 8.
+ * If "obj" is a java.util.Iterator or a java.lang.Iterable, return a
+ * wrapping as a JavaScript Iterator. Otherwise, return null.
+ * This method is in VMBridge since Iterable is a JDK 1.5 addition.
*/
- public abstract boolean isDefaultMethod(Method method);
+ public Iterator> getJavaIterator(Context cx, Scriptable scope, Object obj) {
+ if (obj instanceof Wrapper) {
+ Object unwrapped = ((Wrapper) obj).unwrap();
+ Iterator> iterator = null;
+ if (unwrapped instanceof Iterator)
+ iterator = (Iterator>) unwrapped;
+ return iterator;
+ }
+ return null;
+ }
}
diff --git a/src/org/mozilla/javascript/WrapFactory.java b/src/org/mozilla/javascript/WrapFactory.java
index dba31ec5..c27be829 100644
--- a/src/org/mozilla/javascript/WrapFactory.java
+++ b/src/org/mozilla/javascript/WrapFactory.java
@@ -57,13 +57,8 @@ public class WrapFactory
return obj;
}
if (!isJavaPrimitiveWrap()) {
- if (obj instanceof String ||
- obj instanceof Boolean ||
- obj instanceof Integer ||
- obj instanceof Short ||
- obj instanceof Long ||
- obj instanceof Float ||
- obj instanceof Double)
+ if (obj instanceof String || obj instanceof Number
+ || obj instanceof Boolean)
{
return obj;
} else if (obj instanceof Character) {
diff --git a/src/org/mozilla/javascript/ast/FunctionNode.java b/src/org/mozilla/javascript/ast/FunctionNode.java
index 6dd58c06..53c4a8e1 100644
--- a/src/org/mozilla/javascript/ast/FunctionNode.java
+++ b/src/org/mozilla/javascript/ast/FunctionNode.java
@@ -271,7 +271,7 @@ public class FunctionNode extends ScriptNode {
* if there is a lexical closure, or in a number of other situations.
*/
public boolean requiresActivation() {
- return needsActivation;
+ return true;
}
public void setRequiresActivation() {
diff --git a/src/org/mozilla/javascript/commonjs/module/provider/UrlConnectionSecurityDomainProvider.java b/src/org/mozilla/javascript/commonjs/module/provider/UrlConnectionSecurityDomainProvider.java
index 8810e04b..ce01e6be 100644
--- a/src/org/mozilla/javascript/commonjs/module/provider/UrlConnectionSecurityDomainProvider.java
+++ b/src/org/mozilla/javascript/commonjs/module/provider/UrlConnectionSecurityDomainProvider.java
@@ -12,7 +12,7 @@ import org.mozilla.javascript.Context;
* Interface for URL connection based security domain providers. Used by
* {@link UrlModuleSourceProvider} to create Rhino security domain objects for
* newly loaded scripts (see {@link Context#compileReader(java.io.Reader,
- * String, int, Object)}, in {@link Context}) based on the properties obtainable through their URL
+ * String, int, Object)}) based on the properties obtainable through their URL
* connection.
* @author Attila Szegedi
* @version $Id: UrlConnectionSecurityDomainProvider.java,v 1.3 2011/04/07 20:26:12 hannes%helma.at Exp $
diff --git a/src/org/mozilla/javascript/jdk13/VMBridge_jdk13.java b/src/org/mozilla/javascript/jdk13/VMBridge_jdk13.java
new file mode 100644
index 00000000..e8726cb0
--- /dev/null
+++ b/src/org/mozilla/javascript/jdk13/VMBridge_jdk13.java
@@ -0,0 +1,154 @@
+/* -*- Mode: java; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+package org.mozilla.javascript.jdk13;
+
+import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Member;
+import java.lang.reflect.Proxy;
+
+import org.mozilla.javascript.*;
+
+public class VMBridge_jdk13 extends VMBridge
+{
+ private ThreadLocal contextLocal = new ThreadLocal();
+
+ @Override
+ protected Object getThreadContextHelper()
+ {
+ // To make subsequent batch calls to getContext/setContext faster
+ // associate permanently one element array with contextLocal
+ // so getContext/setContext would need just to read/write the first
+ // array element.
+ // Note that it is necessary to use Object[], not Context[] to allow
+ // garbage collection of Rhino classes. For details see comments
+ // by Attila Szegedi in
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=281067#c5
+
+ Object[] storage = contextLocal.get();
+ if (storage == null) {
+ storage = new Object[1];
+ contextLocal.set(storage);
+ }
+ return storage;
+ }
+
+ @Override
+ protected Context getContext(Object contextHelper)
+ {
+ Object[] storage = (Object[])contextHelper;
+ return (Context)storage[0];
+ }
+
+ @Override
+ protected void setContext(Object contextHelper, Context cx)
+ {
+ Object[] storage = (Object[])contextHelper;
+ storage[0] = cx;
+ }
+
+ @Override
+ protected ClassLoader getCurrentThreadClassLoader()
+ {
+ return Thread.currentThread().getContextClassLoader();
+ }
+
+ @Override
+ protected boolean tryToMakeAccessible(Object accessibleObject)
+ {
+ if (!(accessibleObject instanceof AccessibleObject)) {
+ return false;
+ }
+ AccessibleObject accessible = (AccessibleObject)accessibleObject;
+ if (accessible.isAccessible()) {
+ return true;
+ }
+ try {
+ accessible.setAccessible(true);
+ } catch (Exception ex) { }
+
+ return accessible.isAccessible();
+ }
+
+ @Override
+ protected Object getInterfaceProxyHelper(ContextFactory cf,
+ Class>[] interfaces)
+ {
+ // XXX: How to handle interfaces array withclasses from different
+ // class loaders? Using cf.getApplicationClassLoader() ?
+ ClassLoader loader = interfaces[0].getClassLoader();
+ Class> cl = Proxy.getProxyClass(loader, interfaces);
+ Constructor> c;
+ try {
+ c = cl.getConstructor(new Class[] { InvocationHandler.class });
+ } catch (NoSuchMethodException ex) {
+ // Should not happen
+ throw Kit.initCause(new IllegalStateException(), ex);
+ }
+ return c;
+ }
+
+ @Override
+ protected Object newInterfaceProxy(Object proxyHelper,
+ final ContextFactory cf,
+ final InterfaceAdapter adapter,
+ final Object target,
+ final Scriptable topScope)
+ {
+ Constructor> c = (Constructor>)proxyHelper;
+
+ InvocationHandler handler = new InvocationHandler() {
+ public Object invoke(Object proxy,
+ Method method,
+ Object[] args)
+ {
+ // In addition to methods declared in the interface, proxies
+ // also route some java.lang.Object methods through the
+ // invocation handler.
+ if (method.getDeclaringClass() == Object.class) {
+ String methodName = method.getName();
+ if (methodName.equals("equals")) {
+ Object other = args[0];
+ // Note: we could compare a proxy and its wrapped function
+ // as equal here but that would break symmetry of equal().
+ // The reason == suffices here is that proxies are cached
+ // in ScriptableObject (see NativeJavaObject.coerceType())
+ return Boolean.valueOf(proxy == other);
+ }
+ if (methodName.equals("hashCode")) {
+ return Integer.valueOf(target.hashCode());
+ }
+ if (methodName.equals("toString")) {
+ return "Proxy[" + target.toString() + "]";
+ }
+ }
+ return adapter.invoke(cf, target, topScope, proxy, method, args);
+ }
+ };
+ Object proxy;
+ try {
+ proxy = c.newInstance(handler);
+ } catch (InvocationTargetException ex) {
+ throw Context.throwAsScriptRuntimeEx(ex);
+ } catch (IllegalAccessException ex) {
+ // Should not happen
+ throw Kit.initCause(new IllegalStateException(), ex);
+ } catch (InstantiationException ex) {
+ // Should not happen
+ throw Kit.initCause(new IllegalStateException(), ex);
+ }
+ return proxy;
+ }
+
+ @Override
+ protected boolean isVarArgs(Member member) {
+ return false;
+ }
+}
diff --git a/src/org/mozilla/javascript/jdk15/VMBridge_jdk15.java b/src/org/mozilla/javascript/jdk15/VMBridge_jdk15.java
index 89153845..1115c790 100644
--- a/src/org/mozilla/javascript/jdk15/VMBridge_jdk15.java
+++ b/src/org/mozilla/javascript/jdk15/VMBridge_jdk15.java
@@ -6,17 +6,13 @@
package org.mozilla.javascript.jdk15;
+import java.lang.reflect.Member;
import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
-import java.util.Iterator;
-import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.InvocationTargetException;
-
+import java.util.Iterator;
import org.mozilla.javascript.*;
-public class VMBridge_jdk15 extends VMBridge
+public class VMBridge_jdk15 extends org.mozilla.javascript.jdk13.VMBridge_jdk13
{
public VMBridge_jdk15() throws SecurityException, InstantiationException {
try {
@@ -31,123 +27,14 @@ public class VMBridge_jdk15 extends VMBridge
}
}
- private ThreadLocal contextLocal = new ThreadLocal();
-
- @Override
- protected Object getThreadContextHelper()
- {
- // To make subsequent batch calls to getContext/setContext faster
- // associate permanently one element array with contextLocal
- // so getContext/setContext would need just to read/write the first
- // array element.
- // Note that it is necessary to use Object[], not Context[] to allow
- // garbage collection of Rhino classes. For details see comments
- // by Attila Szegedi in
- // https://bugzilla.mozilla.org/show_bug.cgi?id=281067#c5
-
- Object[] storage = contextLocal.get();
- if (storage == null) {
- storage = new Object[1];
- contextLocal.set(storage);
- }
- return storage;
- }
-
- @Override
- protected Context getContext(Object contextHelper)
- {
- Object[] storage = (Object[])contextHelper;
- return (Context)storage[0];
- }
-
- @Override
- protected void setContext(Object contextHelper, Context cx)
- {
- Object[] storage = (Object[])contextHelper;
- storage[0] = cx;
- }
-
- @Override
- protected boolean tryToMakeAccessible(AccessibleObject accessible)
- {
- if (accessible.isAccessible()) {
- return true;
- }
- try {
- accessible.setAccessible(true);
- } catch (Exception ex) { }
-
- return accessible.isAccessible();
- }
-
- @Override
- protected Object getInterfaceProxyHelper(ContextFactory cf,
- Class>[] interfaces)
- {
- // XXX: How to handle interfaces array withclasses from different
- // class loaders? Using cf.getApplicationClassLoader() ?
- ClassLoader loader = interfaces[0].getClassLoader();
- Class> cl = Proxy.getProxyClass(loader, interfaces);
- Constructor> c;
- try {
- c = cl.getConstructor(new Class[] { InvocationHandler.class });
- } catch (NoSuchMethodException ex) {
- // Should not happen
- throw Kit.initCause(new IllegalStateException(), ex);
- }
- return c;
- }
-
@Override
- protected Object newInterfaceProxy(Object proxyHelper,
- final ContextFactory cf,
- final InterfaceAdapter adapter,
- final Object target,
- final Scriptable topScope)
- {
- Constructor> c = (Constructor>)proxyHelper;
-
- InvocationHandler handler = new InvocationHandler() {
- public Object invoke(Object proxy,
- Method method,
- Object[] args)
- {
- // In addition to methods declared in the interface, proxies
- // also route some java.lang.Object methods through the
- // invocation handler.
- if (method.getDeclaringClass() == Object.class) {
- String methodName = method.getName();
- if (methodName.equals("equals")) {
- Object other = args[0];
- // Note: we could compare a proxy and its wrapped function
- // as equal here but that would break symmetry of equal().
- // The reason == suffices here is that proxies are cached
- // in ScriptableObject (see NativeJavaObject.coerceType())
- return Boolean.valueOf(proxy == other);
- }
- if (methodName.equals("hashCode")) {
- return Integer.valueOf(target.hashCode());
- }
- if (methodName.equals("toString")) {
- return "Proxy[" + target.toString() + "]";
- }
- }
- return adapter.invoke(cf, target, topScope, proxy, method, args);
- }
- };
- Object proxy;
- try {
- proxy = c.newInstance(handler);
- } catch (InvocationTargetException ex) {
- throw Context.throwAsScriptRuntimeEx(ex);
- } catch (IllegalAccessException ex) {
- // Should not happen
- throw Kit.initCause(new IllegalStateException(), ex);
- } catch (InstantiationException ex) {
- // Should not happen
- throw Kit.initCause(new IllegalStateException(), ex);
- }
- return proxy;
+ public boolean isVarArgs(Member member) {
+ if (member instanceof Method)
+ return ((Method) member).isVarArgs();
+ else if (member instanceof Constructor)
+ return ((Constructor>) member).isVarArgs();
+ else
+ return false;
}
/**
@@ -156,7 +43,7 @@ public class VMBridge_jdk15 extends VMBridge
* This method is in VMBridge since Iterable is a JDK 1.5 addition.
*/
@Override
- protected Iterator> getJavaIterator(Context cx, Scriptable scope, Object obj) {
+ public Iterator> getJavaIterator(Context cx, Scriptable scope, Object obj) {
if (obj instanceof Wrapper) {
Object unwrapped = ((Wrapper) obj).unwrap();
Iterator> iterator = null;
@@ -168,9 +55,4 @@ public class VMBridge_jdk15 extends VMBridge
}
return null;
}
-
- @Override
- public boolean isDefaultMethod(Method method) {
- return false;
- }
}
diff --git a/src/org/mozilla/javascript/jdk18/VMBridge_jdk18.java b/src/org/mozilla/javascript/jdk18/VMBridge_jdk18.java
deleted file mode 100644
index 9b6ece8a..00000000
--- a/src/org/mozilla/javascript/jdk18/VMBridge_jdk18.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/* -*- Mode: java; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-package org.mozilla.javascript.jdk18;
-
-import java.lang.reflect.Method;
-
-public class VMBridge_jdk18 extends org.mozilla.javascript.jdk15.VMBridge_jdk15
-{
- public VMBridge_jdk18() throws SecurityException, InstantiationException {
- super();
- }
-
- @Override
- public boolean isDefaultMethod(Method method) {
- return method.isDefault();
- }
-}
diff --git a/src/org/mozilla/javascript/optimizer/Codegen.java b/src/org/mozilla/javascript/optimizer/Codegen.java
index b1ce6f35..9ecceda7 100644
--- a/src/org/mozilla/javascript/optimizer/Codegen.java
+++ b/src/org/mozilla/javascript/optimizer/Codegen.java
@@ -407,7 +407,7 @@ public class Codegen implements Evaluator
boolean hasGenerators = false;
for (int i=0; i < scriptOrFnNodes.length; i++) {
if (isGenerator(scriptOrFnNodes[i]))
- hasGenerators = true;
+ hasGenerators = true;
}
// if there are no generators defined, we don't implement a
@@ -2561,7 +2561,7 @@ class BodyCodegen
}
else {
cfw.addALoad(variableObjectLocal);
- addScriptRuntimeInvoke(
+ addScriptRuntimeInvoke(
"getObjectElem",
"(Ljava/lang/Object;"
+"Ljava/lang/Object;"
diff --git a/src/org/mozilla/javascript/regexp/NativeRegExp.java b/src/org/mozilla/javascript/regexp/NativeRegExp.java
index c3cb724a..75c83a72 100644
--- a/src/org/mozilla/javascript/regexp/NativeRegExp.java
+++ b/src/org/mozilla/javascript/regexp/NativeRegExp.java
@@ -39,7 +39,8 @@ public class NativeRegExp extends IdScriptableObject implements Function
{
static final long serialVersionUID = 4965263491464903264L;
- private static final Object REGEXP_TAG = new Object();
+ private static final Object REGEXP_TAG = new Serializable() {
+ };
public static final int JSREG_GLOB = 0x1; // 'g' flag: global
public static final int JSREG_FOLD = 0x2; // 'i' flag: fold
@@ -157,7 +158,7 @@ public class NativeRegExp extends IdScriptableObject implements Function
@Override
public String getTypeOf()
{
- return "object";
+ return "object";
}
public Object call(Context cx, Scriptable scope, Scriptable thisObj,
@@ -606,7 +607,7 @@ public class NativeRegExp extends IdScriptableObject implements Function
break;
case 'u':
nDigits += 2;
- // fallthru
+ // fall thru...
case 'x':
n = 0;
for (i = 0; (i < nDigits) && (index < end); i++) {
@@ -948,7 +949,9 @@ public class NativeRegExp extends IdScriptableObject implements Function
/* UnicodeEscapeSequence */
case 'u':
nDigits += 2;
- /* fallthru */ case 'x': /* HexEscapeSequence */
+ // fall thru...
+ /* HexEscapeSequence */
+ case 'x':
{
int n = 0;
int i;
@@ -1142,33 +1145,32 @@ public class NativeRegExp extends IdScriptableObject implements Function
++state.cp;
min = getDecimalValue(c, state, 0xFFFF,
"msg.overlarge.min");
- if (state.cp < src.length) {
- c = src[state.cp];
- if (c == ',' && ++state.cp < src.length) {
+ c = src[state.cp];
+ if (c == ',') {
+ c = src[++state.cp];
+ if (isDigit(c)) {
+ ++state.cp;
+ max = getDecimalValue(c, state, 0xFFFF,
+ "msg.overlarge.max");
c = src[state.cp];
- if (isDigit(c) && ++state.cp < src.length) {
- max = getDecimalValue(c, state, 0xFFFF,
- "msg.overlarge.max");
- c = src[state.cp];
- if (min > max) {
- reportError("msg.max.lt.min",
- String.valueOf(src[state.cp]));
- return false;
- }
+ if (min > max) {
+ reportError("msg.max.lt.min",
+ String.valueOf(src[state.cp]));
+ return false;
}
- } else {
- max = min;
- }
- /* balance '{' */
- if (c == '}') {
- state.result = new RENode(REOP_QUANT);
- state.result.min = min;
- state.result.max = max;
- // QUANT, , , ,
- // , ...
- state.progLength += 12;
- hasQ = true;
}
+ } else {
+ max = min;
+ }
+ /* balance '{' */
+ if (c == '}') {
+ state.result = new RENode(REOP_QUANT);
+ state.result.min = min;
+ state.result.max = max;
+ // QUANT, , , ,
+ // , ...
+ state.progLength += 12;
+ hasQ = true;
}
}
if (!hasQ) {
@@ -1600,7 +1602,7 @@ public class NativeRegExp extends IdScriptableObject implements Function
break;
case 'u':
nDigits += 2;
- // fallthru
+ // fall thru
case 'x':
n = 0;
for (i = 0; (i < nDigits) && (src < end); i++) {
@@ -2400,7 +2402,7 @@ public class NativeRegExp extends IdScriptableObject implements Function
gData.cp = i;
gData.skipped = i - start;
for (int j = 0; j < re.parenCount; j++) {
- gData.parens[j] = -1L;
+ gData.parens[j] = -1l;
}
boolean result = executeREBytecode(gData, input, end);
@@ -2477,6 +2479,7 @@ public class NativeRegExp extends IdScriptableObject implements Function
res.parens = new SubString[re.parenCount];
for (num = 0; num < re.parenCount; num++) {
int cap_index = gData.parensIndex(num);
+ String parstr;
if (cap_index != -1) {
int cap_length = gData.parensLength(num);
parsub = new SubString(str, cap_index, cap_length);
diff --git a/src/org/mozilla/javascript/regexp/RegExpImpl.java b/src/org/mozilla/javascript/regexp/RegExpImpl.java
index 4ab32c74..da875da8 100644
--- a/src/org/mozilla/javascript/regexp/RegExpImpl.java
+++ b/src/org/mozilla/javascript/regexp/RegExpImpl.java
@@ -579,7 +579,7 @@ public class RegExpImpl implements RegExpProxy {
* that matched part of the delimiter in the new array, after the
* split substring that was delimited.
*/
- if (re != null && matched[0]) {
+ if (re != null && matched[0] == true) {
int size = parens[0].length;
for (int num = 0; num < size; num++) {
if (limited && len >= limit)
diff --git a/src/org/mozilla/javascript/resources/Messages.properties b/src/org/mozilla/javascript/resources/Messages.properties
index 6ef671f5..bc703cea 100644
--- a/src/org/mozilla/javascript/resources/Messages.properties
+++ b/src/org/mozilla/javascript/resources/Messages.properties
@@ -26,11 +26,6 @@ implementation.version = @IMPLEMENTATION.VERSION@
# SomeJavaClassWhereUsed
-params.omit.non.js.object.warning = true
-
-msg.non.js.object.warning =\
- RHINO USAGE WARNING: Missed Context.javaToJS() conversion: Rhino runtime detected object "{0}" of class "{1}" where it expected String, Number, Boolean or Scriptable instance. Please check your code for missing Context.javaToJS() call.
-
# Codegen
msg.dup.parms =\
Duplicate parameter name "{0}".
@@ -547,7 +542,7 @@ msg.prop.not.found =\
Property {0} not found.
msg.set.prop.no.setter =\
- Cannot set property {0} that has only a getter.
+ Cannot set property [{1}].{0} that has only a getter to {2}.
msg.invalid.type =\
Invalid JavaScript value of type {0}
@@ -864,22 +859,3 @@ msg.arrowfunction.generator =\
# Arguments
msg.arguments.not.access.strict =\
Cannot access "{0}" property of the arguments object in strict mode.
-
-# Symbol support
-msg.object.not.symbolscriptable =\
- Object {0} does not support Symbol keys
-
-msg.no.assign.symbol.strict =\
- Symbol objects may not be assigned properties in strict mode
-
-msg.not.a.string =\
- The object is not a string
-
-msg.not.a.number =\
- The object is not a number
-
-msg.no.symbol.new =\
- Symbol objects may not be constructed using \"new\"
-
-msg.compare.symbol =\
- Symbol objects may not be compared
\ No newline at end of file
diff --git a/src/org/mozilla/javascript/typedarrays/NativeDataView.java b/src/org/mozilla/javascript/typedarrays/NativeDataView.java
index 4e8d16f7..156fb1a3 100644
--- a/src/org/mozilla/javascript/typedarrays/NativeDataView.java
+++ b/src/org/mozilla/javascript/typedarrays/NativeDataView.java
@@ -96,22 +96,22 @@ public class NativeDataView
{
checkOffset(args, 0);
- int pos = ScriptRuntime.toInt32(args[0]);
- rangeCheck(pos, bytes);
+ int offset = ScriptRuntime.toInt32(args[0]);
+ rangeCheck(offset, bytes);
boolean littleEndian =
(isArg(args, 1) && (bytes > 1) && ScriptRuntime.toBoolean(args[1]));
switch (bytes) {
case 1:
- return (signed ? ByteIo.readInt8(arrayBuffer.buffer, offset + pos) :
- ByteIo.readUint8(arrayBuffer.buffer, offset + pos));
+ return (signed ? ByteIo.readInt8(arrayBuffer.buffer, offset) :
+ ByteIo.readUint8(arrayBuffer.buffer, offset));
case 2:
- return (signed ? ByteIo.readInt16(arrayBuffer.buffer, offset + pos, littleEndian) :
- ByteIo.readUint16(arrayBuffer.buffer, offset + pos, littleEndian));
+ return (signed ? ByteIo.readInt16(arrayBuffer.buffer, offset, littleEndian) :
+ ByteIo.readUint16(arrayBuffer.buffer, offset, littleEndian));
case 4:
- return (signed ? ByteIo.readInt32(arrayBuffer.buffer, offset + pos, littleEndian) :
- ByteIo.readUint32(arrayBuffer.buffer, offset + pos, littleEndian));
+ return (signed ? ByteIo.readInt32(arrayBuffer.buffer, offset, littleEndian) :
+ ByteIo.readUint32(arrayBuffer.buffer, offset, littleEndian));
default:
throw new AssertionError();
}
@@ -121,17 +121,17 @@ public class NativeDataView
{
checkOffset(args, 0);
- int pos = ScriptRuntime.toInt32(args[0]);
- rangeCheck(pos, bytes);
+ int offset = ScriptRuntime.toInt32(args[0]);
+ rangeCheck(offset, bytes);
boolean littleEndian =
(isArg(args, 1) && (bytes > 1) && ScriptRuntime.toBoolean(args[1]));
switch (bytes) {
case 4:
- return ByteIo.readFloat32(arrayBuffer.buffer, offset + pos, littleEndian);
+ return ByteIo.readFloat32(arrayBuffer.buffer, offset, littleEndian);
case 8:
- return ByteIo.readFloat64(arrayBuffer.buffer, offset + pos, littleEndian);
+ return ByteIo.readFloat64(arrayBuffer.buffer, offset, littleEndian);
default:
throw new AssertionError();
}
@@ -142,8 +142,8 @@ public class NativeDataView
checkOffset(args, 0);
checkValue(args, 1);
- int pos = ScriptRuntime.toInt32(args[0]);
- rangeCheck(pos, bytes);
+ int offset = ScriptRuntime.toInt32(args[0]);
+ rangeCheck(offset, bytes);
boolean littleEndian =
(isArg(args, 2) && (bytes > 1) && ScriptRuntime.toBoolean(args[2]));
@@ -151,23 +151,23 @@ public class NativeDataView
switch (bytes) {
case 1:
if (signed) {
- ByteIo.writeInt8(arrayBuffer.buffer, offset + pos, Conversions.toInt8(args[1]));
+ ByteIo.writeInt8(arrayBuffer.buffer, offset, Conversions.toInt8(args[1]));
} else {
- ByteIo.writeUint8(arrayBuffer.buffer, offset + pos, Conversions.toUint8(args[1]));
+ ByteIo.writeUint8(arrayBuffer.buffer, offset, Conversions.toUint8(args[1]));
}
break;
case 2:
if (signed) {
- ByteIo.writeInt16(arrayBuffer.buffer, offset + pos, Conversions.toInt16(args[1]), littleEndian);
+ ByteIo.writeInt16(arrayBuffer.buffer, offset, Conversions.toInt16(args[1]), littleEndian);
} else {
- ByteIo.writeUint16(arrayBuffer.buffer, offset + pos, Conversions.toUint16(args[1]), littleEndian);
+ ByteIo.writeUint16(arrayBuffer.buffer, offset, Conversions.toUint16(args[1]), littleEndian);
}
break;
case 4:
if (signed) {
- ByteIo.writeInt32(arrayBuffer.buffer, offset + pos, Conversions.toInt32(args[1]), littleEndian);
+ ByteIo.writeInt32(arrayBuffer.buffer, offset, Conversions.toInt32(args[1]), littleEndian);
} else {
- ByteIo.writeUint32(arrayBuffer.buffer, offset + pos, Conversions.toUint32(args[1]), littleEndian);
+ ByteIo.writeUint32(arrayBuffer.buffer, offset, Conversions.toUint32(args[1]), littleEndian);
}
break;
default:
@@ -180,8 +180,8 @@ public class NativeDataView
checkOffset(args, 0);
checkValue(args, 1);
- int pos = ScriptRuntime.toInt32(args[0]);
- rangeCheck(pos, bytes);
+ int offset = ScriptRuntime.toInt32(args[0]);
+ rangeCheck(offset, bytes);
boolean littleEndian =
(isArg(args, 2) && (bytes > 1) && ScriptRuntime.toBoolean(args[2]));
@@ -189,10 +189,10 @@ public class NativeDataView
switch (bytes) {
case 4:
- ByteIo.writeFloat32(arrayBuffer.buffer, offset + pos, val, littleEndian);
+ ByteIo.writeFloat32(arrayBuffer.buffer, offset, val, littleEndian);
break;
case 8:
- ByteIo.writeFloat64(arrayBuffer.buffer, offset + pos, val, littleEndian);
+ ByteIo.writeFloat64(arrayBuffer.buffer, offset, val, littleEndian);
break;
default:
throw new AssertionError();
diff --git a/src/org/mozilla/javascript/typedarrays/NativeTypedArrayView.java b/src/org/mozilla/javascript/typedarrays/NativeTypedArrayView.java
index 546e22ab..d6f7bc40 100644
--- a/src/org/mozilla/javascript/typedarrays/NativeTypedArrayView.java
+++ b/src/org/mozilla/javascript/typedarrays/NativeTypedArrayView.java
@@ -13,8 +13,6 @@ import org.mozilla.javascript.NativeArray;
import org.mozilla.javascript.NativeArrayIterator;
import org.mozilla.javascript.ScriptRuntime;
import org.mozilla.javascript.Scriptable;
-import org.mozilla.javascript.Symbol;
-import org.mozilla.javascript.SymbolKey;
import org.mozilla.javascript.Undefined;
import java.lang.reflect.Array;
@@ -24,6 +22,8 @@ import java.util.List;
import java.util.ListIterator;
import java.util.RandomAccess;
+import static org.mozilla.javascript.NativeSymbol.ITERATOR_PROPERTY;
+
/**
* This class is the abstract parent for all of the various typed arrays. Each one
* shows a view of a specific NativeArrayBuffer, and modifications here will affect the rest.
@@ -285,7 +285,7 @@ public abstract class NativeTypedArrayView
throw ScriptRuntime.constructError("Error", "invalid arguments");
}
- case SymbolId_iterator:
+ case Id_iterator:
return new NativeArrayIterator(scope, thisObj);
}
throw new IllegalArgumentException(String.valueOf(id));
@@ -294,39 +294,26 @@ public abstract class NativeTypedArrayView
@Override
protected void initPrototypeId(int id)
{
- if (id == SymbolId_iterator) {
- initPrototypeMethod(getClassName(), id, SymbolKey.ITERATOR, "[Symbol.iterator]", 0);
- return;
- }
-
- String s, fnName = null;
+ String s, fnName = null;;
int arity;
switch (id) {
case Id_constructor: arity = 1; s = "constructor"; break;
case Id_get: arity = 1; s = "get"; break;
case Id_set: arity = 2; s = "set"; break;
case Id_subarray: arity = 2; s = "subarray"; break;
+ case Id_iterator: arity = 0; s = ITERATOR_PROPERTY; fnName="[Symbol.iterator]"; break;
default: throw new IllegalArgumentException(String.valueOf(id));
}
initPrototypeMethod(getClassName(), id, s, fnName, arity);
}
- @Override
- protected int findPrototypeId(Symbol k)
- {
- if (SymbolKey.ITERATOR.equals(k)) {
- return SymbolId_iterator;
- }
- return 0;
- }
-
// #string_id_map#
@Override
protected int findPrototypeId(String s)
{
int id;
-// #generated# Last update: 2016-03-04 20:59:23 GMT
+// #generated# Last update: 2014-12-04 18:21:01 PST
L0: { id = 0; String X = null; int c;
int s_length = s.length();
if (s_length==3) {
@@ -335,6 +322,7 @@ public abstract class NativeTypedArrayView
else if (c=='s') { if (s.charAt(2)=='t' && s.charAt(1)=='e') {id=Id_set; break L0;} }
}
else if (s_length==8) { X="subarray";id=Id_subarray; }
+ else if (s_length==10) { X="@@iterator";id=Id_iterator; }
else if (s_length==11) { X="constructor";id=Id_constructor; }
if (X!=null && X!=s && !X.equals(s)) id = 0;
break L0;
@@ -349,10 +337,10 @@ public abstract class NativeTypedArrayView
Id_get = 2,
Id_set = 3,
Id_subarray = 4,
- SymbolId_iterator = 5;
+ Id_iterator = 5;
protected static final int
- MAX_PROTOTYPE_ID = SymbolId_iterator;
+ MAX_PROTOTYPE_ID = Id_iterator;
// #/string_id_map#
@@ -555,7 +543,7 @@ public abstract class NativeTypedArrayView
for (int i = 0; i < length; i++) {
hc += js_get(i).hashCode();
}
- return hc;
+ return 0;
}
@SuppressWarnings("unused")
diff --git a/src/org/mozilla/javascript/v8dtoa/FastDtoa.java b/src/org/mozilla/javascript/v8dtoa/FastDtoa.java
index d4987fcb..424b6035 100644
--- a/src/org/mozilla/javascript/v8dtoa/FastDtoa.java
+++ b/src/org/mozilla/javascript/v8dtoa/FastDtoa.java
@@ -355,7 +355,7 @@ public class FastDtoa {
// such that: too_low < buffer * 10^kappa < too_high
// We use too_high for the digit_generation and stop as soon as possible.
// If we stop early we effectively round down.
- DiyFp one = new DiyFp(1L << -w.e(), w.e());
+ DiyFp one = new DiyFp(1l << -w.e(), w.e());
// Division by one is a shift.
int integrals = (int)((too_high.f() >>> -one.e()) & 0xffffffffL);
// Modulo by one is an and.
diff --git a/src/org/mozilla/javascript/xml/XMLLib.java b/src/org/mozilla/javascript/xml/XMLLib.java
index 8c7b40fb..644da702 100644
--- a/src/org/mozilla/javascript/xml/XMLLib.java
+++ b/src/org/mozilla/javascript/xml/XMLLib.java
@@ -12,28 +12,27 @@ public abstract class XMLLib
{
private static final Object XML_LIB_KEY = new Object();
- /**
- * An object which specifies an XMLLib implementation to be used at runtime.
- *
- * This interface should be considered experimental. It may be better
- * (and certainly more flexible) to write an interface that returns an
- * XMLLib object rather than a class name, for example. But that would
- * cause many more ripple effects in the code, all the way back to
- * {@link ScriptRuntime}.
- */
- public static abstract class Factory {
-
- public static Factory create(final String className) {
- return new Factory() {
- @Override
- public String getImplementationClassName() {
- return className;
- }
- };
- }
-
- public abstract String getImplementationClassName();
- }
+ /**
+ An object which specifies an XMLLib implementation to be used at runtime.
+
+ This interface should be considered experimental. It may be better
+ (and certainly more flexible) to write an interface that returns an
+ XMLLib object rather than a class name, for example. But that would
+ cause many more ripple effects in the code, all the way back to
+ {@link ScriptRuntime}.
+ */
+ public static abstract class Factory {
+ public static Factory create(final String className) {
+ return new Factory() {
+ @Override
+ public String getImplementationClassName() {
+ return className;
+ }
+ };
+ }
+
+ public abstract String getImplementationClassName();
+ }
public static XMLLib extractFromScopeOrNull(Scriptable scope)
{
@@ -105,7 +104,7 @@ public abstract class XMLLib
}
public void setIgnoreWhitespace(boolean b) {
- throw new UnsupportedOperationException();
+ throw new UnsupportedOperationException();
}
public void setIgnoreProcessingInstructions(boolean b) {
diff --git a/src/org/mozilla/javascript/xml/XMLObject.java b/src/org/mozilla/javascript/xml/XMLObject.java
index 817cd335..f5b031ee 100644
--- a/src/org/mozilla/javascript/xml/XMLObject.java
+++ b/src/org/mozilla/javascript/xml/XMLObject.java
@@ -106,6 +106,6 @@ public abstract class XMLObject extends IdScriptableObject
@Override
public String getTypeOf()
{
- return avoidObjectDetection() ? "undefined" : "xml";
+ return avoidObjectDetection() ? "undefined" : "xml";
}
}
diff --git a/testsrc/doctests/array.every.doctest b/testsrc/doctests/array.every.doctest
deleted file mode 100644
index a4e63a4b..00000000
--- a/testsrc/doctests/array.every.doctest
+++ /dev/null
@@ -1,14 +0,0 @@
-// This Source Code Form is subject to the terms of the Mozilla Public
-// License, v. 2.0. If a copy of the MPL was not distributed with this
-// file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-js> Array.every;
-function every() { [native code for Array.every, arity=1] }
-
-js> function isSmall(n) { return n < 10; };
-
-js> Array.every([1, 4, 9, 16], isSmall);
-false
-
-js> Array.every([1, 4, 9], isSmall);
-true
diff --git a/testsrc/doctests/array.filter.doctest b/testsrc/doctests/array.filter.doctest
deleted file mode 100644
index 33bdaf30..00000000
--- a/testsrc/doctests/array.filter.doctest
+++ /dev/null
@@ -1,17 +0,0 @@
-// This Source Code Form is subject to the terms of the Mozilla Public
-// License, v. 2.0. If a copy of the MPL was not distributed with this
-// file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-js> function isSmall(n) { return n < 10; };
-
-js> [1, 13, 4, 16, 42].filter;
-function filter() { [native code for Array.filter, arity=1] }
-
-js> "" + [1, 13, 4, 16, 42].filter(isSmall);
-1,4
-
-js> Array.filter;
-function filter() { [native code for Array.filter, arity=1] }
-
-js> "" + Array.filter([1, 13, 4, 16, 42], isSmall);
-1,4
diff --git a/testsrc/doctests/array.find.doctest b/testsrc/doctests/array.find.doctest
deleted file mode 100644
index b5e9a548..00000000
--- a/testsrc/doctests/array.find.doctest
+++ /dev/null
@@ -1,19 +0,0 @@
-// This Source Code Form is subject to the terms of the Mozilla Public
-// License, v. 2.0. If a copy of the MPL was not distributed with this
-// file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-js> function isSmall(n) { return n < 10; };
-
-js> [13, 4, 17].find;
-function find() { [native code for Array.find, arity=1] }
-
-js> [13, 4, 17].find(isSmall);
-4
-
-js> Array.find;
-function find() { [native code for Array.find, arity=1] }
-
-js> res = '';
-js> Array.find([13, 4, 17], isSmall);
-4
-
diff --git a/testsrc/doctests/array.findIndex.doctest b/testsrc/doctests/array.findIndex.doctest
deleted file mode 100644
index ae1e004e..00000000
--- a/testsrc/doctests/array.findIndex.doctest
+++ /dev/null
@@ -1,17 +0,0 @@
-// This Source Code Form is subject to the terms of the Mozilla Public
-// License, v. 2.0. If a copy of the MPL was not distributed with this
-// file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-js> function isSmall(n) { return n < 10; };
-
-js> [13, 4, 17].findIndex;
-function findIndex() { [native code for Array.findIndex, arity=1] }
-
-js> [13, 4, 17].findIndex(isSmall);
-1
-
-js> Array.findIndex;
-function findIndex() { [native code for Array.findIndex, arity=1] }
-
-js> Array.findIndex([13, 4, 17], isSmall);
-1
diff --git a/testsrc/doctests/array.forEach.doctest b/testsrc/doctests/array.forEach.doctest
deleted file mode 100644
index 38414e2f..00000000
--- a/testsrc/doctests/array.forEach.doctest
+++ /dev/null
@@ -1,19 +0,0 @@
-// This Source Code Form is subject to the terms of the Mozilla Public
-// License, v. 2.0. If a copy of the MPL was not distributed with this
-// file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-js> [1, 13, 4].forEach;
-function forEach() { [native code for Array.forEach, arity=1] }
-
-js> res = '';
-js> [1, 13, 4].forEach(function(elem) { res += elem });
-js> res
-1134
-
-js> Array.forEach;
-function forEach() { [native code for Array.forEach, arity=1] }
-
-js> res = '';
-js> Array.forEach([1, 13, 4], function(elem) { res += elem });
-js> res
-1134
diff --git a/testsrc/doctests/array.map.doctest b/testsrc/doctests/array.map.doctest
deleted file mode 100644
index 20172ee6..00000000
--- a/testsrc/doctests/array.map.doctest
+++ /dev/null
@@ -1,15 +0,0 @@
-// This Source Code Form is subject to the terms of the Mozilla Public
-// License, v. 2.0. If a copy of the MPL was not distributed with this
-// file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-js> [9, 16, 25].map;
-function map() { [native code for Array.map, arity=1] }
-
-js> "" + [9, 16, 25].map(Math.sqrt);
-3,4,5
-
-js> Array.map;
-function map() { [native code for Array.map, arity=1] }
-
-js> "" + Array.map([9, 16, 25], Math.sqrt);
-3,4,5
diff --git a/testsrc/doctests/array.reduce.doctest b/testsrc/doctests/array.reduce.doctest
deleted file mode 100644
index e9755d4d..00000000
--- a/testsrc/doctests/array.reduce.doctest
+++ /dev/null
@@ -1,17 +0,0 @@
-// This Source Code Form is subject to the terms of the Mozilla Public
-// License, v. 2.0. If a copy of the MPL was not distributed with this
-// file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-js> function sum(acc, val) { return acc + val; };
-
-js> [1, 4, 9, 16].reduce;
-function reduce() { [native code for Array.reduce, arity=1] }
-
-js> [1, 4, 9, 16].reduce(sum);
-30
-
-js> Array.reduce;
-function reduce() { [native code for Array.reduce, arity=1] }
-
-js> Array.reduce([1, 4, 9, 16], sum);
-30
diff --git a/testsrc/doctests/array.reduceRight.doctest b/testsrc/doctests/array.reduceRight.doctest
deleted file mode 100644
index c359ef14..00000000
--- a/testsrc/doctests/array.reduceRight.doctest
+++ /dev/null
@@ -1,17 +0,0 @@
-// This Source Code Form is subject to the terms of the Mozilla Public
-// License, v. 2.0. If a copy of the MPL was not distributed with this
-// file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-js> function diff(acc, val) { return acc - val; };
-
-js> [1, 4, 9, 16].reduceRight;
-function reduceRight() { [native code for Array.reduceRight, arity=1] }
-
-js> [1, 4, 9, 16].reduceRight(diff);
-2
-
-js> Array.reduceRight;
-function reduceRight() { [native code for Array.reduceRight, arity=1] }
-
-js> Array.reduceRight([1, 4, 9, 16], diff);
-2
diff --git a/testsrc/doctests/array.some.doctest b/testsrc/doctests/array.some.doctest
deleted file mode 100644
index b7aa15e7..00000000
--- a/testsrc/doctests/array.some.doctest
+++ /dev/null
@@ -1,23 +0,0 @@
-// This Source Code Form is subject to the terms of the Mozilla Public
-// License, v. 2.0. If a copy of the MPL was not distributed with this
-// file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-js> function isSmall(n) { return n < 10; };
-
-js> [1, 4, 9, 16].some;
-function some() { [native code for Array.some, arity=1] }
-
-js> [1, 4, 9, 16].some(isSmall);
-true
-
-js> [19, 42].some(isSmall);
-false
-
-js> Array.some;
-function some() { [native code for Array.some, arity=1] }
-
-js> Array.some([1, 4, 9, 16], isSmall);
-true
-
-js> Array.some([19, 42], isSmall);
-false
diff --git a/testsrc/jstests/es6/for-of.js b/testsrc/jstests/es6/for-of.js
deleted file mode 100644
index aa847d51..00000000
--- a/testsrc/jstests/es6/for-of.js
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2015 the V8 project authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-load("testsrc/assert.js");
-
-(function TestForOfName() {
- var result = 0;
- var index;
-
- for (index of [1, 2, 3, 4, 5]) result += index;
-
- assertEquals(result, 15);
- assertEquals(index, 5);
-})();
-
-
-(function TestForOfProperty() {
- var O = {};
- var result = 0;
-
- for (O.index of [1, 2, 3, 4, 5]) result += O.index;
-
- assertEquals(result, 15);
- assertEquals(O.index, 5);
-})();
-
-"success";
\ No newline at end of file
diff --git a/testsrc/jstests/es6/symbols.js b/testsrc/jstests/es6/symbols.js
deleted file mode 100644
index f60dbc34..00000000
--- a/testsrc/jstests/es6/symbols.js
+++ /dev/null
@@ -1,577 +0,0 @@
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided
-// with the distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Flags: --expose-gc --allow-natives-syntax
-
-load("testsrc/assert.js");
-
-var symbols = []
-
-
-// Returns true if the string is a valid
-// serialization of Symbols added to the 'symbols'
-// array. Adjust if you extend 'symbols' with other
-// values.
-function isValidSymbolString(s) {
- return ["Symbol(66)", "Symbol()"].indexOf(s) >= 0;
-}
-
-
-// Test different forms of constructor calls.
-function TestNew() {
- function indirectSymbol() { return Symbol() }
- function indirect() { return indirectSymbol() }
- for (var i = 0; i < 2; ++i) {
- for (var j = 0; j < 5; ++j) {
- symbols.push(Symbol())
- symbols.push(Symbol(undefined))
- symbols.push(Symbol("66"))
- symbols.push(Symbol(66))
- symbols.push(Symbol().valueOf())
- symbols.push(indirect())
- }
- //%OptimizeFunctionOnNextCall(indirect)
- indirect() // Call once before GC throws away type feedback.
- gc() // Promote existing symbols and then allocate some more.
- }
- assertThrows(function () { Symbol(Symbol()) }, TypeError)
- assertThrows(function () { new Symbol(66) }, TypeError)
-}
-TestNew()
-
-
-function TestType() {
- for (var i in symbols) {
- assertEquals("symbol", typeof symbols[i])
- assertTrue(typeof symbols[i] === "symbol")
- //assertFalse(%SymbolIsPrivate(symbols[i]))
- //assertEquals(null, %_ClassOf(symbols[i]))
- // assertEquals("Symbol", %_ClassOf(Object(symbols[i])))
- }
-}
-TestType()
-
-
-function TestPrototype() {
- assertSame(Object.prototype, Symbol.prototype.__proto__)
- assertSame(Symbol.prototype, Symbol().__proto__)
- assertSame(Symbol.prototype, Object(Symbol()).__proto__)
- for (var i in symbols) {
- assertSame(Symbol.prototype, symbols[i].__proto__)
- }
-}
-TestPrototype()
-
-
-function TestConstructor() {
- // Rhino assertEquals(0, Symbol.length);
- assertSame(Function.prototype, Symbol.__proto__)
- assertFalse(Object === Symbol.prototype.constructor)
- assertFalse(Symbol === Object.prototype.constructor)
- assertSame(Symbol, Symbol.prototype.constructor)
- assertSame(Symbol, Symbol().__proto__.constructor)
- assertSame(Symbol, Object(Symbol()).__proto__.constructor)
- for (var i in symbols) {
- assertSame(Symbol, symbols[i].__proto__.constructor)
- }
-}
-TestConstructor()
-
-
-function TestValueOf() {
- for (var i in symbols) {
- assertTrue(symbols[i] === Object(symbols[i]).valueOf())
- assertTrue(symbols[i] === symbols[i].valueOf())
- assertTrue(Symbol.prototype.valueOf.call(Object(symbols[i])) === symbols[i])
- assertTrue(Symbol.prototype.valueOf.call(symbols[i]) === symbols[i])
- }
-}
-TestValueOf()
-
-
-function TestToString() {
- for (var i in symbols) {
- assertThrows(function() { new String(symbols[i]) }, TypeError)
- assertEquals(symbols[i].toString(), String(symbols[i]))
- assertThrows(function() { symbols[i] + "" }, TypeError)
- assertThrows(function() { String(Object(symbols[i])) }, TypeError)
- assertTrue(isValidSymbolString(symbols[i].toString()))
- assertTrue(isValidSymbolString(Object(symbols[i]).toString()))
- assertTrue(
- isValidSymbolString(Symbol.prototype.toString.call(symbols[i])))
- assertEquals(
- "[object Symbol]", Object.prototype.toString.call(symbols[i]))
- }
-}
-TestToString()
-
-
-function TestToBoolean() {
- for (var i in symbols) {
- assertTrue(Boolean(Object(symbols[i])))
- assertFalse(!Object(symbols[i]))
- assertTrue(Boolean(symbols[i]).valueOf())
- assertFalse(!symbols[i])
- assertTrue(!!symbols[i])
- assertTrue(symbols[i] && true)
- assertFalse(!symbols[i] && false)
- assertTrue(!symbols[i] || true)
- assertEquals(1, symbols[i] ? 1 : 2)
- assertEquals(2, !symbols[i] ? 1 : 2)
- if (!symbols[i]) assertUnreachable();
- if (symbols[i]) {} else assertUnreachable();
- }
-}
-TestToBoolean()
-
-
-function TestToNumber() {
- for (var i in symbols) {
- assertThrows(function() { Number(Object(symbols[i])) }, TypeError)
- assertThrows(function() { +Object(symbols[i]) }, TypeError)
- assertThrows(function() { Number(symbols[i]) }, TypeError)
- assertThrows(function() { symbols[i] + 0 }, TypeError)
- }
-}
-TestToNumber()
-
-
-function TestEquality() {
- // Every symbol should equal itself, and non-strictly equal its wrapper.
- for (var i in symbols) {
- assertSame(symbols[i], symbols[i])
- assertEquals(symbols[i], symbols[i])
- assertTrue(Object.is(symbols[i], symbols[i]))
- assertTrue(symbols[i] === symbols[i])
- assertTrue(symbols[i] == symbols[i])
- assertFalse(symbols[i] === Object(symbols[i]))
- assertFalse(Object(symbols[i]) === symbols[i])
- // Rhino assertTrue(symbols[i] == Object(symbols[i]))
- // Rhino assertTrue(Object(symbols[i]) == symbols[i])
- assertTrue(symbols[i] === symbols[i].valueOf())
- assertTrue(symbols[i].valueOf() === symbols[i])
- assertTrue(symbols[i] == symbols[i].valueOf())
- assertTrue(symbols[i].valueOf() == symbols[i])
- assertFalse(Object(symbols[i]) === Object(symbols[i]))
- assertEquals(Object(symbols[i]).valueOf(), Object(symbols[i]).valueOf())
- }
-
- // All symbols should be distinct.
- for (var i = 0; i < symbols.length; ++i) {
- for (var j = i + 1; j < symbols.length; ++j) {
- assertFalse(Object.is(symbols[i], symbols[j]))
- assertFalse(symbols[i] === symbols[j])
- assertFalse(symbols[i] == symbols[j])
- }
- }
-
- // Symbols should not be equal to any other value (and the test terminates).
- var values = [347, 1.275, NaN, "string", null, undefined, {}, function() {}]
- for (var i in symbols) {
- for (var j in values) {
- assertFalse(symbols[i] === values[j])
- assertFalse(values[j] === symbols[i])
- assertFalse(symbols[i] == values[j])
- assertFalse(values[j] == symbols[i])
- }
- }
-}
-TestEquality()
-
-
-function TestGet() {
- for (var i in symbols) {
- assertTrue(isValidSymbolString(symbols[i].toString()))
- assertEquals(symbols[i], symbols[i].valueOf())
- assertEquals(undefined, symbols[i].a)
- assertEquals(undefined, symbols[i]["a" + "b"])
- assertEquals(undefined, symbols[i]["" + "1"])
- assertEquals(undefined, symbols[i][62])
- }
-}
-TestGet()
-
-
-function TestSet() {
- for (var i in symbols) {
- symbols[i].toString = 0
- assertTrue(isValidSymbolString(symbols[i].toString()))
- symbols[i].valueOf = 0
- assertEquals(symbols[i], symbols[i].valueOf())
- symbols[i].a = 0
- assertEquals(undefined, symbols[i].a)
- symbols[i]["a" + "b"] = 0
- assertEquals(undefined, symbols[i]["a" + "b"])
- symbols[i][62] = 0
- assertEquals(undefined, symbols[i][62])
- }
-}
-TestSet()
-
-
-// Test Symbol wrapping/boxing over non-builtins.
-Symbol.prototype.getThisProto = function () {
- return Object.getPrototypeOf(this);
-}
-function TestCall() {
- for (var i in symbols) {
- assertTrue(symbols[i].getThisProto() === Symbol.prototype)
- }
-}
-// Rhino not sure what's up! TestCall()
-
-/* Rhino no collections
-
-function TestCollections() {
- var set = new Set
- var map = new Map
- for (var i in symbols) {
- set.add(symbols[i])
- map.set(symbols[i], i)
- }
- assertEquals(symbols.length, set.size)
- assertEquals(symbols.length, map.size)
- for (var i in symbols) {
- assertTrue(set.has(symbols[i]))
- assertTrue(map.has(symbols[i]))
- assertEquals(i, map.get(symbols[i]))
- }
- for (var i in symbols) {
- assertTrue(set.delete(symbols[i]))
- assertTrue(map.delete(symbols[i]))
- }
- assertEquals(0, set.size)
- assertEquals(0, map.size)
-}
-TestCollections()
-
-*/
-
-function TestKeySet(obj) {
- //assertTrue(%HasFastProperties(obj))
- // Set the even symbols via assignment.
- for (var i = 0; i < symbols.length; i += 2) {
- obj[symbols[i]] = i
- // Object should remain in fast mode until too many properties were added.
- //assertTrue(%HasFastProperties(obj) || i >= 30)
- }
-}
-
-
-function TestKeyDefine(obj) {
- // Set the odd symbols via defineProperty (as non-enumerable).
- for (var i = 1; i < symbols.length; i += 2) {
- Object.defineProperty(obj, symbols[i], {value: i, configurable: true})
- }
-}
-
-
-function TestKeyGet(obj) {
- var obj2 = Object.create(obj)
- for (var i in symbols) {
- assertEquals(i|0, obj[symbols[i]])
- assertEquals(i|0, obj2[symbols[i]])
- }
-}
-
-
-function TestKeyHas(obj) {
- for (var i in symbols) {
- assertTrue(symbols[i] in obj)
- assertTrue(Object.hasOwnProperty.call(obj, symbols[i]))
- }
-}
-
-
-function TestKeyEnum(obj) {
- for (var name in obj) {
- assertEquals("string", typeof name)
- }
-}
-
-
-function TestKeyNames(obj) {
- assertEquals(0, Object.keys(obj).length)
-
- var names = Object.getOwnPropertyNames(obj)
- for (var i in names) {
- assertEquals("string", typeof names[i]);
- }
-}
-
-
-function TestGetOwnPropertySymbols(obj) {
- var syms = Object.getOwnPropertySymbols(obj)
- assertEquals(syms.length, symbols.length)
- for (var i in syms) {
- assertEquals("symbol", typeof syms[i])
- }
-}
-
-
-function TestKeyDescriptor(obj) {
- for (var i in symbols) {
- var desc = Object.getOwnPropertyDescriptor(obj, symbols[i])
- assertEquals(i|0, desc.value)
- assertTrue(desc.configurable)
- assertEquals(i % 2 == 0, desc.writable)
- assertEquals(i % 2 == 0, desc.enumerable)
- assertEquals(i % 2 == 0,
- Object.prototype.propertyIsEnumerable.call(obj, symbols[i]))
- }
-}
-
-
-function TestKeyDelete(obj) {
- for (var i in symbols) {
- delete obj[symbols[i]]
- }
- for (var i in symbols) {
- assertEquals(undefined, Object.getOwnPropertyDescriptor(obj, symbols[i]))
- }
-}
-
-
-/* Rhino no Map
-var objs = [{}, [], Object.create({}), Object(1), new Map, function(){}]
-
-for (var i in objs) {
- var obj = objs[i]
- TestKeySet(obj)
- TestKeyDefine(obj)
- TestKeyGet(obj)
- TestKeyHas(obj)
- TestKeyEnum(obj)
- TestKeyNames(obj)
- TestGetOwnPropertySymbols(obj)
- TestKeyDescriptor(obj)
- TestKeyDelete(obj)
-}
-*/
-
-function TestDefineProperties() {
- var properties = {}
- for (var i in symbols) {
- Object.defineProperty(
- properties, symbols[i], {value: {value: i}, enumerable: i % 2 === 0})
- }
- var o = Object.defineProperties({}, properties)
- for (var i in symbols) {
- assertEquals(i % 2 === 0, symbols[i] in o)
- }
-}
-TestDefineProperties()
-
-
-function TestCreate() {
- var properties = {}
- for (var i in symbols) {
- Object.defineProperty(
- properties, symbols[i], {value: {value: i}, enumerable: i % 2 === 0})
- }
- var o = Object.create(Object.prototype, properties)
- for (var i in symbols) {
- assertEquals(i % 2 === 0, symbols[i] in o)
- }
-}
-TestCreate()
-
-
-function TestCachedKeyAfterScavenge() {
- gc();
- // Keyed property lookup are cached. Hereby we assume that the keys are
- // tenured, so that we only have to clear the cache between mark compacts,
- // but not between scavenges. This must also apply for symbol keys.
- var key = Symbol("key");
- var a = {};
- a[key] = "abc";
-
- for (var i = 0; i < 100000; i++) {
- a[key] += "a"; // Allocations cause a scavenge.
- }
-}
-TestCachedKeyAfterScavenge();
-
-
-function TestGetOwnPropertySymbolsWithProto() {
- // We need to be have fast properties to have insertion order for property
- // keys. The current limit is currently 30 properties.
- var syms = symbols.slice(0, 30);
- var proto = {}
- var object = Object.create(proto)
- for (var i = 0; i < syms.length; i++) {
- // Even on object, odd on proto.
- if (i % 2) {
- proto[syms[i]] = i
- } else {
- object[syms[i]] = i
- }
- }
-
- //assertTrue(%HasFastProperties(object));
-
- var objectOwnSymbols = Object.getOwnPropertySymbols(object)
- assertEquals(objectOwnSymbols.length, syms.length / 2)
-
- for (var i = 0; i < objectOwnSymbols.length; i++) {
- assertEquals(objectOwnSymbols[i], syms[i * 2])
- }
-}
-TestGetOwnPropertySymbolsWithProto()
-
-
-function TestWellKnown() {
- var symbols = [
- "hasInstance",
- // TODO(rossberg): reactivate once implemented.
- // "isConcatSpreadable", "isRegExp",
- "iterator", /* "toStringTag", */ "unscopables"
- ]
-
- for (var i in symbols) {
- var name = symbols[i]
- var desc = Object.getOwnPropertyDescriptor(Symbol, name)
- assertSame("symbol", typeof desc.value)
- assertSame("Symbol(Symbol." + name + ")", desc.value.toString())
- assertFalse(desc.writable)
- assertFalse(desc.configurable)
- assertFalse(desc.enumerable)
-
- assertFalse(Symbol.for("Symbol." + name) === desc.value)
- assertTrue(Symbol.keyFor(desc.value) === undefined)
- }
-}
-TestWellKnown()
-
-
-function TestRegistry() {
- var symbol1 = Symbol.for("x1")
- var symbol2 = Symbol.for("x2")
- assertFalse(symbol1 === symbol2)
-
- assertSame(symbol1, Symbol.for("x1"))
- assertSame(symbol2, Symbol.for("x2"))
- assertSame("x1", Symbol.keyFor(symbol1))
- assertSame("x2", Symbol.keyFor(symbol2))
-
- assertSame(Symbol.for("1"), Symbol.for(1))
- assertThrows(function() { Symbol.keyFor("bla") }, TypeError)
- assertThrows(function() { Symbol.keyFor({}) }, TypeError)
-
-/* Rhino no Realm
- var realm = Realm.create()
- assertFalse(Symbol === Realm.eval(realm, "Symbol"))
- assertFalse(Symbol.for === Realm.eval(realm, "Symbol.for"))
- assertFalse(Symbol.keyFor === Realm.eval(realm, "Symbol.keyFor"))
- assertSame(Symbol.create, Realm.eval(realm, "Symbol.create"))
- assertSame(Symbol.iterator, Realm.eval(realm, "Symbol.iterator"))
-
- assertSame(symbol1, Realm.eval(realm, "Symbol.for")("x1"))
- assertSame(symbol1, Realm.eval(realm, "Symbol.for('x1')"))
- assertSame("x1", Realm.eval(realm, "Symbol.keyFor")(symbol1))
- Realm.shared = symbol1
- assertSame("x1", Realm.eval(realm, "Symbol.keyFor(Realm.shared)"))
-
- var symbol3 = Realm.eval(realm, "Symbol.for('x3')")
- assertFalse(symbol1 === symbol3)
- assertFalse(symbol2 === symbol3)
- assertSame(symbol3, Symbol.for("x3"))
- assertSame("x3", Symbol.keyFor(symbol3))
- */
-}
-TestRegistry()
-
-
-function TestGetOwnPropertySymbolsOnPrimitives() {
- assertEquals(Object.getOwnPropertySymbols(true), []);
- assertEquals(Object.getOwnPropertySymbols(5000), []);
- assertEquals(Object.getOwnPropertySymbols("OK"), []);
-}
-TestGetOwnPropertySymbolsOnPrimitives();
-
-
-function TestComparison() {
- function lt() { var a = Symbol(); var b = Symbol(); a < b; }
- function gt() { var a = Symbol(); var b = Symbol(); a > b; }
- function le() { var a = Symbol(); var b = Symbol(); a <= b; }
- function ge() { var a = Symbol(); var b = Symbol(); a >= b; }
- function lt_same() { var a = Symbol(); a < a; }
- function gt_same() { var a = Symbol(); a > a; }
- function le_same() { var a = Symbol(); a <= a; }
- function ge_same() { var a = Symbol(); a >= a; }
-
- var throwFuncs = [lt, gt, le, ge, lt_same, gt_same, le_same, ge_same];
-
- for (var f of throwFuncs) {
- assertThrows(f, TypeError);
- //%OptimizeFunctionOnNextCall(f);
- assertThrows(f, TypeError);
- assertThrows(f, TypeError);
- }
-}
-TestComparison();
-
-
-// Make sure that throws occur in the context of the Symbol function.
-/* Rhino no Realm
-function TestContext() {
- var r = Realm.create();
- var rSymbol = Realm.eval(r, "Symbol");
- var rError = Realm.eval(r, "TypeError");
-
- function verifier(symbol, error) {
- try {
- new symbol();
- } catch(e) {
- return e.__proto__ === error.__proto__;
- }
- assertTrue(false); // should never get here.
- }
-
- assertTrue(verifier(Symbol, TypeError()));
- assertTrue(verifier(rSymbol, rError()));
- assertFalse(verifier(Symbol, rError()));
- assertFalse(verifier(rSymbol, TypeError()));
-}
-TestContext();
-*/
-
-function TestStringify(expected, input) {
- assertEquals(expected, JSON.stringify(input));
- assertEquals(expected, JSON.stringify(input, (key, value) => value));
- assertEquals(JSON.stringify(input, null, "="),
- JSON.stringify(input, (key, value) => value, "="));
-}
-
-// Rhino TestStringify(undefined, Symbol("a"));
-TestStringify('[{}]', [Object(Symbol())]);
-var symbol_wrapper = Object(Symbol("a"))
-TestStringify('{}', symbol_wrapper);
-symbol_wrapper.a = 1;
-TestStringify('{"a":1}', symbol_wrapper);
-
-"success";
diff --git a/testsrc/jstests/extensions/custom-comparators.js b/testsrc/jstests/extensions/custom-comparators.js
deleted file mode 100644
index ef64572a..00000000
--- a/testsrc/jstests/extensions/custom-comparators.js
+++ /dev/null
@@ -1,40 +0,0 @@
-load("testsrc/assert.js");
-
-function makeArray(length) {
- var a = [];
- for (var i = 0; i < length; i++) {
- a.push(Math.trunc(Math.random() * 100000));
- }
- return a;
-}
-
-function ensureSorted(a) {
- var last = 0;
- for (var i in a) {
- assertTrue(a[i] >= last);
- last = a[i];
- }
-}
-
-function compareIntGood(a, b) {
- if (a < b) {
- return -1;
- }
- if (b < a) {
- return 1;
- }
- return 0;
-}
-
-function compareIntBad(a, b) {
- return (Math.random() * 10) - 5;
-}
-
-var a = makeArray(100);
-a.sort(compareIntGood);
-ensureSorted(a);
-
-a = makeArray(10000);
-a.sort(compareIntBad);
-// Make sure that this does not throw.
-// However, at this point we should not assume that the array is properly sorted!
diff --git a/testsrc/jstests/harmony/dataview-accessors.js b/testsrc/jstests/harmony/dataview-accessors.js
index 501793dd..7f5e157a 100644
--- a/testsrc/jstests/harmony/dataview-accessors.js
+++ b/testsrc/jstests/harmony/dataview-accessors.js
@@ -462,29 +462,4 @@ function TestInsufficientArguments() {
TestInsufficientArguments();
-function TestOffsets(func, val) {
- var a = new ArrayBuffer(32);
- var view = new DataView(a);
- var sf = view["set" + func];
- sf.call(view, 0, val);
-
- var v1 = new DataView(a, 16, 16);
- var gf = v1["get" + func];
- var result = gf.call(v1, 0);
- assertEquals(0, result);
-
-}
-
-TestOffsets("Int8", 0xff);
-TestOffsets("Int16", 0xffff);
-TestOffsets("Int32", 0xffffffff);
-TestOffsets("Int8", -1);
-TestOffsets("Int16", -12);
-TestOffsets("Int32", -1234);
-TestOffsets("Uint8", 0xff);
-TestOffsets("Uint16", 0xffff);
-TestOffsets("Uint32", 0xffffffff);
-TestOffsets("Float32", 3.14);
-TestOffsets("Float64", 3.14159);
-
"success";
diff --git a/testsrc/jstests/harmony/symbols.js b/testsrc/jstests/harmony/symbols.js
index 42066550..459336c1 100644
--- a/testsrc/jstests/harmony/symbols.js
+++ b/testsrc/jstests/harmony/symbols.js
@@ -1,9 +1,7 @@
load("testsrc/assert.js");
-// Check basic property descriptors
-
assertTrue(Symbol.iterator !== undefined);
-var desc = Object.getOwnPropertyDescriptor(Symbol, "iterator");
+let desc = Object.getOwnPropertyDescriptor(Symbol, "iterator");
assertFalse(desc.writable);
assertFalse(desc.configurable);
assertFalse(desc.enumerable);
@@ -20,69 +18,7 @@ assertFalse(desc.writable);
assertFalse(desc.configurable);
assertFalse(desc.enumerable);
-// Check existence of Symbol stuff
-
assertEquals("symbol", typeof Symbol());
assertEquals("symbol", typeof Symbol("qwe"));
-// Create symbols and ensure that they are not the same
-
-var s1 = Symbol("sym");
-var s2 = Symbol("sym");
-var su = Symbol();
-assertFalse(s1 == s2);
-assertFalse(s1 === s2);
-
-// Check toString
-
-assertEquals("Symbol(sym)", s1.toString());
-assertEquals("Symbol()", su.toString());
-
-assertEquals("Symbol", Symbol.prototype[Symbol.toStringTag]);
-
-// Check the global symbol table
-
-var g1 = Symbol.for("global");
-var g2 = Symbol.for("global");
-assertEquals(g1, g2);
-assertSame(g1, g2);
-var k1 = Symbol.keyFor(g1);
-assertEquals("global", k1);
-var ku = Symbol.keyFor(s1);
-assertEquals(undefined, ku);
-
-// Use symbols as property identifiers.
-// They should work as elements but not as property names.
-
-var obj = {};
-obj.foo = 'foo';
-obj['bar'] = 'bar';
-obj[123] = 'baz';
-obj[s1] = 's1';
-
-assertEquals('foo', obj.foo);
-assertEquals('foo', obj['foo']);
-assertEquals('bar', obj.bar);
-assertEquals('bar', obj['bar']);
-assertEquals('baz', obj[123]);
-assertEquals('s1', obj[s1]);
-assertEquals(undefined, obj.s1);
-
-// Use symbols as function identifiers
-
-var callMeSym = Symbol("callMe");
-
-function callMe() {
- return "maybe";
-}
-
-function callMeTwice() {
- return "maybemaybe";
-}
-
-obj.callMe = callMe;
-obj[callMeSym] = callMeTwice;
-assertEquals("maybe", obj.callMe());
-assertEquals("maybemaybe", obj[callMeSym]());
-
"success";
diff --git a/testsrc/jstests/harmony/v8-symbols.js b/testsrc/jstests/harmony/v8-symbols.js
deleted file mode 100644
index 8544e126..00000000
--- a/testsrc/jstests/harmony/v8-symbols.js
+++ /dev/null
@@ -1,526 +0,0 @@
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided
-// with the distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Flags: --expose-gc --allow-natives-syntax --harmony-tostring
-
-load("testsrc/assert.js");
-
-var symbols = []
-
-
-// Returns true if the string is a valid
-// serialization of Symbols added to the 'symbols'
-// array. Adjust if you extend 'symbols' with other
-// values.
-function isValidSymbolString(s) {
- return ["Symbol(66)", "Symbol()"].indexOf(s) >= 0;
-}
-
-
-// Test different forms of constructor calls.
-function TestNew() {
- function indirectSymbol() { return Symbol() }
- function indirect() { return indirectSymbol() }
- for (var i = 0; i < 2; ++i) {
- for (var j = 0; j < 5; ++j) {
- symbols.push(Symbol())
- symbols.push(Symbol(undefined))
- symbols.push(Symbol("66"))
- symbols.push(Symbol(66))
- symbols.push(Symbol().valueOf())
- symbols.push(indirect())
- }
- //%OptimizeFunctionOnNextCall(indirect)
- indirect() // Call once before GC throws away type feedback.
- gc() // Promote existing symbols and then allocate some more.
- }
- assertThrows(function () { Symbol(Symbol()) }, TypeError)
- assertThrows(function () { new Symbol(66) }, TypeError)
-}
-TestNew()
-
-
-function TestType() {
- for (var i in symbols) {
- assertEquals("symbol", typeof symbols[i])
- assertTrue(typeof symbols[i] === "symbol")
- //assertFalse(%SymbolIsPrivate(symbols[i]))
- //assertEquals(null, %_ClassOf(symbols[i]))
- //assertEquals("Symbol", %_ClassOf(Object(symbols[i])))
- }
-}
-TestType()
-
-
-function TestPrototype() {
- assertSame(Object.prototype, Symbol.prototype.__proto__)
- assertSame(Symbol.prototype, Symbol().__proto__)
- assertSame(Symbol.prototype, Object(Symbol()).__proto__)
- for (var i in symbols) {
- assertSame(Symbol.prototype, symbols[i].__proto__)
- }
-}
-TestPrototype()
-
-
-function TestConstructor() {
- assertSame(Function.prototype, Symbol.__proto__)
- assertFalse(Object === Symbol.prototype.constructor)
- assertFalse(Symbol === Object.prototype.constructor)
- assertSame(Symbol, Symbol.prototype.constructor)
- assertSame(Symbol, Symbol().__proto__.constructor)
- assertSame(Symbol, Object(Symbol()).__proto__.constructor)
- for (var i in symbols) {
- assertSame(Symbol, symbols[i].__proto__.constructor)
- }
-}
-TestConstructor()
-
-
-function TestValueOf() {
- for (var i in symbols) {
- assertTrue(symbols[i] === Object(symbols[i]).valueOf())
- assertTrue(symbols[i] === symbols[i].valueOf())
- assertTrue(Symbol.prototype.valueOf.call(Object(symbols[i])) === symbols[i])
- assertTrue(Symbol.prototype.valueOf.call(symbols[i]) === symbols[i])
- }
-}
-TestValueOf()
-
-
-function TestToString() {
- for (var i in symbols) {
- assertThrows(function() { new String(symbols[i]) }, TypeError)
- assertEquals(symbols[i].toString(), String(symbols[i]))
- assertThrows(function() { symbols[i] + "" }, TypeError)
- assertThrows(function() { String(Object(symbols[i])) }, TypeError)
- assertTrue(isValidSymbolString(symbols[i].toString()))
- assertTrue(isValidSymbolString(Object(symbols[i]).toString()))
- assertTrue(
- isValidSymbolString(Symbol.prototype.toString.call(symbols[i])))
- assertEquals(
- "[object Symbol]", Object.prototype.toString.call(symbols[i]))
- }
-}
-TestToString()
-
-
-function TestToBoolean() {
- for (var i in symbols) {
- assertTrue(Boolean(Object(symbols[i])))
- assertFalse(!Object(symbols[i]))
- assertTrue(Boolean(symbols[i]).valueOf())
- assertFalse(!symbols[i])
- assertTrue(!!symbols[i])
- assertTrue(symbols[i] && true)
- assertFalse(!symbols[i] && false)
- assertTrue(!symbols[i] || true)
- assertEquals(1, symbols[i] ? 1 : 2)
- assertEquals(2, !symbols[i] ? 1 : 2)
- if (!symbols[i]) assertUnreachable();
- if (symbols[i]) {} else assertUnreachable();
- }
-}
-TestToBoolean()
-
-
-function TestToNumber() {
- for (var i in symbols) {
- assertThrows(function() { Number(Object(symbols[i])) }, TypeError)
- assertThrows(function() { +Object(symbols[i]) }, TypeError)
- assertThrows(function() { Number(symbols[i]) }, TypeError)
- assertThrows(function() { symbols[i] + 0 }, TypeError)
- }
-}
-TestToNumber()
-
-
-function TestEquality() {
- // Every symbol should equal itself, and non-strictly equal its wrapper.
- for (var i in symbols) {
- assertSame(symbols[i], symbols[i])
- assertEquals(symbols[i], symbols[i])
- // TODO Rhino no "is"
- //assertTrue(Object.is(symbols[i], symbols[i]))
- assertTrue(symbols[i] === symbols[i])
- assertTrue(symbols[i] == symbols[i])
- assertFalse(symbols[i] === Object(symbols[i]))
- assertFalse(Object(symbols[i]) === symbols[i])
- assertFalse(symbols[i] == Object(symbols[i]))
- assertFalse(Object(symbols[i]) == symbols[i])
- assertTrue(symbols[i] === symbols[i].valueOf())
- assertTrue(symbols[i].valueOf() === symbols[i])
- assertTrue(symbols[i] == symbols[i].valueOf())
- assertTrue(symbols[i].valueOf() == symbols[i])
- assertFalse(Object(symbols[i]) === Object(symbols[i]))
- assertEquals(Object(symbols[i]).valueOf(), Object(symbols[i]).valueOf())
- }
-
- // All symbols should be distinct.
- for (var i = 0; i < symbols.length; ++i) {
- for (var j = i + 1; j < symbols.length; ++j) {
- //assertFalse(Object.is(symbols[i], symbols[j]))
- assertFalse(symbols[i] === symbols[j])
- assertFalse(symbols[i] == symbols[j])
- }
- }
-
- // Symbols should not be equal to any other value (and the test terminates).
- var values = [347, 1.275, NaN, "string", null, undefined, {}, function() {}]
- for (var i in symbols) {
- for (var j in values) {
- assertFalse(symbols[i] === values[j])
- assertFalse(values[j] === symbols[i])
- assertFalse(symbols[i] == values[j])
- assertFalse(values[j] == symbols[i])
- }
- }
-}
-TestEquality()
-
-
-function TestGet() {
- for (var i in symbols) {
- assertTrue(isValidSymbolString(symbols[i].toString()))
- assertEquals(symbols[i], symbols[i].valueOf())
- assertEquals(undefined, symbols[i].a)
- assertEquals(undefined, symbols[i]["a" + "b"])
- assertEquals(undefined, symbols[i]["" + "1"])
- assertEquals(undefined, symbols[i][62])
- }
-}
-TestGet()
-
-
-function TestSet() {
- for (var i in symbols) {
- symbols[i].toString = 0
- assertTrue(isValidSymbolString(symbols[i].toString()))
- symbols[i].valueOf = 0
- assertEquals(symbols[i], symbols[i].valueOf())
- symbols[i].a = 0
- assertEquals(undefined, symbols[i].a)
- symbols[i]["a" + "b"] = 0
- assertEquals(undefined, symbols[i]["a" + "b"])
- symbols[i][62] = 0
- assertEquals(undefined, symbols[i][62])
- }
-}
-TestSet()
-
-
-// Test Symbol wrapping/boxing over non-builtins.
-Symbol.prototype.getThisProto = function () {
- return Object.getPrototypeOf(this);
-}
-function TestCall() {
- for (var i in symbols) {
- //assertTrue(symbols[i].getThisProto() === Symbol.prototype)
- // TODO something going on with the above
- assertTrue(Object.getPrototypeOf(symbols[i]) === Symbol.prototype)
- }
-}
-TestCall()
-
-
-/*
- * TODO Rhino not implemented
-function TestCollections() {
- var set = new Set
- var map = new Map
- var weakmap = new WeakMap
- for (var i in symbols) {
- set.add(symbols[i])
- map.set(symbols[i], i)
- weakmap.set(symbols[i], i)
- }
- assertEquals(symbols.length, set.size)
- assertEquals(symbols.length, map.size)
- for (var i in symbols) {
- assertTrue(set.has(symbols[i]))
- assertTrue(map.has(symbols[i]))
- assertTrue(weakmap.has(symbols[i]))
- assertEquals(i, map.get(symbols[i]))
- assertEquals(i, weakmap.get(symbols[i]))
- }
- for (var i in symbols) {
- assertTrue(set.delete(symbols[i]))
- assertTrue(map.delete(symbols[i]))
- assertTrue(weakmap.delete(symbols[i]))
- }
- assertEquals(0, set.size)
- assertEquals(0, map.size)
-}
-TestCollections()
-
-*/
-
-function TestKeySet(obj) {
- //assertTrue(%HasFastProperties(obj))
- // Set the even symbols via assignment.
- for (var i = 0; i < symbols.length; i += 2) {
- //print('set: ' + i + ' ' + symbols[i].toString());
- obj[symbols[i]] = i
- // Object should remain in fast mode until too many properties were added.
- //assertTrue(%HasFastProperties(obj) || i >= 30)
- }
-}
-
-
-function TestKeyDefine(obj) {
- // Set the odd symbols via defineProperty (as non-enumerable).
- for (var i = 1; i < symbols.length; i += 2) {
- //print('define: ' + i + ' ' + symbols[i].toString());
- Object.defineProperty(obj, symbols[i], {value: i, configurable: true})
- }
-}
-
-
-function TestKeyGet(obj) {
- var obj2 = Object.create(obj)
- for (var i in symbols) {
- assertEquals(i|0, obj[symbols[i]])
- assertEquals(i|0, obj2[symbols[i]])
- }
-}
-
-
-function TestKeyHas(obj) {
- for (var i in symbols) {
- assertTrue(symbols[i] in obj)
- assertTrue(Object.hasOwnProperty.call(obj, symbols[i]))
- }
-}
-
-
-function TestKeyEnum(obj) {
- for (var name in obj) {
- assertEquals("string", typeof name)
- }
-}
-
-
-function TestKeyNames(obj) {
- assertEquals(0, Object.keys(obj).length)
-
- var names = Object.getOwnPropertyNames(obj)
- for (var i in names) {
- assertEquals("string", typeof names[i])
- }
-}
-
-
-function TestGetOwnPropertySymbols(obj) {
- var syms = Object.getOwnPropertySymbols(obj)
- assertEquals(syms.length, symbols.length)
- for (var i in syms) {
- assertEquals("symbol", typeof syms[i])
- }
-}
-
-
-function TestKeyDescriptor(obj) {
- for (var i in symbols) {
- var desc = Object.getOwnPropertyDescriptor(obj, symbols[i])
- //print('desc ' + i + ' ' + symbols[i].toString() + ' = ' + desc);
- assertEquals(i|0, desc.value)
- assertTrue(desc.configurable)
- assertEquals(i % 2 == 0, desc.writable)
- assertEquals(i % 2 == 0, desc.enumerable)
- assertEquals(i % 2 == 0,
- Object.prototype.propertyIsEnumerable.call(obj, symbols[i]))
- }
-}
-
-
-function TestKeyDelete(obj) {
- for (var i in symbols) {
- delete obj[symbols[i]]
- }
- for (var i in symbols) {
- assertEquals(undefined, Object.getOwnPropertyDescriptor(obj, symbols[i]))
- }
-}
-
-// TODO Rhino no Map
-//var objs = [{}, [], Object.create(null), Object(1), new Map, function(){}]
-var objs = [{}, [], Object.create(null), Object(1), function(){}]
-
-for (var i in objs) {
- //print('Testing ' + i + ' (' + typeof i + ')');
- var obj = objs[i];
- TestKeySet(obj)
- TestKeyDefine(obj)
- TestKeyGet(obj)
- TestKeyHas(obj)
- TestKeyEnum(obj)
- TestKeyNames(obj)
- TestGetOwnPropertySymbols(obj)
- TestKeyDescriptor(obj)
- TestKeyDelete(obj)
-}
-
-function TestDefineProperties() {
- var properties = {}
- for (var i in symbols) {
- Object.defineProperty(
- properties, symbols[i], {value: {value: i}, enumerable: i % 2 === 0})
- assertEquals({value: i}, properties[symbols[i]])
- }
- var o = Object.defineProperties({}, properties)
- for (var i in symbols) {
- assertEquals(i % 2 === 0, symbols[i] in o)
- }
-}
-TestDefineProperties()
-
-
-function TestCreate() {
- var properties = {}
- for (var i in symbols) {
- Object.defineProperty(
- properties, symbols[i], {value: {value: i}, enumerable: i % 2 === 0})
- }
- var o = Object.create(Object.prototype, properties)
- for (var i in symbols) {
- assertEquals(i % 2 === 0, symbols[i] in o)
- }
-}
-TestCreate()
-
-
-function TestCachedKeyAfterScavenge() {
- gc();
- // Keyed property lookup are cached. Hereby we assume that the keys are
- // tenured, so that we only have to clear the cache between mark compacts,
- // but not between scavenges. This must also apply for symbol keys.
- var key = Symbol("key");
- var a = {};
- a[key] = "abc";
-
- for (var i = 0; i < 100000; i++) {
- a[key] += "a"; // Allocations cause a scavenge.
- }
-}
-TestCachedKeyAfterScavenge();
-
-
-function TestGetOwnPropertySymbolsWithProto() {
- // We need to be have fast properties to have insertion order for property
- // keys. The current limit is currently 30 properties.
- var syms = symbols.slice(0, 30);
- var proto = {}
- var object = Object.create(proto)
- for (var i = 0; i < syms.length; i++) {
- // Even on object, odd on proto.
- if (i % 2) {
- proto[syms[i]] = i
- } else {
- object[syms[i]] = i
- }
- }
-
- //assertTrue(%HasFastProperties(object));
-
- var objectOwnSymbols = Object.getOwnPropertySymbols(object)
- assertEquals(objectOwnSymbols.length, syms.length / 2)
-
- for (var i = 0; i < objectOwnSymbols.length; i++) {
- assertEquals(objectOwnSymbols[i], syms[i * 2])
- }
-}
-TestGetOwnPropertySymbolsWithProto()
-
-
-function TestWellKnown() {
- var symbols = [
- "hasInstance", "isConcatSpreadable", "isRegExp",
- "iterator", "toStringTag", "unscopables"
- ]
-
- for (var i in symbols) {
- var name = symbols[i]
- var desc = Object.getOwnPropertyDescriptor(Symbol, name)
- assertSame("symbol", typeof desc.value)
- assertSame("Symbol(Symbol." + name + ")", desc.value.toString())
- assertFalse(desc.writable)
- assertFalse(desc.configurable)
- assertFalse(desc.enumerable)
-
- assertFalse(Symbol.for("Symbol." + name) === desc.value)
- assertTrue(Symbol.keyFor(desc.value) === undefined)
- }
-}
-TestWellKnown()
-
-
-function TestRegistry() {
- var symbol1 = Symbol.for("x1")
- var symbol2 = Symbol.for("x2")
- assertFalse(symbol1 === symbol2)
-
- assertSame(symbol1, Symbol.for("x1"))
- assertSame(symbol2, Symbol.for("x2"))
- assertSame("x1", Symbol.keyFor(symbol1))
- assertSame("x2", Symbol.keyFor(symbol2))
-
- assertSame(Symbol.for("1"), Symbol.for(1))
- assertThrows(function() { Symbol.keyFor("bla") }, TypeError)
- assertThrows(function() { Symbol.keyFor({}) }, TypeError)
-
- /* Rhino does not have "Realms".
- var realm = Realm.create()
- assertFalse(Symbol === Realm.eval(realm, "Symbol"))
- assertFalse(Symbol.for === Realm.eval(realm, "Symbol.for"))
- assertFalse(Symbol.keyFor === Realm.eval(realm, "Symbol.keyFor"))
- assertSame(Symbol.create, Realm.eval(realm, "Symbol.create"))
- assertSame(Symbol.iterator, Realm.eval(realm, "Symbol.iterator"))
-
- assertSame(symbol1, Realm.eval(realm, "Symbol.for")("x1"))
- assertSame(symbol1, Realm.eval(realm, "Symbol.for('x1')"))
- assertSame("x1", Realm.eval(realm, "Symbol.keyFor")(symbol1))
- Realm.shared = symbol1
- assertSame("x1", Realm.eval(realm, "Symbol.keyFor(Realm.shared)"))
-
- var symbol3 = Realm.eval(realm, "Symbol.for('x3')")
- assertFalse(symbol1 === symbol3)
- assertFalse(symbol2 === symbol3)
- assertSame(symbol3, Symbol.for("x3"))
- assertSame("x3", Symbol.keyFor(symbol3))
- */
-}
-TestRegistry()
-
-
-function TestGetOwnPropertySymbolsOnPrimitives() {
- assertEquals(Object.getOwnPropertySymbols(true), []);
- assertEquals(Object.getOwnPropertySymbols(5000), []);
- assertEquals(Object.getOwnPropertySymbols("OK"), []);
-}
-TestGetOwnPropertySymbolsOnPrimitives();
-
-"success";
diff --git a/testsrc/jstests/java8/call-default-method.js b/testsrc/jstests/java8/call-default-method.js
deleted file mode 100644
index 68ada09a..00000000
--- a/testsrc/jstests/java8/call-default-method.js
+++ /dev/null
@@ -1,19 +0,0 @@
-load("testsrc/assert.js");
-
-function startsWith(str, prefix) {
- return str.lastIndexOf(prefix, prefix.length) === 0;
-}
-
-if (startsWith(''+java.util.stream.Stream, '[JavaClass')) {
- var p = new java.util.function.Predicate({
- test: function(t) {
- return true;
- }
- });
- assertInstanceof(p.negate(), java.util.function.Predicate);
- assertFalse(p.negate().test(0));
- assertInstanceof(p.isEqual(null), java.util.function.Predicate);
- assertTrue(p.isEqual(null).test(null));
-}
-
-"success";
diff --git a/testsrc/opt-1.tests b/testsrc/opt-1.tests
index 24b62bf9..ad2d1172 100644
--- a/testsrc/opt-1.tests
+++ b/testsrc/opt-1.tests
@@ -1295,6 +1295,8 @@ js1_5/Array/regress-456845.js
js1_5/Array/regress-465980-01.js
js1_5/Array/regress-474529.js
js1_5/Array/regress-94257.js
+js1_5/Array/regress-99120-01.js
+js1_5/Array/regress-99120-02.js
js1_5/Date/regress-188211.js
js1_5/Date/regress-301738-01.js
js1_5/Date/regress-309925-01.js
@@ -1492,6 +1494,7 @@ js1_5/Regress/regress-344804.js
js1_5/Regress/regress-344959.js
js1_5/Regress/regress-346237.js
js1_5/Regress/regress-346801.js
+js1_5/Regress/regress-347306-01.js
js1_5/Regress/regress-349482-01.js
js1_5/Regress/regress-349482-02.js
js1_5/Regress/regress-349592.js
@@ -1669,7 +1672,12 @@ js1_5/Scope/scope-003.js
js1_5/Scope/scope-004.js
js1_5/String/regress-107771.js
js1_5/String/regress-112626.js
+js1_5/String/regress-157334-01.js
js1_5/String/regress-179068.js
+js1_5/String/regress-314890.js
+js1_5/String/regress-322772.js
+js1_5/String/regress-56940-01.js
+js1_5/String/regress-56940-02.js
js1_5/decompilation/regress-344120.js
js1_5/decompilation/regress-349489.js
js1_5/decompilation/regress-349663.js
@@ -1747,6 +1755,7 @@ js1_5/extensions/regress-341956-01.js
js1_5/extensions/regress-341956-02.js
js1_5/extensions/regress-341956-03.js
js1_5/extensions/regress-346494-01.js
+js1_5/extensions/regress-347306-02.js
js1_5/extensions/regress-350312-01.js
js1_5/extensions/regress-350312-02.js
js1_5/extensions/regress-350312-03.js
diff --git a/testsrc/opt0.tests b/testsrc/opt0.tests
index f9c71005..a544233f 100644
--- a/testsrc/opt0.tests
+++ b/testsrc/opt0.tests
@@ -1292,6 +1292,8 @@ js1_5/Array/regress-456845.js
js1_5/Array/regress-465980-01.js
js1_5/Array/regress-474529.js
js1_5/Array/regress-94257.js
+js1_5/Array/regress-99120-01.js
+js1_5/Array/regress-99120-02.js
js1_5/Date/regress-188211.js
js1_5/Date/regress-301738-01.js
js1_5/Date/regress-309925-01.js
@@ -1482,6 +1484,7 @@ js1_5/Regress/regress-344804.js
js1_5/Regress/regress-344959.js
js1_5/Regress/regress-346237.js
js1_5/Regress/regress-346801.js
+js1_5/Regress/regress-347306-01.js
js1_5/Regress/regress-349482-01.js
js1_5/Regress/regress-349482-02.js
js1_5/Regress/regress-349592.js
@@ -1635,7 +1638,9 @@ js1_5/Regress/regress-76054.js
js1_5/Regress/regress-82306.js
js1_5/Regress/regress-89474.js
js1_5/Regress/regress-90445.js
+js1_5/Regress/regress-96128-n.js
js1_5/Regress/regress-96526-001.js
+js1_5/Regress/regress-98901.js
js1_5/Scope/regress-154693.js
js1_5/Scope/regress-184107.js
js1_5/Scope/regress-185485.js
@@ -1653,7 +1658,12 @@ js1_5/Scope/scope-003.js
js1_5/Scope/scope-004.js
js1_5/String/regress-107771.js
js1_5/String/regress-112626.js
+js1_5/String/regress-157334-01.js
js1_5/String/regress-179068.js
+js1_5/String/regress-314890.js
+js1_5/String/regress-322772.js
+js1_5/String/regress-56940-01.js
+js1_5/String/regress-56940-02.js
js1_5/decompilation/regress-344120.js
js1_5/decompilation/regress-349489.js
js1_5/decompilation/regress-349663.js
@@ -1730,6 +1740,7 @@ js1_5/extensions/regress-341956-01.js
js1_5/extensions/regress-341956-02.js
js1_5/extensions/regress-341956-03.js
js1_5/extensions/regress-346494-01.js
+js1_5/extensions/regress-347306-02.js
js1_5/extensions/regress-350312-01.js
js1_5/extensions/regress-350312-02.js
js1_5/extensions/regress-350312-03.js
@@ -2397,4 +2408,3 @@ lc3/JavaObject/JavaObjectToShort-003-n.js
lc3/JavaObject/JavaObjectToShort-004-n.js
lc3/StringMethods/string-001.js
lc3/instanceof/instanceof-001.js
-bigo-test.js
diff --git a/testsrc/opt9.tests b/testsrc/opt9.tests
index 1011b42f..7bc45f90 100644
--- a/testsrc/opt9.tests
+++ b/testsrc/opt9.tests
@@ -1292,6 +1292,8 @@ js1_5/Array/regress-456845.js
js1_5/Array/regress-465980-01.js
js1_5/Array/regress-474529.js
js1_5/Array/regress-94257.js
+js1_5/Array/regress-99120-01.js
+js1_5/Array/regress-99120-02.js
js1_5/Date/regress-188211.js
js1_5/Date/regress-301738-01.js
js1_5/Date/regress-309925-01.js
@@ -1482,6 +1484,7 @@ js1_5/Regress/regress-344804.js
js1_5/Regress/regress-344959.js
js1_5/Regress/regress-346237.js
js1_5/Regress/regress-346801.js
+js1_5/Regress/regress-347306-01.js
js1_5/Regress/regress-349482-01.js
js1_5/Regress/regress-349482-02.js
js1_5/Regress/regress-349592.js
@@ -1517,6 +1520,7 @@ js1_5/Regress/regress-406769.js
js1_5/Regress/regress-407024.js
js1_5/Regress/regress-407323.js
js1_5/Regress/regress-407957.js
+js1_5/Regress/regress-416628.js
js1_5/Regress/regress-416737-01.js
js1_5/Regress/regress-416737-02.js
js1_5/Regress/regress-417893.js
@@ -1635,7 +1639,9 @@ js1_5/Regress/regress-76054.js
js1_5/Regress/regress-82306.js
js1_5/Regress/regress-89474.js
js1_5/Regress/regress-90445.js
+js1_5/Regress/regress-96128-n.js
js1_5/Regress/regress-96526-001.js
+js1_5/Regress/regress-98901.js
js1_5/Scope/regress-154693.js
js1_5/Scope/regress-184107.js
js1_5/Scope/regress-185485.js
@@ -1653,7 +1659,12 @@ js1_5/Scope/scope-003.js
js1_5/Scope/scope-004.js
js1_5/String/regress-107771.js
js1_5/String/regress-112626.js
+js1_5/String/regress-157334-01.js
js1_5/String/regress-179068.js
+js1_5/String/regress-314890.js
+js1_5/String/regress-322772.js
+js1_5/String/regress-56940-01.js
+js1_5/String/regress-56940-02.js
js1_5/decompilation/regress-344120.js
js1_5/decompilation/regress-349489.js
js1_5/decompilation/regress-349663.js
@@ -1730,6 +1741,7 @@ js1_5/extensions/regress-341956-01.js
js1_5/extensions/regress-341956-02.js
js1_5/extensions/regress-341956-03.js
js1_5/extensions/regress-346494-01.js
+js1_5/extensions/regress-347306-02.js
js1_5/extensions/regress-350312-01.js
js1_5/extensions/regress-350312-02.js
js1_5/extensions/regress-350312-03.js
diff --git a/testsrc/org/mozilla/javascript/benchmarks/CaliperObjectBenchmark.java b/testsrc/org/mozilla/javascript/benchmarks/CaliperObjectBenchmark.java
deleted file mode 100644
index eb26928e..00000000
--- a/testsrc/org/mozilla/javascript/benchmarks/CaliperObjectBenchmark.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package org.mozilla.javascript.benchmarks;
-
-import com.google.caliper.AfterExperiment;
-import com.google.caliper.BeforeExperiment;
-import com.google.caliper.Benchmark;
-import com.google.caliper.Param;
-import org.mozilla.javascript.Context;
-import org.mozilla.javascript.Function;
-import org.mozilla.javascript.Scriptable;
-import org.mozilla.javascript.ScriptableObject;
-import org.mozilla.javascript.tools.shell.Global;
-
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.Random;
-
-@SuppressWarnings("unused")
-public class CaliperObjectBenchmark
-{
- static final Random rand = new Random();
-
- static void runCode(Context cx, Scriptable scope, String fileName)
- throws IOException
- {
- FileReader rdr = new FileReader(fileName);
- try {
- cx.evaluateReader(scope, rdr, "test.js", 1, null);
- } finally {
- rdr.close();
- }
- }
-
- @SuppressWarnings("unused")
- public static class FieldAccess
- {
- @Param("10") int stringKeys;
- @Param("10") int intKeys;
- @Param("9") int optLevel;
-
- private Context cx;
- private Scriptable scope;
-
- private Scriptable strings;
- private Scriptable ints;
-
- @BeforeExperiment
- @SuppressWarnings("unused")
- void create()
- throws IOException
- {
- cx = Context.enter();
- cx.setOptimizationLevel(optLevel);
- cx.setLanguageVersion(Context.VERSION_ES6);
-
- scope = new Global(cx);
- runCode(cx, scope, "testsrc/benchmarks/caliper/fieldTests.js");
-
- Object[] sarray = new Object[stringKeys];
- for (int i = 0; i < stringKeys; i++) {
- int len = rand.nextInt(49) + 1;
- char[] c = new char[len];
- for (int cc = 0; cc < len; cc++) {
- c[cc] = (char) ('a' + rand.nextInt(25));
- }
- sarray[i] = new String(c);
- }
- strings = cx.newArray(scope, sarray);
-
- Object[] iarray = new Object[intKeys];
- for (int i = 0; i < intKeys; i++) {
- iarray[i] = rand.nextInt(10000);
- }
- ints = cx.newArray(scope, iarray);
- }
-
- @AfterExperiment
- @SuppressWarnings("unused")
- void close()
- {
- Context.exit();
- }
-
- @Benchmark
- @SuppressWarnings("unused")
- void createFields(int count)
- {
- Function create = (Function)ScriptableObject.getProperty(scope, "createObject");
- create.call(cx, scope, null, new Object[]{count, strings, ints});
- }
-
- @Benchmark
- @SuppressWarnings("unused")
- void accessFields(int count)
- {
- Function create = (Function)ScriptableObject.getProperty(scope, "createObject");
- Object o = create.call(cx, scope, null, new Object[]{1, strings, ints});
- Function access = (Function)ScriptableObject.getProperty(scope, "accessObject");
- access.call(cx, scope, null, new Object[] {count, o, strings, ints});
- }
-
- @Benchmark
- @SuppressWarnings("unused")
- void iterateFields(long count)
- {
- Function create = (Function)ScriptableObject.getProperty(scope, "createObject");
- Object o = create.call(cx, scope, null, new Object[]{1, strings, ints});
- Function iterate = (Function)ScriptableObject.getProperty(scope, "iterateObject");
- iterate.call(cx, scope, null, new Object[] {count, o});
- }
-
- @Benchmark
- @SuppressWarnings("unused")
- void ownKeysFields(long count)
- {
- Function create = (Function)ScriptableObject.getProperty(scope, "createObject");
- Object o = create.call(cx, scope, null, new Object[]{1, strings, ints});
- Function iterate = (Function)ScriptableObject.getProperty(scope, "iterateOwnKeysObject");
- iterate.call(cx, scope, null, new Object[] {count, o});
- }
-
- @Benchmark
- @SuppressWarnings("unused")
- void deleteFields(int count)
- {
- Function create = (Function)ScriptableObject.getProperty(scope, "createObject");
- Object o = create.call(cx, scope, null, new Object[]{1, strings, ints});
- Function delete = (Function)ScriptableObject.getProperty(scope, "deleteObject");
- delete.call(cx, scope, null, new Object[] {count, o, strings, ints});
- }
- }
-}
diff --git a/testsrc/org/mozilla/javascript/benchmarks/CaliperSpiderBenchmark.java b/testsrc/org/mozilla/javascript/benchmarks/CaliperSpiderBenchmark.java
deleted file mode 100644
index 6021b16e..00000000
--- a/testsrc/org/mozilla/javascript/benchmarks/CaliperSpiderBenchmark.java
+++ /dev/null
@@ -1,269 +0,0 @@
-package org.mozilla.javascript.benchmarks;
-
-import com.google.caliper.AfterExperiment;
-import com.google.caliper.BeforeExperiment;
-import com.google.caliper.Benchmark;
-import com.google.caliper.Param;
-import com.google.caliper.api.Macrobenchmark;
-import org.mozilla.javascript.Context;
-import org.mozilla.javascript.Script;
-import org.mozilla.javascript.Scriptable;
-import org.mozilla.javascript.tools.shell.Global;
-
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.HashMap;
-
-@SuppressWarnings("unused")
-public class CaliperSpiderBenchmark
-{
- public static final File FILE_BASE = new File("testsrc/benchmarks/sunspider-0.9.1");
-
- static Script compileBenchmark(Context cx, String fileName)
- throws IOException
- {
- File f = new File(FILE_BASE, fileName);
- FileReader rdr = new FileReader(f);
- try {
- return cx.compileReader(rdr, fileName, 1, null);
- } finally {
- rdr.close();
- }
- }
-
- @SuppressWarnings("unused")
- public static class Spider
- {
- @Param("9") int optLevel;
-
- private Context cx;
- private Scriptable scope;
-
- private final HashMap scripts = new HashMap();
-
- private static final String[] BENCHMARKS = {
- "3d-cube.js", "3d-morph.js", "3d-raytrace.js",
- "access-binary-trees.js", "access-fannkuch.js", "access-nbody.js", "access-nsieve.js",
- "bitops-3bit-bits-in-byte.js", "bitops-bits-in-byte.js", "bitops-bitwise-and.js", "bitops-nsieve-bits.js",
- "controlflow-recursive.js", "crypto-aes.js", "crypto-md5.js", "crypto-sha1.js",
- "date-format-tofte.js", "date-format-xparb.js",
- "math-cordic.js", "math-partial-sums.js", "math-spectral-norm.js",
- "regexp-dna.js",
- "string-base64.js", "string-fasta.js", "string-tagcloud.js",
- "string-unpack-code.js", "string-validate-input.js"
- };
-
- @BeforeExperiment
- @SuppressWarnings("unused")
- void create()
- throws IOException
- {
- cx = Context.enter();
- cx.setOptimizationLevel(optLevel);
- cx.setLanguageVersion(Context.VERSION_ES6);
- scope = new Global(cx);
-
- for (String bn : BENCHMARKS) {
- compileScript(cx, bn);
- }
- }
-
- private void compileScript(Context cx, String fileName)
- throws IOException
- {
- Script s = compileBenchmark(cx, fileName);
- scripts.put(fileName, s);
- }
-
- @AfterExperiment
- @SuppressWarnings("unused")
- void close()
- {
- Context.exit();
- }
-
- @Macrobenchmark
- @SuppressWarnings("unused")
- public void threeDCube(int iterations)
- {
- runBenchmark("3d-cube.js", iterations);
- }
-
- @Macrobenchmark
- @SuppressWarnings("unused")
- public void threeDMorph(int iterations)
- {
- runBenchmark("3d-morph.js", iterations);
- }
-
- @Macrobenchmark
- @SuppressWarnings("unused")
- public void accessBinaryTrees(int iterations)
- {
- runBenchmark("access-binary-trees.js", iterations);
- }
-
- @Macrobenchmark
- @SuppressWarnings("unused")
- public void accessFannkuch(int iterations)
- {
- runBenchmark("access-fannkuch.js", iterations);
- }
-
- @Macrobenchmark
- @SuppressWarnings("unused")
- public void accessNBody(int iterations)
- {
- runBenchmark("access-nbody.js", iterations);
- }
-
- @Macrobenchmark
- @SuppressWarnings("unused")
- public void accessNSieve(int iterations)
- {
- runBenchmark("access-nsieve.js", iterations);
- }
-
- @Macrobenchmark
- @SuppressWarnings("unused")
- public void bitops3BitBitsInByte(int iterations)
- {
- runBenchmark("bitops-3bit-bits-in-byte.js", iterations);
- }
-
- @Macrobenchmark
- @SuppressWarnings("unused")
- public void bitopsBitsInByte(int iterations)
- {
- runBenchmark("bitops-bits-in-byte.js", iterations);
- }
-
- @Macrobenchmark
- @SuppressWarnings("unused")
- public void BitopsBitwiseAnd(int iterations)
- {
- runBenchmark("bitops-bitwise-and.js", iterations);
- }
-
- @Macrobenchmark
- @SuppressWarnings("unused")
- public void bisopsNsieveBits(int iterations)
- {
- runBenchmark("bitops-nsieve-bits.js", iterations);
- }
-
- @Macrobenchmark
- @SuppressWarnings("unused")
- public void controlFlowRecursive(int iterations)
- {
- runBenchmark("controlflow-recursive.js", iterations);
- }
-
- @Macrobenchmark
- @SuppressWarnings("unused")
- public void cryptoAES(int iterations)
- {
- runBenchmark("crypto-aes.js", iterations);
- }
-
- @Macrobenchmark
- @SuppressWarnings("unused")
- public void cryptoMD5(int iterations)
- {
- runBenchmark("crypto-md5.js", iterations);
- }
-
- @Macrobenchmark
- @SuppressWarnings("unused")
- public void cryptoSHA1(int iterations)
- {
- runBenchmark("crypto-sha1.js", iterations);
- }
-
- @Macrobenchmark
- @SuppressWarnings("unused")
- public void dateFormatToFTE(int iterations)
- {
- runBenchmark("date-format-tofte.js", iterations);
- }
-
- @Macrobenchmark
- @SuppressWarnings("unused")
- public void dateFormatXparb(int iterations)
- {
- runBenchmark("date-format-xparb.js", iterations);
- }
-
- @Macrobenchmark
- @SuppressWarnings("unused")
- public void mathCordic(int iterations)
- {
- runBenchmark("math-cordic.js", iterations);
- }
-
- @Macrobenchmark
- @SuppressWarnings("unused")
- public void mathPartialSums(int iterations)
- {
- runBenchmark("math-partial-sums.js", iterations);
- }
-
- @Macrobenchmark
- @SuppressWarnings("unused")
- public void mathSpectralNorm(int iterations)
- {
- runBenchmark("math-spectral-norm.js", iterations);
- }
-
- @Macrobenchmark
- @SuppressWarnings("unused")
- public void regexpDNA(int iterations)
- {
- runBenchmark("regexp-dna.js", iterations);
- }
-
- @Macrobenchmark
- @SuppressWarnings("unused")
- public void stringBase64(int iterations)
- {
- runBenchmark("string-base64.js", iterations);
- }
-
- @Macrobenchmark
- @SuppressWarnings("unused")
- public void stringFasta(int iterations)
- {
- runBenchmark("string-fasta.js", iterations);
- }
-
- @Macrobenchmark
- @SuppressWarnings("unused")
- public void stringTagCloud(int iterations)
- {
- runBenchmark("string-tagcloud.js", iterations);
- }
-
- @Macrobenchmark
- @SuppressWarnings("unused")
- public void stringUnpackCode(int iterations)
- {
- runBenchmark("string-unpack-code.js", iterations);
- }
-
- @Macrobenchmark
- @SuppressWarnings("unused")
- public void stringValidateInput(int iterations)
- {
- runBenchmark("string-validate-input.js", iterations);
- }
-
- private void runBenchmark(String name, int iterations)
- {
- Script s = scripts.get(name);
- for (int i = 0; i < iterations; i++) {
- s.exec(cx, scope);
- }
- }
- }
-}
diff --git a/testsrc/org/mozilla/javascript/benchmarks/ResultPlotter.java b/testsrc/org/mozilla/javascript/benchmarks/ResultPlotter.java
deleted file mode 100644
index 6e053631..00000000
--- a/testsrc/org/mozilla/javascript/benchmarks/ResultPlotter.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package org.mozilla.javascript.benchmarks;
-
-import com.google.caliper.api.ResultProcessor;
-import com.google.caliper.model.Measurement;
-import com.google.caliper.model.Trial;
-import com.google.caliper.model.Value;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.HashMap;
-import java.util.Map;
-
-public class ResultPlotter
- implements ResultProcessor
-
-{
- private PrintWriter out;
- private final HashMap results = new HashMap();
-
- public ResultPlotter()
- throws IOException
- {
- out = new PrintWriter(
- new FileWriter(new File(System.getProperty("rhino.benchmark.report"), "caliper-spider.csv"))
- );
- }
-
- @Override
- public void close()
- {
- boolean once = false;
- for (String n : results.keySet()) {
- if (once) {
- out.print(',');
- } else {
- once = true;
- }
- out.print(n);
- }
- out.println();
-
- once = false;
- for (Double v : results.values()) {
- if (once) {
- out.print(',');
- } else {
- once = true;
- }
- out.printf("%.2f", v);
- }
- out.println();
-
- out.close();
- }
-
- @Override
- public void processTrial(Trial trial)
- {
- if (trial.instrumentSpec().className().contains("RuntimeInstrument")) {
- double runningAvg = 0.0;
- for (Measurement m : trial.measurements()) {
- runningAvg += (m.value().magnitude() / m.weight());
- }
- double avg = runningAvg / (double) trial.measurements().size();
- results.put(trial.scenario().benchmarkSpec().methodName(), avg);
- }
- }
-}
diff --git a/testsrc/org/mozilla/javascript/drivers/JsTestsBase.java b/testsrc/org/mozilla/javascript/drivers/JsTestsBase.java
index 8ca81a88..2f6faacd 100644
--- a/testsrc/org/mozilla/javascript/drivers/JsTestsBase.java
+++ b/testsrc/org/mozilla/javascript/drivers/JsTestsBase.java
@@ -25,6 +25,7 @@ public abstract class JsTestsBase extends TestCase {
// create a lightweight top-level scope
Scriptable scope = cx.newObject(shared);
scope.setPrototype(shared);
+ System.out.print(name + ": ");
Object result;
try {
result = cx.evaluateString(scope, source, "jstest input: " + name, 1, null);
@@ -35,6 +36,7 @@ public abstract class JsTestsBase extends TestCase {
}
assertTrue(result != null);
assertTrue("success".equals(result));
+ System.out.println("passed");
}
public void runJsTests(File[] tests) throws IOException {
diff --git a/testsrc/org/mozilla/javascript/tests/ComparatorTest.java b/testsrc/org/mozilla/javascript/tests/ComparatorTest.java
deleted file mode 100644
index 39785939..00000000
--- a/testsrc/org/mozilla/javascript/tests/ComparatorTest.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package org.mozilla.javascript.tests;
-
-import java.io.FileReader;
-import java.io.IOException;
-import org.junit.Test;
-import org.mozilla.javascript.Context;
-import org.mozilla.javascript.NativeArray;
-import org.mozilla.javascript.RhinoException;
-import org.mozilla.javascript.Scriptable;
-import org.mozilla.javascript.ScriptableObject;
-import org.mozilla.javascript.Undefined;
-import org.mozilla.javascript.tools.shell.Global;
-
-import static org.junit.Assert.*;
-
-public class ComparatorTest {
-
- /*
- Check the comparator and ensure that it is consistent.
- An inconsistent comparator will result in an IllegalArgumentException
- with the message "Comparison method violates its general contract!"
- */
- private void idChk(Object o1, Object o2, int expected) {
- assertEquals(expected, new ScriptableObject.KeyComparator().compare(o1, o2));
- assertEquals(-expected, new ScriptableObject.KeyComparator().compare(o2, o1));
- }
-
- /*
- This comparator is used only in the generation of object IDs for iteration. It makes sure
- that numeric property names are in numeric order without changing string property names,
- as per the spec.
- */
- @Test
- public void testObjectIDComparator() {
- idChk(0, 0, 0);
- idChk(1, 0, 1);
- idChk(0, 1, -1);
- idChk("a", "a", 0);
- idChk("b", "a", 0);
- idChk("a", "b", 0);
- idChk("a", 1, 1);
- idChk(1, "a", -1);
- }
-
- private void aChk(Object o1, Object o2, int expected) {
- assertEquals(expected, new NativeArray.ElementComparator().compare(o1, o2));
- assertEquals(-expected, new NativeArray.ElementComparator().compare(o2, o1));
- }
-
- /*
- This comparator is used in Arrays.sort. It ensures that unset properties go at the
- very end, undefined references go right before that, and everything else is sorted as
- a string.
- */
- @Test
- public void testArrayComparator() {
- aChk("a", "b", -1);
- aChk("b", "a", 1);
- aChk("a", "a", 0);
- aChk(Scriptable.NOT_FOUND, "a", 1);
- aChk("a", Scriptable.NOT_FOUND, -1);
- aChk(Scriptable.NOT_FOUND, Scriptable.NOT_FOUND, 0);
- aChk(Undefined.instance, "a", 1);
- aChk("a", Undefined.instance, -1);
- aChk(Undefined.instance, Undefined.instance, 0);
- aChk(Undefined.instance, Scriptable.NOT_FOUND, -1);
- aChk(Scriptable.NOT_FOUND, Undefined.instance, 1);
- }
-
- /*
- Run some tests in JavaScript to verify the custom comparators that are supported
- on Array.sort.
- */
- @Test
- public void testCustomComparator()
- throws IOException
- {
- Context cx = Context.enter();
- Global global = new Global(cx);
- Scriptable root = cx.newObject(global);
- FileReader fr = new FileReader("testsrc/jstests/extensions/custom-comparators.js");
-
- try {
- cx.evaluateReader(root, fr, "custom-comparators.js", 1, null);
- } catch (RhinoException re) {
- System.err.println(re.getScriptStackTrace());
- throw re;
- } finally {
- Context.exit();
- }
- }
-}
diff --git a/testsrc/org/mozilla/javascript/tests/DoctestsTest.java b/testsrc/org/mozilla/javascript/tests/DoctestsTest.java
index a20ccb76..7de06aab 100644
--- a/testsrc/org/mozilla/javascript/tests/DoctestsTest.java
+++ b/testsrc/org/mozilla/javascript/tests/DoctestsTest.java
@@ -91,6 +91,8 @@ public class DoctestsTest {
Global global = new Global(cx);
// global.runDoctest throws an exception on any failure
int testsPassed = global.runDoctest(cx, global, source, name, 1);
+ System.out.println(name + "(" + optimizationLevel + "): " +
+ testsPassed + " passed.");
assertTrue(testsPassed > 0);
} catch (Exception ex) {
System.out.println(name + "(" + optimizationLevel + "): FAILED due to "+ex);
diff --git a/testsrc/org/mozilla/javascript/tests/NativeRegExpTest.java b/testsrc/org/mozilla/javascript/tests/NativeRegExpTest.java
deleted file mode 100644
index 28451a44..00000000
--- a/testsrc/org/mozilla/javascript/tests/NativeRegExpTest.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-package org.mozilla.javascript.tests;
-
-import junit.framework.TestCase;
-
-import org.mozilla.javascript.Context;
-import org.mozilla.javascript.ContextAction;
-import org.mozilla.javascript.ScriptableObject;
-import org.mozilla.javascript.regexp.NativeRegExp;
-
-public class NativeRegExpTest extends TestCase {
-
- public void testOpenBrace() {
- final String script = "/0{0/";
- final ContextAction action = new ContextAction() {
- public Object run(final Context _cx) {
- final ScriptableObject scope = _cx.initStandardObjects();
- final Object result = _cx.evaluateString(scope, script, "test script", 0, null);
- assertEquals(script, Context.toString(result));
- return null;
- }
- };
-
- Utils.runWithAllOptimizationLevels(action);
- }
-}
diff --git a/testsrc/org/mozilla/javascript/tests/ParserTest.java b/testsrc/org/mozilla/javascript/tests/ParserTest.java
index dadfaa2f..507e41f8 100644
--- a/testsrc/org/mozilla/javascript/tests/ParserTest.java
+++ b/testsrc/org/mozilla/javascript/tests/ParserTest.java
@@ -4,7 +4,6 @@
package org.mozilla.javascript.tests;
-import org.mozilla.javascript.ErrorReporter;
import org.mozilla.javascript.ast.*;
import org.mozilla.javascript.CompilerEnvirons;
@@ -1038,29 +1037,6 @@ public class ParserTest extends TestCase {
assertNotNull(st.getJsDoc());
}
- public void testJSDocAttachment17() {
- AstRoot root = parse(
- "try { throw 'a'; } catch (/** @type {string} */ e) {\n" +
- "}\n");
- assertNotNull(root.getComments());
- assertEquals(1, root.getComments().size());
-
- TryStatement tryNode = (TryStatement) root.getFirstChild();
- CatchClause catchNode = tryNode.getCatchClauses().get(0);
- assertNotNull(catchNode.getVarName().getJsDoc());
- }
-
- public void testJSDocAttachment18() {
- AstRoot root = parse(
- "function f(/** @type {string} */ e) {}\n");
- assertNotNull(root.getComments());
- assertEquals(1, root.getComments().size());
-
- FunctionNode function = (FunctionNode) root.getFirstChild();
- AstNode param = function.getParams().get(0);
- assertNotNull(param.getJsDoc());
- }
-
public void testParsingWithoutJSDoc() {
AstRoot root = parse("var a = /** @type number */(x);", false);
assertNotNull(root.getComments());
@@ -1207,56 +1183,6 @@ public class ParserTest extends TestCase {
parse("({import:1}).import;");
}
- public void testParseErrorRecovery() {
- expectErrorWithRecovery(")", 1);
- }
-
- public void testParseErrorRecovery2() {
- expectErrorWithRecovery("print('Hi');)foo('bar');Silly", 2);
- }
-
- public void testParseErrorRecovery3() {
- expectErrorWithRecovery(")))", 5);
- }
-
- // Check that error recovery is working by returning a parsing exception, but only
- // when thrown by runtimeError. This is testing a regression in which the error recovery in
- // certain cases would trigger an infinite loop. We do this by counting the number
- // of parsing errors that are expected.
- private void expectErrorWithRecovery(String code, int maxErrors) {
- environment.setRecoverFromErrors(true);
- environment.setErrorReporter(new ErrorReporter()
- {
- private int errorCount = 0;
-
- @Override
- public void warning(String msg, String name, int line, String str, int col)
- {
- throw new AssertionError("Not expecting a warning");
- }
-
- @Override
- public EvaluatorException runtimeError(String msg, String name, int line, String str, int col)
- {
- return new EvaluatorException(msg, name, line, str, col);
- }
-
- @Override
- public void error(String msg, String name, int line, String str, int col)
- {
- assertTrue(++errorCount <= maxErrors);
- }
- });
-
- Parser p = new Parser(environment);
- try {
- p.parse(code, code, 0);
- assertFalse("Expected an EvaluatorException", true);
- } catch (EvaluatorException ee) {
- // Normal failure
- }
- }
-
public void testReportError() {
expectParseErrors("'use strict';(function(eval) {})();",
new String[] { "\"eval\" is not a valid identifier for this use in strict mode." });
diff --git a/testsrc/org/mozilla/javascript/tests/SortingTest.java b/testsrc/org/mozilla/javascript/tests/SortingTest.java
deleted file mode 100644
index d29fd1d0..00000000
--- a/testsrc/org/mozilla/javascript/tests/SortingTest.java
+++ /dev/null
@@ -1,199 +0,0 @@
-package org.mozilla.javascript.tests;
-
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.mozilla.javascript.Sorting;
-
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.Random;
-
-import static org.junit.Assert.*;
-
-public class SortingTest {
- private static final int BIG_ARRAY = 100000;
- private static final int ITERATIONS = 4;
-
- private static final Random rand = new Random();
-
- private static Object[] bigRandom;
-
- @BeforeClass
- public static void init()
- {
- bigRandom = randomArray(BIG_ARRAY);
- }
-
- private void insertionSort(Object[] expected)
- {
- Object[] after = Arrays.copyOf(expected, expected.length);
- Sorting.insertionSort(after, new IntComparator());
- Arrays.sort(expected, new IntComparator());
- assertArrayEquals(expected, after);
- }
-
- @Test
- public void testInsertionSort()
- {
- insertionSort(forwardArray(100));
- insertionSort(reverseArray(100));
- insertionSort(randomArray(100));
- insertionSort(sameArray(100));
- insertionSort(new Object[] {});
- insertionSort(randomArray(10000));
- }
-
- private void hybridSort(Object[] expected)
- {
- Object[] after = Arrays.copyOf(expected, expected.length);
- Sorting.hybridSort(after, new IntComparator());
- Arrays.sort(expected, new IntComparator());
- assertArrayEquals(expected, after);
- }
-
- @Test
- public void testHybridSort()
- {
- hybridSort(randomArray(10));
- hybridSort(forwardArray(100));
- hybridSort(reverseArray(100));
- hybridSort(randomArray(100));
- hybridSort(sameArray(100));
- hybridSort(new Object[] {});
- hybridSort(randomArray(10000));
- }
-
- /*
- @Test
- public void testBenchInsertionRandom()
- {
- Object[] a = Arrays.copyOf(bigRandom, bigRandom.length);
- Sorting.insertionSort(a, new IntComparator());
- }
- */
-
- @Test
- public void testBenchRandomHybrid()
- {
- for (int i = 0; i < ITERATIONS; i++) {
- Object[] a = Arrays.copyOf(bigRandom, bigRandom.length);
- Sorting.hybridSort(a, new IntComparator());
- }
- }
-
- @Test
- public void testBenchRandomJavaUtil()
- {
- for (int i = 0; i < ITERATIONS; i++) {
- Object[] a = Arrays.copyOf(bigRandom, bigRandom.length);
- Arrays.sort(a, new IntComparator());
- }
- }
-
- /*
- @Test
- public void testBenchInsertionReverse()
- {
- for (int i = 0; i < ITERATIONS; i++) {
- Object[] a = reverseArray(BIG_ARRAY);
- Sorting.insertionSort(a, new IntComparator());
- }
- }
- */
-
- @Test
- public void testBenchReverseHybrid()
- {
- for (int i = 0; i < ITERATIONS; i++) {
- Object[] a = reverseArray(BIG_ARRAY);
- Sorting.hybridSort(a, new IntComparator());
- }
- }
-
- @Test
- public void testBenchReverseJavaUtil()
- {
- for (int i = 0; i < ITERATIONS; i++) {
- Object[] a = reverseArray(BIG_ARRAY);
- Arrays.sort(a, new IntComparator());
- }
- }
-
- @Test
- public void testBenchSequentialInsertion()
- {
- for (int i = 0; i < ITERATIONS; i++) {
- Object[] a = forwardArray(BIG_ARRAY);
- Sorting.insertionSort(a, new IntComparator());
- }
- }
-
- @Test
- public void testBenchSequentialHybrid()
- {
- for (int i = 0; i < ITERATIONS; i++) {
- Object[] a = forwardArray(BIG_ARRAY);
- Sorting.hybridSort(a, new IntComparator());
- }
- }
-
- @Test
- public void testBenchSequentialJavaUtil()
- {
- for (int i = 0; i < ITERATIONS; i++) {
- Object[] a = forwardArray(BIG_ARRAY);
- Arrays.sort(a, new IntComparator());
- }
- }
-
- private static Integer[] forwardArray(int length)
- {
- Integer[] a = new Integer[length];
- for (int i = 0; i < length; i++) {
- a[i] = i;
- }
- return a;
- }
-
- private static Integer[] reverseArray(int length)
- {
- Integer[] a = new Integer[length];
- for (int i = 0; i < length; i++) {
- a[i] = length - i - 1;
- }
- return a;
- }
-
- private static Integer[] randomArray(int length)
- {
- Integer[] a = new Integer[length];
- for (int i = 0; i < length; i++) {
- a[i] = rand.nextInt();
- }
- return a;
- }
-
- private static Integer[] sameArray(int length)
- {
- Integer[] a = new Integer[length];
- Arrays.fill(a, 1);
- return a;
- }
-
- private final class IntComparator
- implements Comparator
- {
- @Override
- public int compare(Object a, Object b) {
- Integer ia = (Integer)a;
- Integer ib = (Integer)b;
- if (ia < ib) {
- return -1;
- }
- if (ia > ib) {
- return 1;
- }
- return 0;
- }
- }
-}
diff --git a/testsrc/org/mozilla/javascript/tests/Test262SuiteTest.java b/testsrc/org/mozilla/javascript/tests/Test262SuiteTest.java
index b7f5b51f..44b5fc52 100644
--- a/testsrc/org/mozilla/javascript/tests/Test262SuiteTest.java
+++ b/testsrc/org/mozilla/javascript/tests/Test262SuiteTest.java
@@ -24,7 +24,6 @@ import java.io.*;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.yaml.snakeyaml.error.YAMLException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
@@ -205,19 +204,9 @@ public class Test262SuiteTest {
harnessFiles.add("sta.js");
harnessFiles.add("assert.js");
- Map header;
- String hdrStr = jsFileStr
- .substring(jsFileStr.indexOf("/*---") + 5, jsFileStr.indexOf("---*/"));
- try {
- header = (Map) YAML.load(hdrStr);
- if (header.containsKey("includes")) {
- harnessFiles.addAll((Collection) header.get("includes"));
- }
- } catch (YAMLException e) {
- String msg = "Error scanning \"" + hdrStr + "\" from " + jsTest.getPath() + ": " + e;
- YAMLException te = new YAMLException(msg);
- te.initCause(e);
- throw te;
+ Map header = (Map) YAML.load(jsFileStr.substring(jsFileStr.indexOf("/*---") + 5, jsFileStr.lastIndexOf("---*/")));
+ if (header.containsKey("includes")) {
+ harnessFiles.addAll((Collection)header.get("includes"));
}
EcmaErrorType errorType = EcmaErrorType._valueOf((String)header.get("negative"));
diff --git a/testsrc/org/mozilla/javascript/tests/WrapFactoryTest.java b/testsrc/org/mozilla/javascript/tests/WrapFactoryTest.java
deleted file mode 100644
index e87c54f6..00000000
--- a/testsrc/org/mozilla/javascript/tests/WrapFactoryTest.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package org.mozilla.javascript.tests;
-
-import static org.junit.Assert.assertEquals;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.Optional;
-
-import org.junit.Test;
-import org.mozilla.javascript.Context;
-import org.mozilla.javascript.ImporterTopLevel;
-import org.mozilla.javascript.Scriptable;
-import org.mozilla.javascript.ScriptableObject;
-
-/**
- *
- * @author hatanaka
- */
-public class WrapFactoryTest {
- /** javascript code */
- private static String script = "var result = typeof test;" //
- + "var mapResult = typeof map.get('test');" //
- + "var getResult = typeof object.get();";
-
- /**
- * for your reference
- * default setting (javaPrimitiveWrap = true)
- */
- @Test
- public void primitiveWrapTrue() {
- test(true, "text", "string", "object", "object");
- test(true, Boolean.FALSE, "boolean", "object", "object");
- test(true, new Integer(1), "number", "object", "object");
- test(true, new Long(2L), "number", "object", "object");
- test(true, new BigInteger("3"), "number", "object", "object");
- test(true, new BigDecimal("4.0"), "number", "object", "object");
- }
-
- /**
- * javaPrimitiveWrap = false
- */
- @Test
- public void primitiveWrapFalse() {
- test(false, "text", "string", "string", "string"); // Great! I want to do this.
- test(false, Boolean.FALSE, "boolean", "boolean", "boolean");
- test(false, new Integer(1), "number", "number", "number");
- test(false, new Long(2L), "number", "number", "number");
-
- // I want to treat BigInteger / BigDecimal as BigInteger / BigDecimal. But fails.
- test(false, new BigInteger("30"), "number", "object", "object");
- test(false, new BigDecimal("4.0"), "number", "object", "object");
-
- // This is the best. I want not to convert to number.
- //test(false, new BigInteger("30"), "object", "object", "object");
- //test(false, new BigDecimal("4.0"), "object", "object", "object");
- }
-
- /**
- * @param javaPrimitiveWrap
- * @param object
- * @param result typeof value
- * @param mapResult typeof map value
- * @param getResult typeof getter value
- */
- private void test(boolean javaPrimitiveWrap, Object object, String result,
- String mapResult, String getResult) {
- Context cx = Context.enter();
- try {
- cx.getWrapFactory().setJavaPrimitiveWrap(javaPrimitiveWrap);
- Scriptable scope = cx.initStandardObjects(new ImporterTopLevel(cx));
-
- //register object
- Map map = new LinkedHashMap<>();
- map.put("test", object);
- ScriptableObject.putProperty(scope, "map", map);
- ScriptableObject.putProperty(scope, "object", Optional.of(object));
- ScriptableObject.putProperty(scope, "test", object);
-
- //execute script
- cx.evaluateString(scope, script, "", 1, null);
-
- //evaluate result
- assertEquals(result, ScriptableObject.getProperty(scope, "result"));
- assertEquals(mapResult,
- ScriptableObject.getProperty(scope, "mapResult"));
- assertEquals(getResult,
- ScriptableObject.getProperty(scope, "getResult"));
- } finally {
- Context.exit();
- }
- }
-}
\ No newline at end of file
diff --git a/testsrc/org/mozilla/javascript/tests/es6/ForOfTest.java b/testsrc/org/mozilla/javascript/tests/es6/ForOfTest.java
deleted file mode 100644
index d419e2d6..00000000
--- a/testsrc/org/mozilla/javascript/tests/es6/ForOfTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-package org.mozilla.javascript.tests.es6;
-
-import org.mozilla.javascript.Context;
-import org.mozilla.javascript.drivers.LanguageVersion;
-import org.mozilla.javascript.drivers.RhinoTest;
-import org.mozilla.javascript.drivers.ScriptTestsBase;
-
-@RhinoTest("testsrc/jstests/es6/for-of.js")
-@LanguageVersion(Context.VERSION_ES6)
-public class ForOfTest extends ScriptTestsBase
-{
-}
diff --git a/testsrc/org/mozilla/javascript/tests/es6/SymbolTest.java b/testsrc/org/mozilla/javascript/tests/es6/SymbolTest.java
deleted file mode 100644
index feb768ef..00000000
--- a/testsrc/org/mozilla/javascript/tests/es6/SymbolTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-package org.mozilla.javascript.tests.es6;
-
-import org.mozilla.javascript.Context;
-import org.mozilla.javascript.drivers.LanguageVersion;
-import org.mozilla.javascript.drivers.RhinoTest;
-import org.mozilla.javascript.drivers.ScriptTestsBase;
-
-@RhinoTest("testsrc/jstests/es6/symbols.js")
-@LanguageVersion(Context.VERSION_ES6)
-public class SymbolTest extends ScriptTestsBase
-{
-}
diff --git a/testsrc/org/mozilla/javascript/tests/harmony/V8SymbolTest.java b/testsrc/org/mozilla/javascript/tests/harmony/V8SymbolTest.java
deleted file mode 100644
index eb1321fd..00000000
--- a/testsrc/org/mozilla/javascript/tests/harmony/V8SymbolTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-package org.mozilla.javascript.tests.harmony;
-
-import org.mozilla.javascript.Context;
-import org.mozilla.javascript.drivers.LanguageVersion;
-import org.mozilla.javascript.drivers.RhinoTest;
-import org.mozilla.javascript.drivers.ScriptTestsBase;
-
-@RhinoTest("testsrc/jstests/harmony/v8-symbols.js")
-@LanguageVersion(Context.VERSION_ES6)
-public class V8SymbolTest extends ScriptTestsBase
-{
-}
diff --git a/testsrc/org/mozilla/javascript/tests/java8/CallDefaultMethodTest.java b/testsrc/org/mozilla/javascript/tests/java8/CallDefaultMethodTest.java
deleted file mode 100644
index 78ed3adf..00000000
--- a/testsrc/org/mozilla/javascript/tests/java8/CallDefaultMethodTest.java
+++ /dev/null
@@ -1,13 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-package org.mozilla.javascript.tests.java8;
-
-import org.mozilla.javascript.drivers.RhinoTest;
-import org.mozilla.javascript.drivers.ScriptTestsBase;
-
-@RhinoTest("testsrc/jstests/java8/call-default-method.js")
-public class CallDefaultMethodTest extends ScriptTestsBase
-{
-}
diff --git a/testsrc/test262.properties b/testsrc/test262.properties
index ce8b65e5..241b6dd4 100644
--- a/testsrc/test262.properties
+++ b/testsrc/test262.properties
@@ -156,10 +156,9 @@ built-ins/Array
! prototype/toLocaleString/primitive_this_value_getter.js
# not implemented
- ! prototype/Symbol.iterator.js
- ! symbol-species-name.js
- ! symbol-species.js
! Proxy
+ ! symbol
+ ! Symbol
! from/
! of/
! fill/
@@ -171,10 +170,6 @@ built-ins/Array
built-ins/ArrayIteratorPrototype
-built-ins/Symbol
- ! prototype/Symbol.toStringTag
- ! species
-
language/expressions/arrow-function
# not implemented
## strict mode
@@ -275,27 +270,22 @@ built-ins/Date
! prototype/setFullYear/15.9.5.40_1.js
built-ins/Object
+ ! assign
+ ! create
! defineProperties
! defineProperty
! freeze
! getOwnPropertyDescriptor
+ ! getOwnPropertySymbols
! getPrototypeOf
! prototype/hasOwnProperty
! prototype/propertyIsEnumerable
! prototype/toLocaleString
! prototype/toString
! prototype/valueOf
+ ! is
! isExtensible
- ! isFrozen
- ! isPrototypeOf
- ! isSealed
! preventExtensions
! setPrototypeOf
! seal
-# No Proxy object yet
- ! assign/source-own-prop-desc-missing.js
- ! assign/source-own-prop-error.js
- ! assign/source-own-prop-keys-error.js
-# Disagreement on strict mode
- ! assign/target-set-not-writable.js
- ! create/15.2.3.5-4-311.js
+ ! symbol_object-returns-fresh-symbol.js
diff --git a/testsrc/tests/CVS/Entries b/testsrc/tests/CVS/Entries
new file mode 100644
index 00000000..b79d4e5a
--- /dev/null
+++ b/testsrc/tests/CVS/Entries
@@ -0,0 +1,62 @@
+/.cvsignore/1.2/Wed Jun 25 22:10:11 2008//
+/Makefile/1.20/Sat Mar 14 22:48:25 2009//
+/Patterns.pm/1.5/Sat Feb 21 01:29:54 2009//
+/README-jsDriver.html/1.11/Sat Jan 31 01:04:51 2004//
+/bisect.sh/1.10/Tue Aug 18 09:34:21 2009//
+/browser.js/1.14/Tue Aug 18 08:11:52 2009//
+/changes.sh/1.2/Wed Aug 13 18:21:56 2008//
+/config.mk/1.1/Sun Sep 18 20:46:15 2005//
+/config.sh/1.2/Tue Aug 18 08:16:52 2009//
+/detect-universe.sh/1.6/Tue Aug 18 09:34:21 2009//
+/dikdik-n.tests/1.1/Wed Aug 8 21:58:12 2001//
+/get-universe.sh/1.6/Sat Feb 21 01:29:55 2009//
+/importList.html/1.4/Wed Feb 6 20:06:39 2008//
+/importList.js/1.3/Wed Feb 6 20:06:39 2008//
+/js-test-driver-begin.js/1.9/Sat May 26 00:19:18 2007//
+/js-test-driver-end.js/1.5/Thu Jun 22 06:44:43 2006//
+/js-test-driver-quirks.html/1.2/Sat May 26 00:19:18 2007//
+/js-test-driver-standards.html/1.2/Sat May 26 00:19:18 2007//
+/jsDriver.pl/1.76/Wed Jan 14 16:12:48 2009//
+/known-failures.pl/1.12/Tue Aug 18 09:34:21 2009//
+/menufoot.html/1.1/Wed Nov 17 02:05:26 1999//
+/menuhead.html/1.7/Wed Feb 6 20:06:39 2008//
+/menuhead.js/1.3/Sat May 26 00:19:18 2007//
+/mkhtml.pl/1.2/Tue Apr 6 01:11:12 1999//
+/mklistpage.pl/1.11/Sat May 26 00:19:18 2007//
+/most.tests/1.3/Thu Feb 15 13:44:29 2007//
+/pattern-expander.pl/1.5/Sat Feb 21 01:29:55 2009//
+/pattern-extracter.pl/1.5/Sat Feb 21 01:29:55 2009//
+/performance-1.8.0.tests/1.4/Tue Aug 18 07:51:48 2009//
+/performance-1.8.1.tests/1.4/Tue Aug 18 07:51:48 2009//
+/performance-1.9.0.tests/1.4/Tue Aug 18 07:51:48 2009//
+/performance-1.9.1.tests/1.2/Tue Aug 18 07:51:48 2009//
+/performance-1.9.2.tests/1.2/Tue Aug 18 07:51:48 2009//
+/performance.tests/1.3/Tue Aug 18 07:51:48 2009//
+/post-process-logs.pl/1.18/Sat Feb 21 01:29:55 2009//
+/process-logs.sh/1.11/Tue Aug 18 09:34:21 2009//
+/remove-fixed-failures.sh/1.3/Wed Aug 13 18:21:56 2008//
+/runRhinoTests.pl/1.5/Fri Mar 18 19:09:14 2005//
+/runtests.pl/1.7/Sat May 26 00:19:18 2007//
+/runtests.sh/1.23/Tue Aug 18 09:34:21 2009//
+/runtests2.pl/1.14/Sat May 26 00:19:18 2007//
+/shell.js/1.13/Fri Aug 7 21:33:31 2009//
+/slow-n-1.8.1-browser.tests/1.1/Fri Aug 7 20:00:54 2009//
+/slow-n-1.8.1.tests/1.5/Fri Aug 7 20:00:54 2009//
+/slow-n-1.9.0-browser.tests/1.1/Fri Aug 7 20:00:54 2009//
+/slow-n-1.9.0.tests/1.4/Fri Aug 7 20:00:54 2009//
+/slow-n-1.9.1-browser.tests/1.1/Fri Aug 7 20:00:54 2009//
+/slow-n-1.9.1.tests/1.5/Fri Aug 7 21:09:06 2009//
+/slow-n-1.9.2-browser.tests/1.1/Fri Aug 7 20:00:54 2009//
+/slow-n-1.9.2.tests/1.4/Fri Aug 7 21:09:06 2009//
+/slow-n.tests/1.15/Fri Aug 7 21:09:06 2009//
+/spidermonkey-gc.tests/1.2/Mon Aug 20 16:15:33 2007//
+/spidermonkey-n-1.8.0.tests/1.3/Tue Aug 18 07:56:42 2009//
+/spidermonkey-n-1.8.1.tests/1.3/Tue Aug 18 07:56:42 2009//
+/spidermonkey-n-1.9.0.tests/1.5/Tue Aug 18 07:56:42 2009//
+/spidermonkey-n-1.9.1.tests/1.12/Tue Aug 18 07:46:10 2009//
+/spidermonkey-n-1.9.2.tests/1.5/Tue Aug 18 07:46:10 2009//
+/spidermonkey-n.tests/1.16/Wed May 14 23:18:47 2008//
+/template.js/1.9/Wed Aug 13 12:10:54 2008//
+/test.sh/1.21/Tue Aug 18 09:34:21 2009//
+/userhookeach.js/1.5/Wed Jun 25 22:10:11 2008//
+D
diff --git a/testsrc/tests/CVS/Entries.Log b/testsrc/tests/CVS/Entries.Log
new file mode 100644
index 00000000..5fb6cd4b
--- /dev/null
+++ b/testsrc/tests/CVS/Entries.Log
@@ -0,0 +1,17 @@
+A D/e4x////
+A D/ecma////
+A D/ecma_2////
+A D/ecma_3////
+A D/ecma_3_1////
+A D/js1_1////
+A D/js1_2////
+A D/js1_3////
+A D/js1_4////
+A D/js1_5////
+A D/js1_6////
+A D/js1_7////
+A D/js1_8////
+A D/js1_8_1////
+A D/lc2////
+A D/lc3////
+A D/src////
diff --git a/testsrc/tests/CVS/Repository b/testsrc/tests/CVS/Repository
new file mode 100644
index 00000000..82f89c38
--- /dev/null
+++ b/testsrc/tests/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests
diff --git a/testsrc/tests/CVS/Root b/testsrc/tests/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/e4x/CVS/Entries b/testsrc/tests/e4x/CVS/Entries
new file mode 100644
index 00000000..48260b3e
--- /dev/null
+++ b/testsrc/tests/e4x/CVS/Entries
@@ -0,0 +1,4 @@
+/browser.js/1.14/Wed Feb 6 20:06:39 2008//
+/shell.js/1.23/Thu Jul 19 19:57:48 2007//
+/template.js/1.7/Wed Aug 13 12:10:55 2008//
+D
diff --git a/testsrc/tests/e4x/CVS/Entries.Log b/testsrc/tests/e4x/CVS/Entries.Log
new file mode 100644
index 00000000..466e7636
--- /dev/null
+++ b/testsrc/tests/e4x/CVS/Entries.Log
@@ -0,0 +1,13 @@
+A D/Expressions////
+A D/GC////
+A D/Global////
+A D/Namespace////
+A D/QName////
+A D/Regress////
+A D/Statements////
+A D/TypeConversion////
+A D/Types////
+A D/XML////
+A D/XMLList////
+A D/decompilation////
+A D/extensions////
diff --git a/testsrc/tests/e4x/CVS/Repository b/testsrc/tests/e4x/CVS/Repository
new file mode 100644
index 00000000..38da8d63
--- /dev/null
+++ b/testsrc/tests/e4x/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/e4x
diff --git a/testsrc/tests/e4x/CVS/Root b/testsrc/tests/e4x/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/e4x/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/e4x/Expressions/CVS/Entries b/testsrc/tests/e4x/Expressions/CVS/Entries
new file mode 100644
index 00000000..d1f9f824
--- /dev/null
+++ b/testsrc/tests/e4x/Expressions/CVS/Entries
@@ -0,0 +1,32 @@
+/11.1.1.js/1.5/Sat May 26 00:19:18 2007//
+/11.1.2.js/1.5/Sat May 26 00:19:18 2007//
+/11.1.3.js/1.5/Sat May 26 00:19:18 2007//
+/11.1.4-01.js/1.2/Sat May 26 00:19:18 2007//
+/11.1.4-02.js/1.2/Sat May 26 00:19:18 2007//
+/11.1.4-03.js/1.2/Sat May 26 00:19:18 2007//
+/11.1.4-04.js/1.2/Sat May 26 00:19:18 2007//
+/11.1.4-05.js/1.2/Sat May 26 00:19:18 2007//
+/11.1.4-06.js/1.2/Sat May 26 00:19:18 2007//
+/11.1.4-07.js/1.2/Sat May 26 00:19:18 2007//
+/11.1.4-08.js/1.2/Sat May 26 00:19:18 2007//
+/11.1.4.js/1.5/Sat May 26 00:19:18 2007//
+/11.1.5.js/1.4/Sat May 26 00:19:18 2007//
+/11.2.1.js/1.4/Sat May 26 00:19:18 2007//
+/11.2.2.js/1.4/Sat May 26 00:19:18 2007//
+/11.2.3.js/1.4/Sat May 26 00:19:18 2007//
+/11.2.4.js/1.4/Sat May 26 00:19:18 2007//
+/11.3.1.js/1.5/Sat May 26 00:19:18 2007//
+/11.3.2.js/1.4/Sat May 26 00:19:18 2007//
+/11.4.1.js/1.4/Sat May 26 00:19:18 2007//
+/11.5.1.js/1.4/Sat May 26 00:19:18 2007//
+/11.6.1.js/1.5/Sat May 26 00:19:18 2007//
+/11.6.2.js/1.4/Sat May 26 00:19:18 2007//
+/11.6.3.js/1.4/Sat May 26 00:19:18 2007//
+/browser.js/1.1/Fri Mar 18 19:09:15 2005//
+/regress-301545.js/1.2/Sat May 26 00:19:18 2007//
+/regress-302531.js/1.2/Sat May 26 00:19:18 2007//
+/regress-340024.js/1.2/Sat May 26 00:19:18 2007//
+/regress-366123.js/1.2/Sat May 26 00:19:18 2007//
+/regress-496113.js/1.1/Tue Aug 18 07:41:48 2009//
+/shell.js/1.2/Sat May 26 00:19:18 2007//
+D
diff --git a/testsrc/tests/e4x/Expressions/CVS/Repository b/testsrc/tests/e4x/Expressions/CVS/Repository
new file mode 100644
index 00000000..904cbefe
--- /dev/null
+++ b/testsrc/tests/e4x/Expressions/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/e4x/Expressions
diff --git a/testsrc/tests/e4x/Expressions/CVS/Root b/testsrc/tests/e4x/Expressions/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/e4x/Expressions/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/e4x/GC/CVS/Entries b/testsrc/tests/e4x/GC/CVS/Entries
new file mode 100644
index 00000000..3c136ef7
--- /dev/null
+++ b/testsrc/tests/e4x/GC/CVS/Entries
@@ -0,0 +1,13 @@
+/browser.js/1.1/Wed Jun 7 22:54:34 2006//
+/regress-280844-1.js/1.2/Sat May 26 00:19:19 2007//
+/regress-280844-2.js/1.2/Sat May 26 00:19:19 2007//
+/regress-292455.js/1.2/Sat May 26 00:19:19 2007//
+/regress-313952-01.js/1.2/Sat May 26 00:19:19 2007//
+/regress-313952-02.js/1.2/Sat May 26 00:19:19 2007//
+/regress-324117.js/1.2/Sat May 26 00:19:19 2007//
+/regress-324278.js/1.2/Sat May 26 00:19:19 2007//
+/regress-339785.js/1.2/Sat May 26 00:19:19 2007//
+/regress-357063-01.js/1.2/Sat May 26 00:19:19 2007//
+/regress-357063-02.js/1.2/Sat May 26 00:19:19 2007//
+/shell.js/1.2/Sat May 26 00:19:19 2007//
+D
diff --git a/testsrc/tests/e4x/GC/CVS/Repository b/testsrc/tests/e4x/GC/CVS/Repository
new file mode 100644
index 00000000..adb40f10
--- /dev/null
+++ b/testsrc/tests/e4x/GC/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/e4x/GC
diff --git a/testsrc/tests/e4x/GC/CVS/Root b/testsrc/tests/e4x/GC/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/e4x/GC/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/e4x/Global/CVS/Entries b/testsrc/tests/e4x/Global/CVS/Entries
new file mode 100644
index 00000000..3fbc1796
--- /dev/null
+++ b/testsrc/tests/e4x/Global/CVS/Entries
@@ -0,0 +1,4 @@
+/13.1.2.1.js/1.9/Thu Jul 12 17:49:30 2007//
+/browser.js/1.1/Fri Mar 18 19:09:16 2005//
+/shell.js/1.2/Sat May 26 00:19:19 2007//
+D
diff --git a/testsrc/tests/e4x/Global/CVS/Repository b/testsrc/tests/e4x/Global/CVS/Repository
new file mode 100644
index 00000000..e3c11a6c
--- /dev/null
+++ b/testsrc/tests/e4x/Global/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/e4x/Global
diff --git a/testsrc/tests/e4x/Global/CVS/Root b/testsrc/tests/e4x/Global/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/e4x/Global/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/e4x/Namespace/CVS/Entries b/testsrc/tests/e4x/Namespace/CVS/Entries
new file mode 100644
index 00000000..bb0a933e
--- /dev/null
+++ b/testsrc/tests/e4x/Namespace/CVS/Entries
@@ -0,0 +1,11 @@
+/13.2.1.js/1.4/Sat May 26 00:19:19 2007//
+/13.2.2.js/1.4/Sat May 26 00:19:19 2007//
+/13.2.5.js/1.4/Sat May 26 00:19:19 2007//
+/browser.js/1.1/Fri Mar 18 19:09:16 2005//
+/regress-283972.js/1.3/Sat May 26 00:19:19 2007//
+/regress-292863.js/1.3/Sat May 26 00:19:19 2007//
+/regress-350442.js/1.3/Sat May 26 00:19:19 2007//
+/regress-444608-02.js/1.1/Wed Sep 24 07:45:17 2008//
+/regress-444608.js/1.1/Wed Sep 24 07:45:17 2008//
+/shell.js/1.2/Sat May 26 00:19:19 2007//
+D
diff --git a/testsrc/tests/e4x/Namespace/CVS/Repository b/testsrc/tests/e4x/Namespace/CVS/Repository
new file mode 100644
index 00000000..c1f4ad3b
--- /dev/null
+++ b/testsrc/tests/e4x/Namespace/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/e4x/Namespace
diff --git a/testsrc/tests/e4x/Namespace/CVS/Root b/testsrc/tests/e4x/Namespace/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/e4x/Namespace/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/e4x/QName/CVS/Entries b/testsrc/tests/e4x/QName/CVS/Entries
new file mode 100644
index 00000000..c77e6bca
--- /dev/null
+++ b/testsrc/tests/e4x/QName/CVS/Entries
@@ -0,0 +1,10 @@
+/13.3.1.js/1.4/Sat May 26 00:19:19 2007//
+/13.3.2.js/1.4/Sat May 26 00:19:19 2007//
+/13.3.5.js/1.4/Sat May 26 00:19:19 2007//
+/browser.js/1.1/Fri Mar 18 19:09:16 2005//
+/regress-373595-01.js/1.1/Wed Aug 8 15:21:55 2007//
+/regress-373595-02.js/1.1/Wed Aug 8 15:21:55 2007//
+/regress-373595-03.js/1.2/Wed Jun 25 14:45:45 2008//
+/regress-444608.js/1.1/Wed Sep 24 07:45:18 2008//
+/shell.js/1.2/Sat May 26 00:19:19 2007//
+D
diff --git a/testsrc/tests/e4x/QName/CVS/Repository b/testsrc/tests/e4x/QName/CVS/Repository
new file mode 100644
index 00000000..2495f4f1
--- /dev/null
+++ b/testsrc/tests/e4x/QName/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/e4x/QName
diff --git a/testsrc/tests/e4x/QName/CVS/Root b/testsrc/tests/e4x/QName/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/e4x/QName/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/e4x/Regress/CVS/Entries b/testsrc/tests/e4x/Regress/CVS/Entries
new file mode 100644
index 00000000..fecc1e53
--- /dev/null
+++ b/testsrc/tests/e4x/Regress/CVS/Entries
@@ -0,0 +1,96 @@
+/browser.js/1.1/Fri Mar 18 19:09:17 2005//
+/regress-257679.js/1.5/Sat May 26 00:19:20 2007//
+/regress-263934.js/1.4/Sat May 26 00:19:20 2007//
+/regress-263935.js/1.4/Sat May 26 00:19:20 2007//
+/regress-263936.js/1.4/Sat May 26 00:19:20 2007//
+/regress-264369.js/1.5/Sat May 26 00:19:20 2007//
+/regress-271545.js/1.4/Sat May 26 00:19:20 2007//
+/regress-277650.js/1.3/Sat May 26 00:19:20 2007//
+/regress-277664.js/1.3/Sat May 26 00:19:20 2007//
+/regress-277683.js/1.3/Sat May 26 00:19:20 2007//
+/regress-277779.js/1.3/Sat May 26 00:19:20 2007//
+/regress-277935.js/1.6/Sat May 26 00:19:20 2007//
+/regress-278112.js/1.4/Sat May 26 00:19:20 2007//
+/regress-283349.js/1.2/Sat May 26 00:19:20 2007//
+/regress-290056.js/1.3/Sat May 26 00:19:20 2007//
+/regress-290499.js/1.4/Sat May 26 00:19:20 2007//
+/regress-301553.js/1.2/Sat May 26 00:19:20 2007//
+/regress-301573.js/1.2/Sat May 26 00:19:20 2007//
+/regress-301596.js/1.2/Sat May 26 00:19:20 2007//
+/regress-301692.js/1.2/Sat May 26 00:19:20 2007//
+/regress-308111.js/1.2/Sat May 26 00:19:20 2007//
+/regress-309897.js/1.2/Sat May 26 00:19:20 2007//
+/regress-311580.js/1.5/Sat May 26 00:19:20 2007//
+/regress-313799.js/1.3/Sat May 26 00:19:20 2007//
+/regress-318922.js/1.2/Sat May 26 00:19:20 2007//
+/regress-319872.js/1.4/Thu Apr 10 20:23:42 2008//
+/regress-321547.js/1.4/Sat May 26 00:19:20 2007//
+/regress-322499.js/1.2/Sat May 26 00:19:20 2007//
+/regress-323338-1.js/1.3/Sat May 26 00:19:20 2007//
+/regress-323338-2.js/1.3/Sat May 26 00:19:20 2007//
+/regress-325425.js/1.2/Sat May 26 00:19:20 2007//
+/regress-327564.js/1.2/Sat May 26 00:19:20 2007//
+/regress-327691-01.js/1.2/Sat May 26 00:19:20 2007//
+/regress-327691-02.js/1.2/Sat May 26 00:19:20 2007//
+/regress-327697.js/1.3/Sat May 26 00:19:20 2007//
+/regress-328249.js/1.3/Sat Feb 21 01:29:55 2009//
+/regress-329257.js/1.2/Sat May 26 00:19:20 2007//
+/regress-331558.js/1.2/Sat May 26 00:19:20 2007//
+/regress-331664.js/1.2/Sat May 26 00:19:20 2007//
+/regress-344455.js/1.2/Sat May 26 00:19:20 2007//
+/regress-347155.js/1.2/Sat May 26 00:19:20 2007//
+/regress-350206-1.js/1.2/Sat May 26 00:19:20 2007//
+/regress-350206.js/1.3/Thu Jul 12 17:49:30 2007//
+/regress-350238.js/1.4/Thu Nov 27 11:04:00 2008//
+/regress-350629.js/1.2/Sat May 26 00:19:20 2007//
+/regress-352097.js/1.2/Sat May 26 00:19:20 2007//
+/regress-352103.js/1.2/Sat May 26 00:19:20 2007//
+/regress-352223.js/1.2/Sat May 26 00:19:20 2007//
+/regress-354145-01.js/1.2/Sat May 26 00:19:20 2007//
+/regress-354145-02.js/1.2/Sat May 26 00:19:20 2007//
+/regress-354145-03.js/1.2/Sat May 26 00:19:20 2007//
+/regress-354145-04.js/1.2/Sat May 26 00:19:20 2007//
+/regress-354145-05.js/1.2/Sat May 26 00:19:20 2007//
+/regress-354145-07.js/1.2/Sat May 26 00:19:20 2007//
+/regress-354998.js/1.5/Sat Feb 21 01:29:55 2009//
+/regress-355474-02.js/1.2/Sat May 26 00:19:20 2007//
+/regress-355478.js/1.2/Sat May 26 00:19:20 2007//
+/regress-355569.js/1.1/Fri Oct 17 21:14:30 2008//
+/regress-356238-01.js/1.2/Sat May 26 00:19:20 2007//
+/regress-356238-02.js/1.2/Sat May 26 00:19:20 2007//
+/regress-356238-03.js/1.3/Fri Jun 15 17:00:46 2007//
+/regress-361451.js/1.2/Sat May 26 00:19:20 2007//
+/regress-364017.js/1.2/Sat May 26 00:19:20 2007//
+/regress-369032.js/1.2/Thu Jul 12 17:49:30 2007//
+/regress-369536.js/1.2/Sat May 26 00:19:20 2007//
+/regress-369740.js/1.2/Sat May 26 00:19:20 2007//
+/regress-370016.js/1.2/Sat May 26 00:19:20 2007//
+/regress-370048-01.js/1.2/Sat May 26 00:19:20 2007//
+/regress-370048-02.js/1.2/Sat May 26 00:19:20 2007//
+/regress-370372.js/1.2/Sat May 26 00:19:20 2007//
+/regress-371369.js/1.2/Sat May 26 00:19:20 2007//
+/regress-372563.js/1.4/Thu Jul 12 17:49:30 2007//
+/regress-372564.js/1.4/Thu Jul 12 17:49:30 2007//
+/regress-373082.js/1.3/Sat May 26 00:19:20 2007//
+/regress-374106.js/1.3/Sat May 26 00:19:20 2007//
+/regress-374112.js/1.2/Sat May 26 00:19:20 2007//
+/regress-374116.js/1.3/Sat May 26 00:19:20 2007//
+/regress-374160.js/1.2/Sat May 26 00:19:20 2007//
+/regress-375406.js/1.1/Fri Aug 7 20:29:14 2009//
+/regress-378492.js/1.2/Sat May 26 00:19:20 2007//
+/regress-380833.js/1.1/Tue Sep 18 19:49:21 2007//
+/regress-383255.js/1.2/Thu Jul 12 17:49:30 2007//
+/regress-394941.js/1.2/Tue Nov 27 17:42:04 2007//
+/regress-407323.js/1.2/Fri Dec 21 00:02:14 2007//
+/regress-426520.js/1.1/Tue Aug 18 08:37:32 2009//
+/regress-453915.js/1.1/Thu Nov 27 11:40:05 2008//
+/regress-458679-01.js/1.1/Wed Jan 14 16:12:54 2009//
+/regress-458679-02.js/1.1/Wed Jan 14 16:12:54 2009//
+/regress-460180.js/1.1/Mon Oct 20 15:45:57 2008//
+/regress-465063.js/1.1/Tue Aug 18 08:44:18 2009//
+/regress-470619.js/1.1/Mon Feb 22 18:53:42 2010//
+/regress-473709.js/1.1/Fri Mar 6 01:38:36 2009//
+/regress-474319.js/1.1/Tue Aug 18 08:52:45 2009//
+/regress-477053.js/1.1/Sat Feb 21 01:29:55 2009//
+/shell.js/1.2/Sat May 26 00:19:20 2007//
+D
diff --git a/testsrc/tests/e4x/Regress/CVS/Repository b/testsrc/tests/e4x/Regress/CVS/Repository
new file mode 100644
index 00000000..1ee00e6f
--- /dev/null
+++ b/testsrc/tests/e4x/Regress/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/e4x/Regress
diff --git a/testsrc/tests/e4x/Regress/CVS/Root b/testsrc/tests/e4x/Regress/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/e4x/Regress/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/e4x/Statements/CVS/Entries b/testsrc/tests/e4x/Statements/CVS/Entries
new file mode 100644
index 00000000..94be4d89
--- /dev/null
+++ b/testsrc/tests/e4x/Statements/CVS/Entries
@@ -0,0 +1,6 @@
+/12.1.js/1.4/Sat May 26 00:19:20 2007//
+/12.2.js/1.4/Sat May 26 00:19:20 2007//
+/12.3-01.js/1.2/Sat May 26 00:19:20 2007//
+/browser.js/1.1/Fri Mar 18 19:09:17 2005//
+/shell.js/1.2/Sat May 26 00:19:20 2007//
+D
diff --git a/testsrc/tests/e4x/Statements/CVS/Repository b/testsrc/tests/e4x/Statements/CVS/Repository
new file mode 100644
index 00000000..65e52ff0
--- /dev/null
+++ b/testsrc/tests/e4x/Statements/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/e4x/Statements
diff --git a/testsrc/tests/e4x/Statements/CVS/Root b/testsrc/tests/e4x/Statements/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/e4x/Statements/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/e4x/TypeConversion/CVS/Entries b/testsrc/tests/e4x/TypeConversion/CVS/Entries
new file mode 100644
index 00000000..e04d2b21
--- /dev/null
+++ b/testsrc/tests/e4x/TypeConversion/CVS/Entries
@@ -0,0 +1,15 @@
+/10.1.1.js/1.5/Sat May 26 00:19:20 2007//
+/10.1.2.js/1.5/Sat May 26 00:19:20 2007//
+/10.2.1.js/1.7/Sat May 26 00:19:20 2007//
+/10.3.1.js/1.4/Sat May 26 00:19:20 2007//
+/10.3.js/1.4/Sat May 26 00:19:20 2007//
+/10.4.1.js/1.5/Sat May 26 00:19:20 2007//
+/10.4.js/1.5/Sat May 26 00:19:20 2007//
+/10.5.1.js/1.5/Sat May 26 00:19:20 2007//
+/10.5.js/1.5/Sat May 26 00:19:20 2007//
+/10.6.1.js/1.5/Sat May 26 00:19:20 2007//
+/10.6.js/1.5/Sat May 26 00:19:20 2007//
+/browser.js/1.1/Fri Mar 18 19:09:18 2005//
+/regress-302097.js/1.2/Sat May 26 00:19:20 2007//
+/shell.js/1.2/Sat May 26 00:19:20 2007//
+D
diff --git a/testsrc/tests/e4x/TypeConversion/CVS/Repository b/testsrc/tests/e4x/TypeConversion/CVS/Repository
new file mode 100644
index 00000000..aaa3b7d1
--- /dev/null
+++ b/testsrc/tests/e4x/TypeConversion/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/e4x/TypeConversion
diff --git a/testsrc/tests/e4x/TypeConversion/CVS/Root b/testsrc/tests/e4x/TypeConversion/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/e4x/TypeConversion/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/e4x/Types/CVS/Entries b/testsrc/tests/e4x/Types/CVS/Entries
new file mode 100644
index 00000000..97ae84ba
--- /dev/null
+++ b/testsrc/tests/e4x/Types/CVS/Entries
@@ -0,0 +1,26 @@
+/9.1.1.1.js/1.4/Sat May 26 00:19:20 2007//
+/9.1.1.10.js/1.5/Sat May 26 00:19:20 2007//
+/9.1.1.11.js/1.5/Sat May 26 00:19:20 2007//
+/9.1.1.12.js/1.5/Sat May 26 00:19:20 2007//
+/9.1.1.13.js/1.5/Sat May 26 00:19:20 2007//
+/9.1.1.2.js/1.5/Sat May 26 00:19:20 2007//
+/9.1.1.3.js/1.7/Sat May 26 00:19:20 2007//
+/9.1.1.4.js/1.5/Sat May 26 00:19:20 2007//
+/9.1.1.5.js/1.5/Sat May 26 00:19:20 2007//
+/9.1.1.6.js/1.4/Sat May 26 00:19:20 2007//
+/9.1.1.7.js/1.5/Sat May 26 00:19:20 2007//
+/9.1.1.8.js/1.5/Sat May 26 00:19:20 2007//
+/9.1.1.9.js/1.6/Sat May 26 00:19:20 2007//
+/9.2.1.1.js/1.4/Sat May 26 00:19:20 2007//
+/9.2.1.10.js/1.5/Sat May 26 00:19:20 2007//
+/9.2.1.2.js/1.5/Sat May 26 00:19:20 2007//
+/9.2.1.3.js/1.5/Sat May 26 00:19:20 2007//
+/9.2.1.4.js/1.5/Sat May 26 00:19:20 2007//
+/9.2.1.5.js/1.5/Sat May 26 00:19:20 2007//
+/9.2.1.6.js/1.5/Sat May 26 00:19:20 2007//
+/9.2.1.7.js/1.5/Sat May 26 00:19:20 2007//
+/9.2.1.8.js/1.4/Sat May 26 00:19:20 2007//
+/9.2.1.9.js/1.4/Sat May 26 00:19:20 2007//
+/browser.js/1.1/Fri Mar 18 19:09:18 2005//
+/shell.js/1.2/Sat May 26 00:19:20 2007//
+D
diff --git a/testsrc/tests/e4x/Types/CVS/Repository b/testsrc/tests/e4x/Types/CVS/Repository
new file mode 100644
index 00000000..2c2586d4
--- /dev/null
+++ b/testsrc/tests/e4x/Types/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/e4x/Types
diff --git a/testsrc/tests/e4x/Types/CVS/Root b/testsrc/tests/e4x/Types/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/e4x/Types/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/e4x/XML/CVS/Entries b/testsrc/tests/e4x/XML/CVS/Entries
new file mode 100644
index 00000000..e5089ed2
--- /dev/null
+++ b/testsrc/tests/e4x/XML/CVS/Entries
@@ -0,0 +1,57 @@
+/13.4.1.js/1.5/Sat May 26 00:19:21 2007//
+/13.4.2.js/1.5/Sat May 26 00:19:21 2007//
+/13.4.3.10.js/1.2/Sat May 26 00:19:21 2007//
+/13.4.3.js/1.7/Sat May 26 00:19:21 2007//
+/13.4.4.1.js/1.5/Sat May 26 00:19:21 2007//
+/13.4.4.10.js/1.5/Sat May 26 00:19:21 2007//
+/13.4.4.11.js/1.5/Sat May 26 00:19:21 2007//
+/13.4.4.12-1.js/1.2/Sat May 26 00:19:21 2007//
+/13.4.4.12.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.13.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.14.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.15.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.16.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.17.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.18.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.19.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.2.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.20.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.21.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.22.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.23.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.24.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.25.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.26.js/1.5/Sat May 26 00:19:21 2007//
+/13.4.4.27.js/1.5/Sat May 26 00:19:21 2007//
+/13.4.4.28.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.29.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.3-01.js/1.3/Sat May 26 00:19:21 2007//
+/13.4.4.3-02.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.3.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.30.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.31.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.32-01.js/1.2/Sat May 26 00:19:21 2007//
+/13.4.4.32.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.33.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.34.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.35.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.36.js/1.5/Sat May 26 00:19:21 2007//
+/13.4.4.37.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.38.js/1.5/Sat May 26 00:19:21 2007//
+/13.4.4.39.js/1.5/Sat May 26 00:19:21 2007//
+/13.4.4.4.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.40.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.5.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.6.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.7.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.8.js/1.4/Sat May 26 00:19:21 2007//
+/13.4.4.9.js/1.4/Sat May 26 00:19:21 2007//
+/browser.js/1.1/Fri Mar 18 19:09:18 2005//
+/regress-291930.js/1.2/Sat May 26 00:19:21 2007//
+/regress-324422-1.js/1.6/Mon Nov 26 08:42:53 2007//
+/regress-324422-2.js/1.5/Wed Feb 6 20:06:39 2008//
+/regress-324688.js/1.5/Sat May 26 00:19:21 2007//
+/regress-336921.js/1.2/Sat May 26 00:19:21 2007//
+/regress-376773.js/1.3/Sat May 26 00:19:21 2007//
+/shell.js/1.2/Sat May 26 00:19:21 2007//
+D
diff --git a/testsrc/tests/e4x/XML/CVS/Repository b/testsrc/tests/e4x/XML/CVS/Repository
new file mode 100644
index 00000000..00406063
--- /dev/null
+++ b/testsrc/tests/e4x/XML/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/e4x/XML
diff --git a/testsrc/tests/e4x/XML/CVS/Root b/testsrc/tests/e4x/XML/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/e4x/XML/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/e4x/XMLList/CVS/Entries b/testsrc/tests/e4x/XMLList/CVS/Entries
new file mode 100644
index 00000000..73e6eab4
--- /dev/null
+++ b/testsrc/tests/e4x/XMLList/CVS/Entries
@@ -0,0 +1,27 @@
+/13.5.1.js/1.4/Sat May 26 00:19:21 2007//
+/13.5.2.js/1.5/Sat May 26 00:19:21 2007//
+/13.5.4.10.js/1.4/Sat May 26 00:19:21 2007//
+/13.5.4.11.js/1.4/Sat May 26 00:19:21 2007//
+/13.5.4.12.js/1.4/Sat May 26 00:19:21 2007//
+/13.5.4.13.js/1.4/Sat May 26 00:19:21 2007//
+/13.5.4.14.js/1.4/Sat May 26 00:19:21 2007//
+/13.5.4.15.js/1.4/Sat May 26 00:19:21 2007//
+/13.5.4.16.js/1.5/Sat May 26 00:19:21 2007//
+/13.5.4.17.js/1.4/Sat May 26 00:19:21 2007//
+/13.5.4.18.js/1.4/Sat May 26 00:19:21 2007//
+/13.5.4.19.js/1.4/Sat May 26 00:19:21 2007//
+/13.5.4.2.js/1.4/Sat May 26 00:19:21 2007//
+/13.5.4.20.js/1.5/Sat May 26 00:19:21 2007//
+/13.5.4.21.js/1.5/Sat May 26 00:19:21 2007//
+/13.5.4.22.js/1.4/Sat May 26 00:19:21 2007//
+/13.5.4.3.js/1.4/Sat May 26 00:19:21 2007//
+/13.5.4.4.js/1.4/Sat May 26 00:19:21 2007//
+/13.5.4.5.js/1.4/Sat May 26 00:19:21 2007//
+/13.5.4.6.js/1.4/Sat May 26 00:19:21 2007//
+/13.5.4.7.js/1.4/Sat May 26 00:19:21 2007//
+/13.5.4.8.js/1.4/Sat May 26 00:19:21 2007//
+/13.5.4.9.js/1.5/Sat May 26 00:19:21 2007//
+/browser.js/1.1/Fri Mar 18 19:09:19 2005//
+/regress-373072.js/1.3/Sat May 26 00:19:21 2007//
+/shell.js/1.2/Sat May 26 00:19:21 2007//
+D
diff --git a/testsrc/tests/e4x/XMLList/CVS/Repository b/testsrc/tests/e4x/XMLList/CVS/Repository
new file mode 100644
index 00000000..6b14548f
--- /dev/null
+++ b/testsrc/tests/e4x/XMLList/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/e4x/XMLList
diff --git a/testsrc/tests/e4x/XMLList/CVS/Root b/testsrc/tests/e4x/XMLList/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/e4x/XMLList/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/e4x/decompilation/CVS/Entries b/testsrc/tests/e4x/decompilation/CVS/Entries
new file mode 100644
index 00000000..4a709cae
--- /dev/null
+++ b/testsrc/tests/e4x/decompilation/CVS/Entries
@@ -0,0 +1,21 @@
+/browser.js/1.1/Mon Feb 26 08:57:21 2007//
+/decompile-xml-escapes.js/1.2/Sat May 26 00:19:21 2007//
+/regress-349814.js/1.2/Sat May 26 00:19:21 2007//
+/regress-349815.js/1.2/Sat May 26 00:19:21 2007//
+/regress-349822.js/1.2/Sat May 26 00:19:21 2007//
+/regress-349956.js/1.2/Sat May 26 00:19:21 2007//
+/regress-350226.js/1.2/Sat May 26 00:19:21 2007//
+/regress-350531.js/1.3/Sat Feb 21 01:29:57 2009//
+/regress-351706.js/1.2/Sat May 26 00:19:21 2007//
+/regress-351988.js/1.2/Sat May 26 00:19:21 2007//
+/regress-352013.js/1.2/Sat May 26 00:19:21 2007//
+/regress-352459.js/1.2/Sat May 26 00:19:21 2007//
+/regress-352649.js/1.2/Sat May 26 00:19:21 2007//
+/regress-352789.js/1.2/Sat May 26 00:19:21 2007//
+/regress-355101.js/1.2/Sat May 26 00:19:21 2007//
+/regress-355474-01.js/1.2/Sat May 26 00:19:21 2007//
+/regress-373678.js/1.2/Sat May 26 00:19:21 2007//
+/regress-429249.js/1.1/Sat Apr 26 00:47:40 2008//
+/regress-461233.js/1.1/Tue Nov 11 21:04:28 2008//
+/shell.js/1.2/Sat May 26 00:19:21 2007//
+D
diff --git a/testsrc/tests/e4x/decompilation/CVS/Repository b/testsrc/tests/e4x/decompilation/CVS/Repository
new file mode 100644
index 00000000..3ba3c9bc
--- /dev/null
+++ b/testsrc/tests/e4x/decompilation/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/e4x/decompilation
diff --git a/testsrc/tests/e4x/decompilation/CVS/Root b/testsrc/tests/e4x/decompilation/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/e4x/decompilation/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/e4x/extensions/CVS/Entries b/testsrc/tests/e4x/extensions/CVS/Entries
new file mode 100644
index 00000000..8fc176ba
--- /dev/null
+++ b/testsrc/tests/e4x/extensions/CVS/Entries
@@ -0,0 +1,23 @@
+/browser.js/1.1/Fri Feb 9 00:00:51 2007//
+/regress-305335.js/1.2/Sat May 26 00:19:21 2007//
+/regress-312196.js/1.2/Sat May 26 00:19:21 2007//
+/regress-313080.js/1.2/Sat May 26 00:19:21 2007//
+/regress-321547.js/1.2/Sat May 26 00:19:21 2007//
+/regress-327534.js/1.2/Sat May 26 00:19:21 2007//
+/regress-327897.js/1.2/Sat May 26 00:19:21 2007//
+/regress-337226.js/1.2/Sat May 26 00:19:21 2007//
+/regress-352846-01.js/1.2/Sat May 26 00:19:21 2007//
+/regress-352846-02.js/1.2/Sat May 26 00:19:21 2007//
+/regress-352846-03.js/1.2/Sat May 26 00:19:21 2007//
+/regress-353165.js/1.3/Sat May 26 00:19:21 2007//
+/regress-354145-06.js/1.2/Sat May 26 00:19:21 2007//
+/regress-354151-01.js/1.2/Sat May 26 00:19:21 2007//
+/regress-354151-02.js/1.2/Sat May 26 00:19:21 2007//
+/regress-374025.js/1.1/Sat Apr 5 09:01:57 2008//
+/regress-374163.js/1.2/Sat May 26 00:19:21 2007//
+/regress-410192.js/1.1/Mon Jan 7 16:58:30 2008//
+/regress-450871-01.js/1.1/Mon Sep 22 17:30:39 2008//
+/regress-450871-02.js/1.1/Mon Sep 22 17:30:39 2008//
+/regress-462734-01.js/1.1/Fri Aug 7 21:28:26 2009//
+/shell.js/1.2/Sat May 26 00:19:21 2007//
+D
diff --git a/testsrc/tests/e4x/extensions/CVS/Repository b/testsrc/tests/e4x/extensions/CVS/Repository
new file mode 100644
index 00000000..55cc237e
--- /dev/null
+++ b/testsrc/tests/e4x/extensions/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/e4x/extensions
diff --git a/testsrc/tests/e4x/extensions/CVS/Root b/testsrc/tests/e4x/extensions/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/e4x/extensions/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma/Array/CVS/Entries b/testsrc/tests/ecma/Array/CVS/Entries
new file mode 100644
index 00000000..beca3c34
--- /dev/null
+++ b/testsrc/tests/ecma/Array/CVS/Entries
@@ -0,0 +1,30 @@
+/15.4-1.js/1.5/Sat May 26 00:19:22 2007//
+/15.4-2.js/1.5/Sat May 26 00:19:22 2007//
+/15.4.1.1.js/1.5/Sat May 26 00:19:22 2007//
+/15.4.1.2.js/1.6/Sat May 26 00:19:22 2007//
+/15.4.1.3.js/1.5/Sat May 26 00:19:22 2007//
+/15.4.1.js/1.5/Sat May 26 00:19:22 2007//
+/15.4.2.1-1.js/1.5/Sat May 26 00:19:22 2007//
+/15.4.2.1-2.js/1.5/Sat May 26 00:19:22 2007//
+/15.4.2.1-3.js/1.5/Sat May 26 00:19:22 2007//
+/15.4.2.2-1.js/1.6/Sat May 26 00:19:22 2007//
+/15.4.2.2-2.js/1.5/Sat May 26 00:19:22 2007//
+/15.4.2.3.js/1.5/Sat May 26 00:19:22 2007//
+/15.4.3.1-2.js/1.5/Sat May 26 00:19:22 2007//
+/15.4.3.2.js/1.5/Sat May 26 00:19:22 2007//
+/15.4.4.1.js/1.5/Sat May 26 00:19:22 2007//
+/15.4.4.2.js/1.5/Sat May 26 00:19:22 2007//
+/15.4.4.3-1.js/1.7/Sat May 26 00:19:22 2007//
+/15.4.4.4-1.js/1.6/Sat May 26 00:19:22 2007//
+/15.4.4.4-2.js/1.5/Sat May 26 00:19:22 2007//
+/15.4.4.5-1.js/1.6/Sat May 26 00:19:22 2007//
+/15.4.4.5-2.js/1.5/Sat May 26 00:19:22 2007//
+/15.4.4.5-3.js/1.5/Sat May 26 00:19:22 2007//
+/15.4.4.js/1.5/Sat May 26 00:19:22 2007//
+/15.4.5.1-1.js/1.6/Sat May 26 00:19:22 2007//
+/15.4.5.1-2.js/1.5/Sat May 26 00:19:22 2007//
+/15.4.5.2-1.js/1.5/Sat May 26 00:19:22 2007//
+/15.4.5.2-2.js/1.6/Sat May 26 00:19:22 2007//
+/browser.js/1.1/Fri Mar 18 19:09:19 2005//
+/shell.js/1.2/Sat May 26 00:19:22 2007//
+D
diff --git a/testsrc/tests/ecma/Array/CVS/Repository b/testsrc/tests/ecma/Array/CVS/Repository
new file mode 100644
index 00000000..b3eaa83a
--- /dev/null
+++ b/testsrc/tests/ecma/Array/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma/Array
diff --git a/testsrc/tests/ecma/Array/CVS/Root b/testsrc/tests/ecma/Array/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma/Array/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma/Boolean/CVS/Entries b/testsrc/tests/ecma/Boolean/CVS/Entries
new file mode 100644
index 00000000..5119df97
--- /dev/null
+++ b/testsrc/tests/ecma/Boolean/CVS/Entries
@@ -0,0 +1,22 @@
+/15.6.1.js/1.5/Sat May 26 00:19:22 2007//
+/15.6.2.js/1.5/Sat May 26 00:19:22 2007//
+/15.6.3.1-1.js/1.5/Sat May 26 00:19:22 2007//
+/15.6.3.1-2.js/1.5/Sat May 26 00:19:22 2007//
+/15.6.3.1-3.js/1.5/Sat May 26 00:19:22 2007//
+/15.6.3.1-4.js/1.5/Sat May 26 00:19:22 2007//
+/15.6.3.1.js/1.5/Sat May 26 00:19:22 2007//
+/15.6.4-1.js/1.5/Sat May 26 00:19:22 2007//
+/15.6.4.1.js/1.5/Sat May 26 00:19:22 2007//
+/15.6.4.2-1.js/1.5/Sat May 26 00:19:22 2007//
+/15.6.4.2-2.js/1.5/Sat May 26 00:19:22 2007//
+/15.6.4.2-3.js/1.5/Sat May 26 00:19:22 2007//
+/15.6.4.2-4-n.js/1.5/Sat May 26 00:19:22 2007//
+/15.6.4.3-1.js/1.5/Sat May 26 00:19:22 2007//
+/15.6.4.3-2.js/1.6/Sat May 26 00:19:22 2007//
+/15.6.4.3-3.js/1.5/Sat May 26 00:19:22 2007//
+/15.6.4.3-4-n.js/1.5/Sat May 26 00:19:22 2007//
+/15.6.4.3.js/1.5/Sat May 26 00:19:22 2007//
+/15.6.4.js/1.5/Sat May 26 00:19:22 2007//
+/browser.js/1.1/Fri Mar 18 19:09:20 2005//
+/shell.js/1.2/Sat May 26 00:19:22 2007//
+D
diff --git a/testsrc/tests/ecma/Boolean/CVS/Repository b/testsrc/tests/ecma/Boolean/CVS/Repository
new file mode 100644
index 00000000..a8e45c8f
--- /dev/null
+++ b/testsrc/tests/ecma/Boolean/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma/Boolean
diff --git a/testsrc/tests/ecma/Boolean/CVS/Root b/testsrc/tests/ecma/Boolean/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma/Boolean/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma/CVS/Entries b/testsrc/tests/ecma/CVS/Entries
new file mode 100644
index 00000000..c6e020df
--- /dev/null
+++ b/testsrc/tests/ecma/CVS/Entries
@@ -0,0 +1,6 @@
+/README/1.1/Fri Mar 18 19:09:19 2005//
+/browser.js/1.20/Sat May 26 00:19:22 2007//
+/jsref.js/1.4/Mon Oct 30 16:48:32 2006//
+/shell.js/1.23/Tue Mar 11 22:18:23 2008//
+/template.js/1.6/Wed Aug 13 12:10:55 2008//
+D
diff --git a/testsrc/tests/ecma/CVS/Entries.Log b/testsrc/tests/ecma/CVS/Entries.Log
new file mode 100644
index 00000000..61844922
--- /dev/null
+++ b/testsrc/tests/ecma/CVS/Entries.Log
@@ -0,0 +1,18 @@
+A D/Array////
+A D/Boolean////
+A D/Date////
+A D/ExecutionContexts////
+A D/Expressions////
+A D/FunctionObjects////
+A D/GlobalObject////
+A D/LexicalConventions////
+A D/Math////
+A D/NativeObjects////
+A D/Number////
+A D/ObjectObjects////
+A D/SourceText////
+A D/Statements////
+A D/String////
+A D/TypeConversion////
+A D/Types////
+A D/extensions////
diff --git a/testsrc/tests/ecma/CVS/Repository b/testsrc/tests/ecma/CVS/Repository
new file mode 100644
index 00000000..df49f90c
--- /dev/null
+++ b/testsrc/tests/ecma/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma
diff --git a/testsrc/tests/ecma/CVS/Root b/testsrc/tests/ecma/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma/Date/CVS/Entries b/testsrc/tests/ecma/Date/CVS/Entries
new file mode 100644
index 00000000..feb9bbce
--- /dev/null
+++ b/testsrc/tests/ecma/Date/CVS/Entries
@@ -0,0 +1,153 @@
+/15.9.1.1-1.js/1.6/Mon Nov 19 17:12:58 2007//
+/15.9.1.1-2.js/1.6/Mon Nov 19 17:12:58 2007//
+/15.9.1.13-1.js/1.2/Sat May 26 00:19:22 2007//
+/15.9.2.1.js/1.7/Mon Nov 19 17:12:58 2007//
+/15.9.2.2-1.js/1.7/Mon Nov 19 17:12:58 2007//
+/15.9.2.2-2.js/1.7/Mon Nov 19 17:12:58 2007//
+/15.9.2.2-3.js/1.7/Mon Dec 17 11:59:28 2007//
+/15.9.2.2-4.js/1.7/Mon Nov 19 17:12:58 2007//
+/15.9.2.2-5.js/1.7/Mon Dec 17 11:59:28 2007//
+/15.9.2.2-6.js/1.6/Mon Nov 19 17:12:58 2007//
+/15.9.3.1-1.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.3.1-2.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.3.1-3.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.3.1-4.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.3.1-5.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.3.2-1.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.3.2-2.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.3.2-3.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.3.2-4.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.3.2-5.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.3.8-1.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.3.8-2.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.3.8-3.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.3.8-4.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.3.8-5.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.4.2-1.js/1.6/Sat May 26 00:19:22 2007//
+/15.9.4.2.js/1.6/Sat May 26 00:19:22 2007//
+/15.9.4.3.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.1.js/1.6/Sat May 26 00:19:22 2007//
+/15.9.5.10-1.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.10-10.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.10-11.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.10-12.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.10-13.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.10-2.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.10-3.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.10-4.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.10-5.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.10-6.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.10-7.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.10-8.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.10-9.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.11-1.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.11-2.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.11-3.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.11-4.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.11-5.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.11-6.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.11-7.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.12-1.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.12-2.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.12-3.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.12-4.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.12-5.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.12-6.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.12-7.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.12-8.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.13-1.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.13-2.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.13-3.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.13-4.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.13-5.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.13-6.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.13-7.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.13-8.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.14.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.15.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.16.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.17.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.18.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.19.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.2-1.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.2-2-n.js/1.6/Sat May 26 00:19:22 2007//
+/15.9.5.2.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.20.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.21-1.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.21-2.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.21-3.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.21-4.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.21-5.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.21-6.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.21-7.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.21-8.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.22-1.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.22-2.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.22-3.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.22-4.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.22-5.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.22-6.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.22-7.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.22-8.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.23-1.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.23-10.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.23-11.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.23-12.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.23-13.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.23-14.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.23-15.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.23-16.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.23-17.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.23-18.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.23-2.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.23-3-n.js/1.6/Sat May 26 00:19:22 2007//
+/15.9.5.23-4.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.23-5.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.23-6.js/1.7/Sat May 26 00:19:22 2007//
+/15.9.5.23-7.js/1.7/Sat May 26 00:19:23 2007//
+/15.9.5.23-8.js/1.7/Sat May 26 00:19:23 2007//
+/15.9.5.23-9.js/1.7/Sat May 26 00:19:23 2007//
+/15.9.5.24-1.js/1.7/Sat May 26 00:19:23 2007//
+/15.9.5.24-2.js/1.7/Sat May 26 00:19:23 2007//
+/15.9.5.24-3.js/1.7/Sat May 26 00:19:23 2007//
+/15.9.5.24-4.js/1.7/Sat May 26 00:19:23 2007//
+/15.9.5.24-5.js/1.7/Sat May 26 00:19:23 2007//
+/15.9.5.24-6.js/1.7/Sat May 26 00:19:23 2007//
+/15.9.5.24-7.js/1.7/Sat May 26 00:19:23 2007//
+/15.9.5.24-8.js/1.7/Sat May 26 00:19:23 2007//
+/15.9.5.25-1.js/1.7/Sat May 26 00:19:23 2007//
+/15.9.5.26-1.js/1.7/Sat May 26 00:19:23 2007//
+/15.9.5.27-1.js/1.7/Sat May 26 00:19:23 2007//
+/15.9.5.28-1.js/1.7/Sat May 26 00:19:23 2007//
+/15.9.5.29-1.js/1.7/Sat May 26 00:19:23 2007//
+/15.9.5.3-1-n.js/1.6/Sat May 26 00:19:23 2007//
+/15.9.5.3-2.js/1.7/Sat May 26 00:19:23 2007//
+/15.9.5.30-1.js/1.7/Sat May 26 00:19:23 2007//
+/15.9.5.31-1.js/1.8/Wed Dec 12 21:17:12 2007//
+/15.9.5.32-1.js/1.7/Sat May 26 00:19:23 2007//
+/15.9.5.33-1.js/1.7/Sat May 26 00:19:23 2007//
+/15.9.5.34-1.js/1.7/Sat May 26 00:19:23 2007//
+/15.9.5.35-1.js/1.8/Wed Dec 12 21:17:12 2007//
+/15.9.5.36-1.js/1.6/Sat May 26 00:19:23 2007//
+/15.9.5.36-2.js/1.6/Sat May 26 00:19:23 2007//
+/15.9.5.36-3.js/1.6/Sat May 26 00:19:23 2007//
+/15.9.5.36-4.js/1.6/Sat May 26 00:19:23 2007//
+/15.9.5.36-5.js/1.6/Sat May 26 00:19:23 2007//
+/15.9.5.36-6.js/1.6/Sat May 26 00:19:23 2007//
+/15.9.5.36-7.js/1.6/Sat May 26 00:19:23 2007//
+/15.9.5.37-1.js/1.6/Sat May 26 00:19:23 2007//
+/15.9.5.37-2.js/1.6/Sat May 26 00:19:23 2007//
+/15.9.5.37-3.js/1.6/Sat May 26 00:19:23 2007//
+/15.9.5.37-4.js/1.6/Sat May 26 00:19:23 2007//
+/15.9.5.37-5.js/1.6/Sat May 26 00:19:23 2007//
+/15.9.5.4-1.js/1.7/Sat May 26 00:19:23 2007//
+/15.9.5.4-2-n.js/1.6/Sat May 26 00:19:23 2007//
+/15.9.5.5.js/1.7/Sat May 26 00:19:23 2007//
+/15.9.5.6.js/1.7/Sat May 26 00:19:23 2007//
+/15.9.5.7.js/1.7/Sat May 26 00:19:23 2007//
+/15.9.5.8.js/1.7/Sat May 26 00:19:23 2007//
+/15.9.5.9.js/1.7/Sat May 26 00:19:23 2007//
+/15.9.5.js/1.7/Sat May 26 00:19:23 2007//
+/browser.js/1.1/Fri Mar 18 19:09:21 2005//
+/shell.js/1.2/Sat May 26 00:19:23 2007//
+D
diff --git a/testsrc/tests/ecma/Date/CVS/Repository b/testsrc/tests/ecma/Date/CVS/Repository
new file mode 100644
index 00000000..064c3056
--- /dev/null
+++ b/testsrc/tests/ecma/Date/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma/Date
diff --git a/testsrc/tests/ecma/Date/CVS/Root b/testsrc/tests/ecma/Date/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma/Date/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma/ExecutionContexts/CVS/Entries b/testsrc/tests/ecma/ExecutionContexts/CVS/Entries
new file mode 100644
index 00000000..4d19f723
--- /dev/null
+++ b/testsrc/tests/ecma/ExecutionContexts/CVS/Entries
@@ -0,0 +1,26 @@
+/10.1.3-1.js/1.6/Sat May 26 00:19:23 2007//
+/10.1.3-2.js/1.3/Sat May 26 00:19:23 2007//
+/10.1.3.js/1.10/Sat May 26 00:19:23 2007//
+/10.1.4-1.js/1.5/Sat May 26 00:19:23 2007//
+/10.1.4-10.js/1.5/Sat May 26 00:19:23 2007//
+/10.1.4-2.js/1.5/Sat May 26 00:19:23 2007//
+/10.1.4-3.js/1.5/Sat May 26 00:19:23 2007//
+/10.1.4-4.js/1.5/Sat May 26 00:19:23 2007//
+/10.1.4-5.js/1.5/Sat May 26 00:19:23 2007//
+/10.1.4-6.js/1.5/Sat May 26 00:19:23 2007//
+/10.1.4-7.js/1.5/Sat May 26 00:19:23 2007//
+/10.1.4-8.js/1.5/Sat May 26 00:19:23 2007//
+/10.1.5-1.js/1.6/Sat May 26 00:19:23 2007//
+/10.1.5-2.js/1.6/Sat May 26 00:19:23 2007//
+/10.1.5-3.js/1.6/Sat May 26 00:19:23 2007//
+/10.1.5-4.js/1.6/Sat May 26 00:19:23 2007//
+/10.1.8-2.js/1.5/Sat May 26 00:19:23 2007//
+/10.1.8-3.js/1.1/Tue Jan 29 15:02:12 2008//
+/10.2.1.js/1.5/Sat May 26 00:19:23 2007//
+/10.2.2-1.js/1.5/Sat May 26 00:19:23 2007//
+/10.2.2-2.js/1.5/Sat May 26 00:19:23 2007//
+/10.2.3-1.js/1.5/Sat May 26 00:19:23 2007//
+/10.2.3-2.js/1.5/Sat May 26 00:19:23 2007//
+/browser.js/1.1/Fri Mar 18 19:09:21 2005//
+/shell.js/1.2/Sat May 26 00:19:23 2007//
+D
diff --git a/testsrc/tests/ecma/ExecutionContexts/CVS/Repository b/testsrc/tests/ecma/ExecutionContexts/CVS/Repository
new file mode 100644
index 00000000..5f75f474
--- /dev/null
+++ b/testsrc/tests/ecma/ExecutionContexts/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma/ExecutionContexts
diff --git a/testsrc/tests/ecma/ExecutionContexts/CVS/Root b/testsrc/tests/ecma/ExecutionContexts/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma/ExecutionContexts/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma/Expressions/CVS/Entries b/testsrc/tests/ecma/Expressions/CVS/Entries
new file mode 100644
index 00000000..a55642d6
--- /dev/null
+++ b/testsrc/tests/ecma/Expressions/CVS/Entries
@@ -0,0 +1,71 @@
+/11.1.1.js/1.5/Sat May 26 00:19:23 2007//
+/11.10-1.js/1.5/Sat May 26 00:19:23 2007//
+/11.10-2.js/1.5/Sat May 26 00:19:23 2007//
+/11.10-3.js/1.5/Sat May 26 00:19:23 2007//
+/11.12-1.js/1.5/Sat May 26 00:19:23 2007//
+/11.12-2-n.js/1.5/Sat May 26 00:19:23 2007//
+/11.12-3.js/1.5/Sat May 26 00:19:23 2007//
+/11.12-4.js/1.5/Sat May 26 00:19:23 2007//
+/11.13.1.js/1.5/Sat May 26 00:19:23 2007//
+/11.13.2-1.js/1.5/Sat May 26 00:19:23 2007//
+/11.13.2-2.js/1.5/Sat May 26 00:19:23 2007//
+/11.13.2-3.js/1.5/Sat May 26 00:19:23 2007//
+/11.13.2-4.js/1.5/Sat May 26 00:19:23 2007//
+/11.13.2-5.js/1.5/Sat May 26 00:19:23 2007//
+/11.13.js/1.5/Sat May 26 00:19:23 2007//
+/11.14-1.js/1.5/Sat May 26 00:19:23 2007//
+/11.2.1-1.js/1.5/Sat May 26 00:19:23 2007//
+/11.2.1-2.js/1.5/Sat May 26 00:19:23 2007//
+/11.2.1-3-n.js/1.5/Sat May 26 00:19:23 2007//
+/11.2.1-4-n.js/1.5/Sat May 26 00:19:23 2007//
+/11.2.1-5.js/1.5/Sat May 26 00:19:23 2007//
+/11.2.2-1-n.js/1.5/Sat May 26 00:19:23 2007//
+/11.2.2-1.js/1.6/Sat May 26 00:19:23 2007//
+/11.2.2-10-n.js/1.5/Sat May 26 00:19:23 2007//
+/11.2.2-11.js/1.5/Sat May 26 00:19:23 2007//
+/11.2.2-2-n.js/1.5/Sat May 26 00:19:23 2007//
+/11.2.2-3-n.js/1.5/Sat May 26 00:19:23 2007//
+/11.2.2-4-n.js/1.5/Sat May 26 00:19:23 2007//
+/11.2.2-5-n.js/1.5/Sat May 26 00:19:23 2007//
+/11.2.2-6-n.js/1.5/Sat May 26 00:19:23 2007//
+/11.2.2-7-n.js/1.5/Sat May 26 00:19:23 2007//
+/11.2.2-8-n.js/1.5/Sat May 26 00:19:23 2007//
+/11.2.2-9-n.js/1.5/Sat May 26 00:19:23 2007//
+/11.2.3-1.js/1.6/Sat May 26 00:19:23 2007//
+/11.2.3-2-n.js/1.5/Sat May 26 00:19:23 2007//
+/11.2.3-3-n.js/1.5/Sat May 26 00:19:23 2007//
+/11.2.3-4-n.js/1.5/Sat May 26 00:19:23 2007//
+/11.2.3-5.js/1.6/Sat May 26 00:19:23 2007//
+/11.3.1.js/1.5/Sat May 26 00:19:23 2007//
+/11.3.2.js/1.5/Sat May 26 00:19:23 2007//
+/11.4.1.js/1.5/Sat May 26 00:19:23 2007//
+/11.4.2.js/1.5/Sat May 26 00:19:23 2007//
+/11.4.3.js/1.5/Sat May 26 00:19:23 2007//
+/11.4.4.js/1.5/Sat May 26 00:19:23 2007//
+/11.4.5.js/1.5/Sat May 26 00:19:23 2007//
+/11.4.6.js/1.6/Sat May 26 00:19:23 2007//
+/11.4.7-01.js/1.1/Sat May 10 03:33:48 2008//
+/11.4.7-02.js/1.1/Sat May 10 03:33:48 2008//
+/11.4.8.js/1.5/Sat May 26 00:19:23 2007//
+/11.4.9.js/1.5/Sat May 26 00:19:23 2007//
+/11.5.1.js/1.5/Sat May 26 00:19:23 2007//
+/11.5.2.js/1.6/Sat May 26 00:19:23 2007//
+/11.5.3.js/1.6/Sat May 26 00:19:23 2007//
+/11.6.1-1.js/1.6/Sat May 26 00:19:23 2007//
+/11.6.1-2.js/1.6/Sat May 26 00:19:23 2007//
+/11.6.1-3.js/1.6/Sat May 26 00:19:23 2007//
+/11.6.2-1.js/1.6/Sat May 26 00:19:23 2007//
+/11.6.3.js/1.5/Sat May 26 00:19:23 2007//
+/11.7.1.js/1.5/Sat May 26 00:19:23 2007//
+/11.7.2.js/1.5/Sat May 26 00:19:23 2007//
+/11.7.3.js/1.5/Sat May 26 00:19:23 2007//
+/11.8.1.js/1.5/Sat May 26 00:19:23 2007//
+/11.8.2.js/1.5/Sat May 26 00:19:23 2007//
+/11.8.3.js/1.5/Sat May 26 00:19:23 2007//
+/11.8.4.js/1.5/Sat May 26 00:19:23 2007//
+/11.9.1.js/1.6/Sat May 26 00:19:23 2007//
+/11.9.2.js/1.6/Sat May 26 00:19:23 2007//
+/11.9.3.js/1.6/Sat May 26 00:19:23 2007//
+/browser.js/1.1/Fri Mar 18 19:09:22 2005//
+/shell.js/1.2/Sat May 26 00:19:23 2007//
+D
diff --git a/testsrc/tests/ecma/Expressions/CVS/Repository b/testsrc/tests/ecma/Expressions/CVS/Repository
new file mode 100644
index 00000000..e6823b4c
--- /dev/null
+++ b/testsrc/tests/ecma/Expressions/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma/Expressions
diff --git a/testsrc/tests/ecma/Expressions/CVS/Root b/testsrc/tests/ecma/Expressions/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma/Expressions/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma/FunctionObjects/CVS/Entries b/testsrc/tests/ecma/FunctionObjects/CVS/Entries
new file mode 100644
index 00000000..980b784a
--- /dev/null
+++ b/testsrc/tests/ecma/FunctionObjects/CVS/Entries
@@ -0,0 +1,20 @@
+/15.3.1.1-1.js/1.6/Sat May 26 00:19:23 2007//
+/15.3.1.1-2.js/1.6/Sat May 26 00:19:23 2007//
+/15.3.1.1-3.js/1.5/Sat May 26 00:19:23 2007//
+/15.3.2.1-1.js/1.6/Sat May 26 00:19:23 2007//
+/15.3.2.1-2.js/1.6/Sat May 26 00:19:23 2007//
+/15.3.2.1-3.js/1.5/Sat May 26 00:19:23 2007//
+/15.3.3.1-2.js/1.5/Sat May 26 00:19:23 2007//
+/15.3.3.1-3.js/1.5/Sat May 26 00:19:23 2007//
+/15.3.3.1-4.js/1.5/Sat May 26 00:19:23 2007//
+/15.3.3.2.js/1.5/Sat May 26 00:19:23 2007//
+/15.3.4-1.js/1.5/Sat May 26 00:19:23 2007//
+/15.3.4.1.js/1.5/Sat May 26 00:19:23 2007//
+/15.3.4.js/1.5/Sat May 26 00:19:23 2007//
+/15.3.5-1.js/1.5/Sat May 26 00:19:23 2007//
+/15.3.5-2.js/1.5/Sat May 26 00:19:23 2007//
+/15.3.5.1.js/1.6/Sat May 26 00:19:23 2007//
+/15.3.5.3.js/1.5/Sat May 26 00:19:23 2007//
+/browser.js/1.1/Fri Mar 18 19:09:22 2005//
+/shell.js/1.2/Sat May 26 00:19:23 2007//
+D
diff --git a/testsrc/tests/ecma/FunctionObjects/CVS/Repository b/testsrc/tests/ecma/FunctionObjects/CVS/Repository
new file mode 100644
index 00000000..13bd515a
--- /dev/null
+++ b/testsrc/tests/ecma/FunctionObjects/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma/FunctionObjects
diff --git a/testsrc/tests/ecma/FunctionObjects/CVS/Root b/testsrc/tests/ecma/FunctionObjects/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma/FunctionObjects/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma/GlobalObject/CVS/Entries b/testsrc/tests/ecma/GlobalObject/CVS/Entries
new file mode 100644
index 00000000..4f95a36b
--- /dev/null
+++ b/testsrc/tests/ecma/GlobalObject/CVS/Entries
@@ -0,0 +1,18 @@
+/15.1-1-n.js/1.5/Sat May 26 00:19:24 2007//
+/15.1-2-n.js/1.5/Sat May 26 00:19:24 2007//
+/15.1.1.1.js/1.5/Sat May 26 00:19:24 2007//
+/15.1.1.2.js/1.5/Sat May 26 00:19:24 2007//
+/15.1.2.1-2.js/1.6/Sat May 26 00:19:24 2007//
+/15.1.2.2-1.js/1.8/Sat May 26 00:19:24 2007//
+/15.1.2.2-2.js/1.7/Sat May 26 00:19:24 2007//
+/15.1.2.3-1.js/1.8/Sat May 26 00:19:24 2007//
+/15.1.2.3-2.js/1.6/Sat May 26 00:19:24 2007//
+/15.1.2.4.js/1.6/Sat May 26 00:19:24 2007//
+/15.1.2.5-1.js/1.6/Sat May 26 00:19:24 2007//
+/15.1.2.5-2.js/1.5/Sat May 26 00:19:24 2007//
+/15.1.2.5-3.js/1.5/Sat May 26 00:19:24 2007//
+/15.1.2.6.js/1.8/Sat May 26 00:19:24 2007//
+/15.1.2.7.js/1.8/Sat May 26 00:19:24 2007//
+/browser.js/1.1/Fri Mar 18 19:09:23 2005//
+/shell.js/1.2/Sat May 26 00:19:24 2007//
+D
diff --git a/testsrc/tests/ecma/GlobalObject/CVS/Repository b/testsrc/tests/ecma/GlobalObject/CVS/Repository
new file mode 100644
index 00000000..85d38a16
--- /dev/null
+++ b/testsrc/tests/ecma/GlobalObject/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma/GlobalObject
diff --git a/testsrc/tests/ecma/GlobalObject/CVS/Root b/testsrc/tests/ecma/GlobalObject/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma/GlobalObject/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma/LexicalConventions/CVS/Entries b/testsrc/tests/ecma/LexicalConventions/CVS/Entries
new file mode 100644
index 00000000..a40192ad
--- /dev/null
+++ b/testsrc/tests/ecma/LexicalConventions/CVS/Entries
@@ -0,0 +1,78 @@
+/7.1-1.js/1.5/Sat May 26 00:19:24 2007//
+/7.1-2.js/1.5/Sat May 26 00:19:24 2007//
+/7.1-3.js/1.5/Sat May 26 00:19:24 2007//
+/7.2-1.js/1.5/Sat May 26 00:19:24 2007//
+/7.2-2-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.2-3-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.2-4-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.2-5-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.2-6.js/1.5/Sat May 26 00:19:24 2007//
+/7.3-1.js/1.5/Sat May 26 00:19:24 2007//
+/7.3-10.js/1.5/Sat May 26 00:19:24 2007//
+/7.3-11.js/1.5/Sat May 26 00:19:24 2007//
+/7.3-12.js/1.5/Sat May 26 00:19:24 2007//
+/7.3-13-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.3-2.js/1.5/Sat May 26 00:19:24 2007//
+/7.3-3.js/1.5/Sat May 26 00:19:24 2007//
+/7.3-4.js/1.5/Sat May 26 00:19:24 2007//
+/7.3-5.js/1.5/Sat May 26 00:19:24 2007//
+/7.3-6.js/1.5/Sat May 26 00:19:24 2007//
+/7.3-7.js/1.5/Sat May 26 00:19:24 2007//
+/7.3-8.js/1.5/Sat May 26 00:19:24 2007//
+/7.3-9.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.1-1-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.1-2-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.1-3-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.2-1-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.2-10-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.2-11-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.2-12-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.2-13-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.2-14-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.2-15-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.2-16-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.2-2-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.2-3-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.2-4-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.2-5-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.2-6-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.2-7-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.2-8-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.2-9-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.3-1-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.3-10-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.3-11-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.3-12-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.3-13-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.3-14-n.js/1.10/Thu Apr 10 21:24:08 2008//
+/7.4.3-15-n.js/1.9/Sat May 26 00:19:24 2007//
+/7.4.3-16-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.3-2-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.3-3-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.3-4-n.js/1.10/Thu Apr 10 21:24:08 2008//
+/7.4.3-5-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.3-6-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.3-7-n.js/1.10/Thu Apr 10 21:24:08 2008//
+/7.4.3-8-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.4.3-9-n.js/1.11/Thu Apr 10 21:24:08 2008//
+/7.5-1.js/1.5/Sat May 26 00:19:24 2007//
+/7.5-10-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.5-2-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.5-3-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.5-4-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.5-5-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.5-6.js/1.5/Sat May 26 00:19:24 2007//
+/7.5-7.js/1.5/Sat May 26 00:19:24 2007//
+/7.5-8-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.5-9-n.js/1.5/Sat May 26 00:19:24 2007//
+/7.6.js/1.5/Sat May 26 00:19:24 2007//
+/7.7.1.js/1.5/Sat May 26 00:19:24 2007//
+/7.7.2.js/1.5/Sat May 26 00:19:24 2007//
+/7.7.3-1.js/1.6/Sat May 26 00:19:24 2007//
+/7.7.3-2.js/1.6/Sat May 26 00:19:24 2007//
+/7.7.3.js/1.5/Sat May 26 00:19:24 2007//
+/7.7.4.js/1.5/Sat May 26 00:19:24 2007//
+/7.8.2-n.js/1.6/Sat May 26 00:19:24 2007//
+/browser.js/1.1/Fri Mar 18 19:09:23 2005//
+/shell.js/1.2/Sat May 26 00:19:24 2007//
+D
diff --git a/testsrc/tests/ecma/LexicalConventions/CVS/Repository b/testsrc/tests/ecma/LexicalConventions/CVS/Repository
new file mode 100644
index 00000000..118d3c15
--- /dev/null
+++ b/testsrc/tests/ecma/LexicalConventions/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma/LexicalConventions
diff --git a/testsrc/tests/ecma/LexicalConventions/CVS/Root b/testsrc/tests/ecma/LexicalConventions/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma/LexicalConventions/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma/Math/CVS/Entries b/testsrc/tests/ecma/Math/CVS/Entries
new file mode 100644
index 00000000..5f429a01
--- /dev/null
+++ b/testsrc/tests/ecma/Math/CVS/Entries
@@ -0,0 +1,41 @@
+/15.8-2-n.js/1.5/Sat May 26 00:19:24 2007//
+/15.8-3-n.js/1.5/Sat May 26 00:19:24 2007//
+/15.8.1.1-1.js/1.5/Sat May 26 00:19:24 2007//
+/15.8.1.1-2.js/1.5/Sat May 26 00:19:24 2007//
+/15.8.1.2-1.js/1.5/Sat May 26 00:19:24 2007//
+/15.8.1.2-2.js/1.5/Sat May 26 00:19:24 2007//
+/15.8.1.3-1.js/1.5/Sat May 26 00:19:24 2007//
+/15.8.1.3-2.js/1.5/Sat May 26 00:19:24 2007//
+/15.8.1.4-1.js/1.5/Sat May 26 00:19:24 2007//
+/15.8.1.4-2.js/1.5/Sat May 26 00:19:24 2007//
+/15.8.1.5-1.js/1.5/Sat May 26 00:19:24 2007//
+/15.8.1.5-2.js/1.5/Sat May 26 00:19:24 2007//
+/15.8.1.6-1.js/1.5/Sat May 26 00:19:24 2007//
+/15.8.1.6-2.js/1.5/Sat May 26 00:19:24 2007//
+/15.8.1.7-1.js/1.5/Sat May 26 00:19:24 2007//
+/15.8.1.7-2.js/1.5/Sat May 26 00:19:24 2007//
+/15.8.1.8-1.js/1.5/Sat May 26 00:19:24 2007//
+/15.8.1.8-2.js/1.5/Sat May 26 00:19:24 2007//
+/15.8.1.8-3.js/1.5/Sat May 26 00:19:24 2007//
+/15.8.1.js/1.5/Sat May 26 00:19:24 2007//
+/15.8.2.1.js/1.6/Sat May 26 00:19:24 2007//
+/15.8.2.10.js/1.6/Sat May 26 00:19:24 2007//
+/15.8.2.11.js/1.7/Sat May 26 00:19:24 2007//
+/15.8.2.12.js/1.7/Sat May 26 00:19:24 2007//
+/15.8.2.13.js/1.6/Sat May 26 00:19:24 2007//
+/15.8.2.14.js/1.5/Sat May 26 00:19:24 2007//
+/15.8.2.15.js/1.6/Sat May 26 00:19:24 2007//
+/15.8.2.16.js/1.5/Sat May 26 00:19:24 2007//
+/15.8.2.17.js/1.5/Sat May 26 00:19:24 2007//
+/15.8.2.18.js/1.5/Sat May 26 00:19:24 2007//
+/15.8.2.2.js/1.6/Thu May 1 01:17:05 2008//
+/15.8.2.3.js/1.5/Sat May 26 00:19:24 2007//
+/15.8.2.4.js/1.6/Sat May 26 00:19:24 2007//
+/15.8.2.5.js/1.6/Sat May 26 00:19:24 2007//
+/15.8.2.6.js/1.5/Sat May 26 00:19:24 2007//
+/15.8.2.7.js/1.5/Sat May 26 00:19:24 2007//
+/15.8.2.8.js/1.5/Sat May 26 00:19:24 2007//
+/15.8.2.9.js/1.5/Sat May 26 00:19:24 2007//
+/browser.js/1.1/Fri Mar 18 19:09:24 2005//
+/shell.js/1.2/Sat May 26 00:19:24 2007//
+D
diff --git a/testsrc/tests/ecma/Math/CVS/Repository b/testsrc/tests/ecma/Math/CVS/Repository
new file mode 100644
index 00000000..b920ca3e
--- /dev/null
+++ b/testsrc/tests/ecma/Math/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma/Math
diff --git a/testsrc/tests/ecma/Math/CVS/Root b/testsrc/tests/ecma/Math/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma/Math/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma/NativeObjects/CVS/Entries b/testsrc/tests/ecma/NativeObjects/CVS/Entries
new file mode 100644
index 00000000..86d26d55
--- /dev/null
+++ b/testsrc/tests/ecma/NativeObjects/CVS/Entries
@@ -0,0 +1,3 @@
+/browser.js/1.1/Fri Mar 18 19:09:24 2005//
+/shell.js/1.2/Sat May 26 00:19:25 2007//
+D
diff --git a/testsrc/tests/ecma/NativeObjects/CVS/Repository b/testsrc/tests/ecma/NativeObjects/CVS/Repository
new file mode 100644
index 00000000..17bdbbc3
--- /dev/null
+++ b/testsrc/tests/ecma/NativeObjects/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma/NativeObjects
diff --git a/testsrc/tests/ecma/NativeObjects/CVS/Root b/testsrc/tests/ecma/NativeObjects/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma/NativeObjects/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma/Number/CVS/Entries b/testsrc/tests/ecma/Number/CVS/Entries
new file mode 100644
index 00000000..416d011a
--- /dev/null
+++ b/testsrc/tests/ecma/Number/CVS/Entries
@@ -0,0 +1,38 @@
+/15.7.1.js/1.6/Sat May 26 00:19:25 2007//
+/15.7.2.js/1.6/Sat May 26 00:19:25 2007//
+/15.7.3.1-1.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.3.1-2.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.3.1-3.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.3.2-1.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.3.2-2.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.3.2-3.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.3.2-4.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.3.3-1.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.3.3-2.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.3.3-3.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.3.3-4.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.3.4-1.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.3.4-2.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.3.4-3.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.3.4-4.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.3.5-1.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.3.5-2.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.3.5-3.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.3.5-4.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.3.6-1.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.3.6-2.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.3.6-3.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.3.6-4.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.3.js/1.7/Sat May 26 00:19:25 2007//
+/15.7.4-1.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.4.1.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.4.2-1.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.4.2-2-n.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.4.2-3-n.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.4.2-4.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.4.3-1.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.4.3-2.js/1.5/Sat May 26 00:19:25 2007//
+/15.7.4.3-3-n.js/1.5/Sat May 26 00:19:25 2007//
+/browser.js/1.1/Fri Mar 18 19:09:25 2005//
+/shell.js/1.2/Sat May 26 00:19:25 2007//
+D
diff --git a/testsrc/tests/ecma/Number/CVS/Repository b/testsrc/tests/ecma/Number/CVS/Repository
new file mode 100644
index 00000000..842382f7
--- /dev/null
+++ b/testsrc/tests/ecma/Number/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma/Number
diff --git a/testsrc/tests/ecma/Number/CVS/Root b/testsrc/tests/ecma/Number/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma/Number/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma/ObjectObjects/CVS/Entries b/testsrc/tests/ecma/ObjectObjects/CVS/Entries
new file mode 100644
index 00000000..45eba4ce
--- /dev/null
+++ b/testsrc/tests/ecma/ObjectObjects/CVS/Entries
@@ -0,0 +1,16 @@
+/15.2.1.1.js/1.6/Sat May 26 00:19:25 2007//
+/15.2.1.2.js/1.5/Sat May 26 00:19:25 2007//
+/15.2.2.1.js/1.5/Sat May 26 00:19:25 2007//
+/15.2.2.2.js/1.5/Sat May 26 00:19:25 2007//
+/15.2.3-1.js/1.6/Sat May 26 00:19:25 2007//
+/15.2.3.1-1.js/1.5/Sat May 26 00:19:25 2007//
+/15.2.3.1-2.js/1.5/Sat May 26 00:19:25 2007//
+/15.2.3.1-3.js/1.5/Sat May 26 00:19:25 2007//
+/15.2.3.1-4.js/1.5/Sat May 26 00:19:25 2007//
+/15.2.3.js/1.5/Sat May 26 00:19:25 2007//
+/15.2.4.1.js/1.5/Sat May 26 00:19:25 2007//
+/15.2.4.2.js/1.6/Sat May 26 00:19:25 2007//
+/15.2.4.3.js/1.5/Sat May 26 00:19:25 2007//
+/browser.js/1.1/Fri Mar 18 19:09:25 2005//
+/shell.js/1.2/Sat May 26 00:19:25 2007//
+D
diff --git a/testsrc/tests/ecma/ObjectObjects/CVS/Repository b/testsrc/tests/ecma/ObjectObjects/CVS/Repository
new file mode 100644
index 00000000..a94ad3c1
--- /dev/null
+++ b/testsrc/tests/ecma/ObjectObjects/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma/ObjectObjects
diff --git a/testsrc/tests/ecma/ObjectObjects/CVS/Root b/testsrc/tests/ecma/ObjectObjects/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma/ObjectObjects/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma/SourceText/CVS/Entries b/testsrc/tests/ecma/SourceText/CVS/Entries
new file mode 100644
index 00000000..dbd4fac1
--- /dev/null
+++ b/testsrc/tests/ecma/SourceText/CVS/Entries
@@ -0,0 +1,5 @@
+/6-1.js/1.5/Sat May 26 00:19:25 2007//
+/6-2.js/1.5/Sat May 26 00:19:25 2007//
+/browser.js/1.1/Fri Mar 18 19:09:26 2005//
+/shell.js/1.2/Sat May 26 00:19:25 2007//
+D
diff --git a/testsrc/tests/ecma/SourceText/CVS/Repository b/testsrc/tests/ecma/SourceText/CVS/Repository
new file mode 100644
index 00000000..495b1c9d
--- /dev/null
+++ b/testsrc/tests/ecma/SourceText/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma/SourceText
diff --git a/testsrc/tests/ecma/SourceText/CVS/Root b/testsrc/tests/ecma/SourceText/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma/SourceText/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma/Statements/CVS/Entries b/testsrc/tests/ecma/Statements/CVS/Entries
new file mode 100644
index 00000000..d7c49c60
--- /dev/null
+++ b/testsrc/tests/ecma/Statements/CVS/Entries
@@ -0,0 +1,34 @@
+/12.10-1.js/1.5/Sat May 26 00:19:25 2007//
+/12.10.js/1.5/Sat May 26 00:19:25 2007//
+/12.2-1.js/1.5/Sat May 26 00:19:26 2007//
+/12.5-1.js/1.5/Sat May 26 00:19:26 2007//
+/12.5-2.js/1.5/Sat May 26 00:19:26 2007//
+/12.6.1-1.js/1.5/Sat May 26 00:19:26 2007//
+/12.6.2-1.js/1.5/Sat May 26 00:19:26 2007//
+/12.6.2-2.js/1.5/Sat May 26 00:19:26 2007//
+/12.6.2-3.js/1.5/Sat May 26 00:19:26 2007//
+/12.6.2-4.js/1.5/Sat May 26 00:19:26 2007//
+/12.6.2-5.js/1.5/Sat May 26 00:19:26 2007//
+/12.6.2-6.js/1.5/Sat May 26 00:19:26 2007//
+/12.6.2-7.js/1.5/Sat May 26 00:19:26 2007//
+/12.6.2-8.js/1.5/Sat May 26 00:19:26 2007//
+/12.6.2-9-n.js/1.5/Sat May 26 00:19:26 2007//
+/12.6.3-1.js/1.5/Sat May 26 00:19:26 2007//
+/12.6.3-10.js/1.5/Sat May 26 00:19:26 2007//
+/12.6.3-11.js/1.5/Sat May 26 00:19:26 2007//
+/12.6.3-12.js/1.7/Sat May 26 00:19:26 2007//
+/12.6.3-19.js/1.5/Sat May 26 00:19:26 2007//
+/12.6.3-2.js/1.5/Sat May 26 00:19:26 2007//
+/12.6.3-3.js/1.5/Sat May 26 00:19:26 2007//
+/12.6.3-4.js/1.5/Sat May 26 00:19:26 2007//
+/12.6.3-5-n.js/1.5/Sat May 26 00:19:26 2007//
+/12.6.3-6-n.js/1.5/Sat May 26 00:19:26 2007//
+/12.6.3-7-n.js/1.5/Sat May 26 00:19:26 2007//
+/12.6.3-8-n.js/1.5/Sat May 26 00:19:26 2007//
+/12.6.3-9-n.js/1.5/Sat May 26 00:19:26 2007//
+/12.7-1-n.js/1.5/Sat May 26 00:19:26 2007//
+/12.8-1-n.js/1.5/Sat May 26 00:19:26 2007//
+/12.9-1-n.js/1.5/Sat May 26 00:19:26 2007//
+/browser.js/1.1/Fri Mar 18 19:09:26 2005//
+/shell.js/1.2/Sat May 26 00:19:26 2007//
+D
diff --git a/testsrc/tests/ecma/Statements/CVS/Repository b/testsrc/tests/ecma/Statements/CVS/Repository
new file mode 100644
index 00000000..4bcf1adf
--- /dev/null
+++ b/testsrc/tests/ecma/Statements/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma/Statements
diff --git a/testsrc/tests/ecma/Statements/CVS/Root b/testsrc/tests/ecma/Statements/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma/Statements/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma/String/CVS/Entries b/testsrc/tests/ecma/String/CVS/Entries
new file mode 100644
index 00000000..a5117734
--- /dev/null
+++ b/testsrc/tests/ecma/String/CVS/Entries
@@ -0,0 +1,52 @@
+/15.5.1.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.2.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.3.1-1.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.3.1-2.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.3.1-3.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.3.1-4.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.3.2-1.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.3.2-2.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.3.2-3.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.3.js/1.6/Sat May 26 00:19:26 2007//
+/15.5.4.1.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.4.10-1.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.4.11-1.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.4.11-2.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.4.11-3.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.4.11-4.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.4.11-5.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.4.11-6.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.4.12-1.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.4.12-2.js/1.8/Sat May 26 00:19:26 2007//
+/15.5.4.12-3.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.4.12-4.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.4.12-5.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.4.2-1.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.4.2-2-n.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.4.2-3.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.4.2.js/1.6/Sat May 26 00:19:26 2007//
+/15.5.4.3-1.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.4.3-2.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.4.3-3-n.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.4.4-1.js/1.6/Sat May 26 00:19:26 2007//
+/15.5.4.4-2.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.4.4-3.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.4.4-4.js/1.6/Sat May 26 00:19:26 2007//
+/15.5.4.5-1.js/1.8/Tue May 19 21:46:39 2009//
+/15.5.4.5-2.js/1.8/Tue May 19 21:46:39 2009//
+/15.5.4.5-3.js/1.8/Tue May 19 21:46:39 2009//
+/15.5.4.5-4.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.4.5-5.js/1.8/Tue May 19 21:46:39 2009//
+/15.5.4.6-1.js/1.6/Sat May 26 00:19:26 2007//
+/15.5.4.6-2.js/1.11/Sat May 26 00:19:26 2007//
+/15.5.4.7-1.js/1.6/Sat May 26 00:19:26 2007//
+/15.5.4.7-2.js/1.6/Sat May 26 00:19:26 2007//
+/15.5.4.8-1.js/1.6/Sat May 26 00:19:26 2007//
+/15.5.4.8-2.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.4.8-3.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.4.9-1.js/1.5/Sat May 26 00:19:26 2007//
+/15.5.4.js/1.6/Sat May 26 00:19:26 2007//
+/15.5.5.1.js/1.5/Sat May 26 00:19:26 2007//
+/browser.js/1.1/Fri Mar 18 19:09:27 2005//
+/shell.js/1.2/Sat May 26 00:19:26 2007//
+D
diff --git a/testsrc/tests/ecma/String/CVS/Repository b/testsrc/tests/ecma/String/CVS/Repository
new file mode 100644
index 00000000..388bc70b
--- /dev/null
+++ b/testsrc/tests/ecma/String/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma/String
diff --git a/testsrc/tests/ecma/String/CVS/Root b/testsrc/tests/ecma/String/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma/String/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma/TypeConversion/CVS/Entries b/testsrc/tests/ecma/TypeConversion/CVS/Entries
new file mode 100644
index 00000000..894a66dd
--- /dev/null
+++ b/testsrc/tests/ecma/TypeConversion/CVS/Entries
@@ -0,0 +1,16 @@
+/9.2.js/1.6/Sat May 26 00:19:26 2007//
+/9.3-1.js/1.5/Sat May 26 00:19:26 2007//
+/9.3.1-1.js/1.6/Sat May 26 00:19:26 2007//
+/9.3.1-2.js/1.5/Sat May 26 00:19:26 2007//
+/9.3.1-3.js/1.9/Thu Nov 27 11:56:20 2008//
+/9.3.js/1.5/Sat May 26 00:19:26 2007//
+/9.4-1.js/1.5/Sat May 26 00:19:26 2007//
+/9.4-2.js/1.5/Sat May 26 00:19:26 2007//
+/9.5-2.js/1.7/Sat May 26 00:19:26 2007//
+/9.6.js/1.5/Sat May 26 00:19:26 2007//
+/9.7.js/1.5/Sat May 26 00:19:26 2007//
+/9.8.1.js/1.5/Sat May 26 00:19:26 2007//
+/9.9-1.js/1.6/Sat May 26 00:19:26 2007//
+/browser.js/1.1/Fri Mar 18 19:09:27 2005//
+/shell.js/1.2/Sat May 26 00:19:26 2007//
+D
diff --git a/testsrc/tests/ecma/TypeConversion/CVS/Repository b/testsrc/tests/ecma/TypeConversion/CVS/Repository
new file mode 100644
index 00000000..184bcbe6
--- /dev/null
+++ b/testsrc/tests/ecma/TypeConversion/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma/TypeConversion
diff --git a/testsrc/tests/ecma/TypeConversion/CVS/Root b/testsrc/tests/ecma/TypeConversion/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma/TypeConversion/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma/Types/CVS/Entries b/testsrc/tests/ecma/Types/CVS/Entries
new file mode 100644
index 00000000..76a913a8
--- /dev/null
+++ b/testsrc/tests/ecma/Types/CVS/Entries
@@ -0,0 +1,6 @@
+/8.1.js/1.5/Sat May 26 00:19:26 2007//
+/8.4.js/1.5/Sat May 26 00:19:26 2007//
+/8.6.2.1-1.js/1.6/Sat May 26 00:19:26 2007//
+/browser.js/1.1/Fri Mar 18 19:09:28 2005//
+/shell.js/1.2/Sat May 26 00:19:26 2007//
+D
diff --git a/testsrc/tests/ecma/Types/CVS/Repository b/testsrc/tests/ecma/Types/CVS/Repository
new file mode 100644
index 00000000..2666717e
--- /dev/null
+++ b/testsrc/tests/ecma/Types/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma/Types
diff --git a/testsrc/tests/ecma/Types/CVS/Root b/testsrc/tests/ecma/Types/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma/Types/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma/extensions/CVS/Entries b/testsrc/tests/ecma/extensions/CVS/Entries
new file mode 100644
index 00000000..7b5e1834
--- /dev/null
+++ b/testsrc/tests/ecma/extensions/CVS/Entries
@@ -0,0 +1,36 @@
+/10.1.4-9.js/1.2/Sat May 26 00:19:26 2007//
+/10.1.6.js/1.2/Sat May 26 00:19:26 2007//
+/10.1.8-1.js/1.2/Sat May 26 00:19:26 2007//
+/11.6.1-1.js/1.2/Sat May 26 00:19:26 2007//
+/11.6.1-2.js/1.2/Sat May 26 00:19:26 2007//
+/11.6.1-3.js/1.2/Sat May 26 00:19:26 2007//
+/11.6.2-1.js/1.2/Sat May 26 00:19:26 2007//
+/15-1.js/1.2/Sat May 26 00:19:26 2007//
+/15-2.js/1.2/Sat May 26 00:19:26 2007//
+/15.1.2.1-1.js/1.2/Sat May 26 00:19:26 2007//
+/15.2.1.1.js/1.2/Sat May 26 00:19:26 2007//
+/15.2.3-1.js/1.2/Sat May 26 00:19:26 2007//
+/15.2.4.js/1.2/Sat May 26 00:19:26 2007//
+/15.3.1.1-1.js/1.2/Sat May 26 00:19:26 2007//
+/15.3.1.1-2.js/1.2/Sat May 26 00:19:26 2007//
+/15.3.2.1-1.js/1.2/Sat May 26 00:19:26 2007//
+/15.3.2.1-2.js/1.2/Sat May 26 00:19:26 2007//
+/15.3.3.1-1.js/1.2/Sat May 26 00:19:26 2007//
+/15.4.3.js/1.2/Sat May 26 00:19:26 2007//
+/15.5.3.js/1.2/Sat May 26 00:19:26 2007//
+/15.5.4.2.js/1.2/Sat May 26 00:19:26 2007//
+/15.5.4.4-4.js/1.2/Sat May 26 00:19:26 2007//
+/15.5.4.5-6.js/1.5/Tue May 19 21:46:39 2009//
+/15.5.4.7-3.js/1.2/Sat May 26 00:19:26 2007//
+/15.6.3.1-5.js/1.2/Sat May 26 00:19:26 2007//
+/15.6.3.js/1.2/Sat May 26 00:19:26 2007//
+/15.6.4-2.js/1.2/Sat May 26 00:19:26 2007//
+/15.7.3.js/1.2/Sat May 26 00:19:26 2007//
+/15.7.4.js/1.2/Sat May 26 00:19:26 2007//
+/15.8-1.js/1.2/Sat May 26 00:19:26 2007//
+/15.9.5.js/1.2/Sat May 26 00:19:26 2007//
+/8.6.2.1-1.js/1.2/Sat May 26 00:19:26 2007//
+/9.9-1.js/1.2/Sat May 26 00:19:26 2007//
+/browser.js/1.1/Fri Feb 9 00:00:51 2007//
+/shell.js/1.2/Sat May 26 00:19:26 2007//
+D
diff --git a/testsrc/tests/ecma/extensions/CVS/Repository b/testsrc/tests/ecma/extensions/CVS/Repository
new file mode 100644
index 00000000..69a198ae
--- /dev/null
+++ b/testsrc/tests/ecma/extensions/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma/extensions
diff --git a/testsrc/tests/ecma/extensions/CVS/Root b/testsrc/tests/ecma/extensions/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma/extensions/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_2/CVS/Entries b/testsrc/tests/ecma_2/CVS/Entries
new file mode 100644
index 00000000..48d28e2a
--- /dev/null
+++ b/testsrc/tests/ecma_2/CVS/Entries
@@ -0,0 +1,6 @@
+/README/1.1/Fri Mar 18 19:09:28 2005//
+/browser.js/1.20/Sat May 26 00:19:27 2007//
+/jsref.js/1.3/Mon Oct 30 16:48:33 2006//
+/shell.js/1.20/Sat May 26 00:19:27 2007//
+/template.js/1.8/Wed Aug 13 12:10:55 2008//
+D
diff --git a/testsrc/tests/ecma_2/CVS/Entries.Log b/testsrc/tests/ecma_2/CVS/Entries.Log
new file mode 100644
index 00000000..1028ac47
--- /dev/null
+++ b/testsrc/tests/ecma_2/CVS/Entries.Log
@@ -0,0 +1,11 @@
+A D/Exceptions////
+A D/Expressions////
+A D/FunctionObjects////
+A D/LexicalConventions////
+A D/RegExp////
+A D/Statements////
+A D/String////
+A D/Types////
+A D/With////
+A D/extensions////
+A D/instanceof////
diff --git a/testsrc/tests/ecma_2/CVS/Repository b/testsrc/tests/ecma_2/CVS/Repository
new file mode 100644
index 00000000..081f139c
--- /dev/null
+++ b/testsrc/tests/ecma_2/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_2
diff --git a/testsrc/tests/ecma_2/CVS/Root b/testsrc/tests/ecma_2/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_2/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_2/Exceptions/CVS/Entries b/testsrc/tests/ecma_2/Exceptions/CVS/Entries
new file mode 100644
index 00000000..c7337036
--- /dev/null
+++ b/testsrc/tests/ecma_2/Exceptions/CVS/Entries
@@ -0,0 +1,105 @@
+/boolean-001.js/1.3/Sat May 26 00:19:27 2007//
+/boolean-002.js/1.3/Sat May 26 00:19:27 2007//
+/browser.js/1.1/Fri Mar 18 19:09:28 2005//
+/date-001.js/1.3/Sat May 26 00:19:27 2007//
+/date-002.js/1.3/Sat May 26 00:19:27 2007//
+/date-003.js/1.3/Sat May 26 00:19:27 2007//
+/date-004.js/1.3/Sat May 26 00:19:27 2007//
+/exception-001.js/1.3/Sat May 26 00:19:27 2007//
+/exception-002.js/1.3/Sat May 26 00:19:27 2007//
+/exception-003.js/1.3/Sat May 26 00:19:27 2007//
+/exception-004.js/1.3/Sat May 26 00:19:27 2007//
+/exception-005.js/1.3/Sat May 26 00:19:27 2007//
+/exception-006.js/1.4/Sat May 26 00:19:27 2007//
+/exception-007.js/1.4/Sat May 26 00:19:27 2007//
+/exception-008.js/1.3/Sat May 26 00:19:27 2007//
+/exception-009.js/1.3/Sat May 26 00:19:27 2007//
+/exception-010-n.js/1.6/Sat May 26 00:19:27 2007//
+/exception-011-n.js/1.6/Sat May 26 00:19:27 2007//
+/expression-001.js/1.3/Sat May 26 00:19:27 2007//
+/expression-002.js/1.3/Sat May 26 00:19:27 2007//
+/expression-003.js/1.3/Sat May 26 00:19:27 2007//
+/expression-004.js/1.3/Sat May 26 00:19:27 2007//
+/expression-005.js/1.3/Sat May 26 00:19:27 2007//
+/expression-006.js/1.3/Sat May 26 00:19:27 2007//
+/expression-007.js/1.3/Sat May 26 00:19:27 2007//
+/expression-008.js/1.3/Sat May 26 00:19:27 2007//
+/expression-009.js/1.3/Sat May 26 00:19:27 2007//
+/expression-010.js/1.3/Sat May 26 00:19:27 2007//
+/expression-011.js/1.3/Sat May 26 00:19:27 2007//
+/expression-012.js/1.3/Sat May 26 00:19:27 2007//
+/expression-013.js/1.3/Sat May 26 00:19:27 2007//
+/expression-014.js/1.3/Sat May 26 00:19:27 2007//
+/expression-015.js/1.3/Sat May 26 00:19:27 2007//
+/expression-016.js/1.3/Sat May 26 00:19:27 2007//
+/expression-017.js/1.3/Sat May 26 00:19:27 2007//
+/expression-019.js/1.3/Sat May 26 00:19:27 2007//
+/function-001.js/1.6/Wed May 14 23:18:47 2008//
+/global-001.js/1.3/Sat May 26 00:19:27 2007//
+/global-002.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-001.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-002.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-003.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-004.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-005.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-006.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-007.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-008.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-009.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-010.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-011.js/1.7/Thu Apr 10 21:24:09 2008//
+/lexical-012.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-013.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-014.js/1.7/Thu Apr 10 21:24:09 2008//
+/lexical-015.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-016.js/1.7/Thu Apr 10 21:24:09 2008//
+/lexical-017.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-018.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-019.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-020.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-021.js/1.7/Thu Apr 10 21:24:09 2008//
+/lexical-022.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-023.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-024.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-025.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-026.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-027.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-028.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-029.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-030.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-031.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-032.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-033.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-034.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-035.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-036.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-037.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-038.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-039.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-040.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-041.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-042.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-047.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-048.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-049.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-050.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-051.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-052.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-053.js/1.3/Sat May 26 00:19:27 2007//
+/lexical-054.js/1.3/Sat May 26 00:19:27 2007//
+/number-001.js/1.4/Sat May 26 00:19:27 2007//
+/number-002.js/1.4/Sat May 26 00:19:27 2007//
+/number-003.js/1.4/Sat May 26 00:19:27 2007//
+/shell.js/1.2/Sat May 26 00:19:27 2007//
+/statement-001.js/1.3/Sat May 26 00:19:27 2007//
+/statement-002.js/1.4/Sat May 26 00:19:27 2007//
+/statement-003.js/1.3/Sat May 26 00:19:27 2007//
+/statement-004.js/1.3/Sat May 26 00:19:27 2007//
+/statement-005.js/1.3/Sat May 26 00:19:27 2007//
+/statement-006.js/1.3/Sat May 26 00:19:27 2007//
+/statement-007.js/1.3/Sat May 26 00:19:27 2007//
+/statement-008.js/1.3/Sat May 26 00:19:27 2007//
+/statement-009.js/1.4/Sat May 26 00:19:27 2007//
+/string-001.js/1.3/Sat May 26 00:19:27 2007//
+/string-002.js/1.3/Sat May 26 00:19:27 2007//
+D
diff --git a/testsrc/tests/ecma_2/Exceptions/CVS/Repository b/testsrc/tests/ecma_2/Exceptions/CVS/Repository
new file mode 100644
index 00000000..ff716960
--- /dev/null
+++ b/testsrc/tests/ecma_2/Exceptions/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_2/Exceptions
diff --git a/testsrc/tests/ecma_2/Exceptions/CVS/Root b/testsrc/tests/ecma_2/Exceptions/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_2/Exceptions/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_2/Expressions/CVS/Entries b/testsrc/tests/ecma_2/Expressions/CVS/Entries
new file mode 100644
index 00000000..d6fc7a4d
--- /dev/null
+++ b/testsrc/tests/ecma_2/Expressions/CVS/Entries
@@ -0,0 +1,4 @@
+/StrictEquality-001.js/1.3/Sat May 26 00:19:27 2007//
+/browser.js/1.1/Fri Mar 18 19:09:29 2005//
+/shell.js/1.2/Sat May 26 00:19:27 2007//
+D
diff --git a/testsrc/tests/ecma_2/Expressions/CVS/Repository b/testsrc/tests/ecma_2/Expressions/CVS/Repository
new file mode 100644
index 00000000..e3be4711
--- /dev/null
+++ b/testsrc/tests/ecma_2/Expressions/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_2/Expressions
diff --git a/testsrc/tests/ecma_2/Expressions/CVS/Root b/testsrc/tests/ecma_2/Expressions/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_2/Expressions/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_2/FunctionObjects/CVS/Entries b/testsrc/tests/ecma_2/FunctionObjects/CVS/Entries
new file mode 100644
index 00000000..30e7f168
--- /dev/null
+++ b/testsrc/tests/ecma_2/FunctionObjects/CVS/Entries
@@ -0,0 +1,5 @@
+/apply-001-n.js/1.6/Sat May 26 00:19:27 2007//
+/browser.js/1.1/Fri Mar 18 19:09:29 2005//
+/call-1.js/1.3/Sat May 26 00:19:27 2007//
+/shell.js/1.2/Sat May 26 00:19:27 2007//
+D
diff --git a/testsrc/tests/ecma_2/FunctionObjects/CVS/Repository b/testsrc/tests/ecma_2/FunctionObjects/CVS/Repository
new file mode 100644
index 00000000..7dfe6158
--- /dev/null
+++ b/testsrc/tests/ecma_2/FunctionObjects/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_2/FunctionObjects
diff --git a/testsrc/tests/ecma_2/FunctionObjects/CVS/Root b/testsrc/tests/ecma_2/FunctionObjects/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_2/FunctionObjects/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_2/LexicalConventions/CVS/Entries b/testsrc/tests/ecma_2/LexicalConventions/CVS/Entries
new file mode 100644
index 00000000..4c84172c
--- /dev/null
+++ b/testsrc/tests/ecma_2/LexicalConventions/CVS/Entries
@@ -0,0 +1,6 @@
+/browser.js/1.1/Fri Mar 18 19:09:30 2005//
+/keywords-001.js/1.9/Thu Apr 10 21:24:09 2008//
+/regexp-literals-001.js/1.4/Sat May 26 00:19:28 2007//
+/regexp-literals-002.js/1.4/Sat May 26 00:19:28 2007//
+/shell.js/1.2/Sat May 26 00:19:28 2007//
+D
diff --git a/testsrc/tests/ecma_2/LexicalConventions/CVS/Repository b/testsrc/tests/ecma_2/LexicalConventions/CVS/Repository
new file mode 100644
index 00000000..97bc5706
--- /dev/null
+++ b/testsrc/tests/ecma_2/LexicalConventions/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_2/LexicalConventions
diff --git a/testsrc/tests/ecma_2/LexicalConventions/CVS/Root b/testsrc/tests/ecma_2/LexicalConventions/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_2/LexicalConventions/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_2/RegExp/CVS/Entries b/testsrc/tests/ecma_2/RegExp/CVS/Entries
new file mode 100644
index 00000000..db10e118
--- /dev/null
+++ b/testsrc/tests/ecma_2/RegExp/CVS/Entries
@@ -0,0 +1,17 @@
+/browser.js/1.1/Fri Mar 18 19:09:30 2005//
+/constructor-001.js/1.5/Sat May 26 00:19:28 2007//
+/exec-001.js/1.6/Sat May 26 00:19:28 2007//
+/exec-002.js/1.4/Sat May 26 00:19:28 2007//
+/function-001.js/1.5/Sat May 26 00:19:28 2007//
+/hex-001.js/1.4/Sat May 26 00:19:28 2007//
+/multiline-001.js/1.5/Sat May 26 00:19:28 2007//
+/octal-001.js/1.5/Sat May 26 00:19:28 2007//
+/octal-002.js/1.5/Sat May 26 00:19:28 2007//
+/octal-003.js/1.6/Sat May 26 00:19:28 2007//
+/properties-001.js/1.6/Sat May 26 00:19:28 2007//
+/properties-002.js/1.8/Sat May 26 00:19:28 2007//
+/regexp-enumerate-001.js/1.4/Sat May 26 00:19:28 2007//
+/regress-001.js/1.4/Sat May 26 00:19:28 2007//
+/shell.js/1.2/Sat May 26 00:19:28 2007//
+/unicode-001.js/1.3/Sat May 26 00:19:28 2007//
+D
diff --git a/testsrc/tests/ecma_2/RegExp/CVS/Repository b/testsrc/tests/ecma_2/RegExp/CVS/Repository
new file mode 100644
index 00000000..426ac18e
--- /dev/null
+++ b/testsrc/tests/ecma_2/RegExp/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_2/RegExp
diff --git a/testsrc/tests/ecma_2/RegExp/CVS/Root b/testsrc/tests/ecma_2/RegExp/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_2/RegExp/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_2/Statements/CVS/Entries b/testsrc/tests/ecma_2/Statements/CVS/Entries
new file mode 100644
index 00000000..79c05298
--- /dev/null
+++ b/testsrc/tests/ecma_2/Statements/CVS/Entries
@@ -0,0 +1,33 @@
+/browser.js/1.1/Fri Mar 18 19:09:31 2005//
+/dowhile-001.js/1.3/Sat May 26 00:19:28 2007//
+/dowhile-002.js/1.3/Sat May 26 00:19:28 2007//
+/dowhile-003.js/1.3/Sat May 26 00:19:28 2007//
+/dowhile-004.js/1.3/Sat May 26 00:19:28 2007//
+/dowhile-005.js/1.4/Sat May 26 00:19:28 2007//
+/dowhile-006.js/1.3/Sat May 26 00:19:28 2007//
+/dowhile-007.js/1.3/Sat May 26 00:19:28 2007//
+/forin-001.js/1.3/Sat May 26 00:19:28 2007//
+/forin-002.js/1.3/Sat May 26 00:19:28 2007//
+/if-001.js/1.3/Sat May 26 00:19:28 2007//
+/label-001.js/1.3/Sat May 26 00:19:28 2007//
+/label-002.js/1.4/Sat May 26 00:19:28 2007//
+/shell.js/1.2/Sat May 26 00:19:28 2007//
+/switch-001.js/1.3/Sat May 26 00:19:28 2007//
+/switch-002.js/1.3/Sat May 26 00:19:28 2007//
+/switch-003.js/1.3/Sat May 26 00:19:28 2007//
+/switch-004.js/1.3/Sat May 26 00:19:28 2007//
+/try-001.js/1.3/Sat May 26 00:19:28 2007//
+/try-003.js/1.3/Sat May 26 00:19:28 2007//
+/try-004.js/1.3/Sat May 26 00:19:28 2007//
+/try-005.js/1.3/Sat May 26 00:19:28 2007//
+/try-006.js/1.3/Sat May 26 00:19:28 2007//
+/try-007.js/1.4/Sat May 26 00:19:28 2007//
+/try-008.js/1.3/Sat May 26 00:19:28 2007//
+/try-009.js/1.3/Sat May 26 00:19:28 2007//
+/try-010.js/1.3/Sat May 26 00:19:28 2007//
+/try-012.js/1.3/Sat May 26 00:19:28 2007//
+/while-001.js/1.3/Sat May 26 00:19:28 2007//
+/while-002.js/1.3/Sat May 26 00:19:28 2007//
+/while-003.js/1.3/Sat May 26 00:19:28 2007//
+/while-004.js/1.4/Sat May 26 00:19:28 2007//
+D
diff --git a/testsrc/tests/ecma_2/Statements/CVS/Repository b/testsrc/tests/ecma_2/Statements/CVS/Repository
new file mode 100644
index 00000000..ad23cd46
--- /dev/null
+++ b/testsrc/tests/ecma_2/Statements/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_2/Statements
diff --git a/testsrc/tests/ecma_2/Statements/CVS/Root b/testsrc/tests/ecma_2/Statements/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_2/Statements/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_2/String/CVS/Entries b/testsrc/tests/ecma_2/String/CVS/Entries
new file mode 100644
index 00000000..103ac54b
--- /dev/null
+++ b/testsrc/tests/ecma_2/String/CVS/Entries
@@ -0,0 +1,11 @@
+/browser.js/1.1/Fri Mar 18 19:09:31 2005//
+/match-001.js/1.3/Sat May 26 00:19:28 2007//
+/match-002.js/1.6/Sat May 26 00:19:28 2007//
+/match-003.js/1.3/Sat May 26 00:19:28 2007//
+/match-004.js/1.4/Sat May 26 00:19:28 2007//
+/replace-001.js/1.5/Sat May 26 00:19:28 2007//
+/shell.js/1.2/Sat May 26 00:19:28 2007//
+/split-001.js/1.3/Sat May 26 00:19:28 2007//
+/split-002.js/1.4/Sat May 26 00:19:28 2007//
+/split-003.js/1.4/Sat May 26 00:19:28 2007//
+D
diff --git a/testsrc/tests/ecma_2/String/CVS/Repository b/testsrc/tests/ecma_2/String/CVS/Repository
new file mode 100644
index 00000000..0fd8833c
--- /dev/null
+++ b/testsrc/tests/ecma_2/String/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_2/String
diff --git a/testsrc/tests/ecma_2/String/CVS/Root b/testsrc/tests/ecma_2/String/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_2/String/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_2/Types/CVS/Entries b/testsrc/tests/ecma_2/Types/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/testsrc/tests/ecma_2/Types/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/testsrc/tests/ecma_2/Types/CVS/Repository b/testsrc/tests/ecma_2/Types/CVS/Repository
new file mode 100644
index 00000000..b6dc09bd
--- /dev/null
+++ b/testsrc/tests/ecma_2/Types/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_2/Types
diff --git a/testsrc/tests/ecma_2/Types/CVS/Root b/testsrc/tests/ecma_2/Types/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_2/Types/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_2/With/CVS/Entries b/testsrc/tests/ecma_2/With/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/testsrc/tests/ecma_2/With/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/testsrc/tests/ecma_2/With/CVS/Repository b/testsrc/tests/ecma_2/With/CVS/Repository
new file mode 100644
index 00000000..ebfda9e6
--- /dev/null
+++ b/testsrc/tests/ecma_2/With/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_2/With
diff --git a/testsrc/tests/ecma_2/With/CVS/Root b/testsrc/tests/ecma_2/With/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_2/With/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_2/extensions/CVS/Entries b/testsrc/tests/ecma_2/extensions/CVS/Entries
new file mode 100644
index 00000000..ae6109fb
--- /dev/null
+++ b/testsrc/tests/ecma_2/extensions/CVS/Entries
@@ -0,0 +1,11 @@
+/browser.js/1.1/Fri Feb 9 00:00:51 2007//
+/constructor-001.js/1.2/Sat May 26 00:19:28 2007//
+/function-001.js/1.2/Sat May 26 00:19:28 2007//
+/instanceof-001.js/1.2/Sat May 26 00:19:28 2007//
+/instanceof-002.js/1.2/Sat May 26 00:19:28 2007//
+/instanceof-003-n.js/1.2/Sat May 26 00:19:28 2007//
+/instanceof-004-n.js/1.2/Sat May 26 00:19:28 2007//
+/instanceof-005-n.js/1.2/Sat May 26 00:19:28 2007//
+/instanceof-006.js/1.2/Sat May 26 00:19:28 2007//
+/shell.js/1.2/Sat May 26 00:19:28 2007//
+D
diff --git a/testsrc/tests/ecma_2/extensions/CVS/Repository b/testsrc/tests/ecma_2/extensions/CVS/Repository
new file mode 100644
index 00000000..177d6fef
--- /dev/null
+++ b/testsrc/tests/ecma_2/extensions/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_2/extensions
diff --git a/testsrc/tests/ecma_2/extensions/CVS/Root b/testsrc/tests/ecma_2/extensions/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_2/extensions/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_2/instanceof/CVS/Entries b/testsrc/tests/ecma_2/instanceof/CVS/Entries
new file mode 100644
index 00000000..b1d67d69
--- /dev/null
+++ b/testsrc/tests/ecma_2/instanceof/CVS/Entries
@@ -0,0 +1,7 @@
+/browser.js/1.1/Fri Mar 18 19:09:32 2005//
+/instanceof-001.js/1.2/Sat May 26 00:19:28 2007//
+/instanceof-002.js/1.3/Sat May 26 00:19:29 2007//
+/instanceof-003.js/1.4/Sat May 26 00:19:29 2007//
+/regress-7635.js/1.7/Sat May 26 00:19:29 2007//
+/shell.js/1.2/Sat May 26 00:19:29 2007//
+D
diff --git a/testsrc/tests/ecma_2/instanceof/CVS/Repository b/testsrc/tests/ecma_2/instanceof/CVS/Repository
new file mode 100644
index 00000000..7228e8d9
--- /dev/null
+++ b/testsrc/tests/ecma_2/instanceof/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_2/instanceof
diff --git a/testsrc/tests/ecma_2/instanceof/CVS/Root b/testsrc/tests/ecma_2/instanceof/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_2/instanceof/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_3/Array/CVS/Entries b/testsrc/tests/ecma_3/Array/CVS/Entries
new file mode 100644
index 00000000..862e9502
--- /dev/null
+++ b/testsrc/tests/ecma_3/Array/CVS/Entries
@@ -0,0 +1,19 @@
+/15.4.4.11-01.js/1.2/Sat May 26 00:19:29 2007//
+/15.4.4.3-1.js/1.6/Sat May 26 00:19:29 2007//
+/15.4.4.4-001.js/1.6/Sat May 26 00:19:29 2007//
+/15.4.5.1-01.js/1.1/Thu May 1 01:22:00 2008//
+/15.5.4.8-01.js/1.1/Fri Mar 20 05:00:45 2009//
+/browser.js/1.1/Fri Mar 18 19:09:32 2005//
+/regress-101488.js/1.6/Sat May 26 00:19:29 2007//
+/regress-130451.js/1.5/Sat May 26 00:19:29 2007//
+/regress-322135-01.js/1.4/Sat May 26 00:19:29 2007//
+/regress-322135-02.js/1.4/Sat May 26 00:19:29 2007//
+/regress-322135-03.js/1.3/Sat May 26 00:19:29 2007//
+/regress-322135-04.js/1.3/Sat May 26 00:19:29 2007//
+/regress-387501.js/1.1/Thu Jul 12 20:56:00 2007//
+/regress-390598.js/1.1/Mon Feb 22 18:53:42 2010//
+/regress-421325.js/1.1/Sun Mar 9 20:00:57 2008//
+/regress-430717.js/1.1/Fri Apr 25 21:34:20 2008//
+/regress-488989.js/1.1/Tue Aug 18 08:56:39 2009//
+/shell.js/1.2/Sat May 26 00:19:29 2007//
+D
diff --git a/testsrc/tests/ecma_3/Array/CVS/Repository b/testsrc/tests/ecma_3/Array/CVS/Repository
new file mode 100644
index 00000000..a2e5b6f7
--- /dev/null
+++ b/testsrc/tests/ecma_3/Array/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_3/Array
diff --git a/testsrc/tests/ecma_3/Array/CVS/Root b/testsrc/tests/ecma_3/Array/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_3/Array/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_3/CVS/Entries b/testsrc/tests/ecma_3/CVS/Entries
new file mode 100644
index 00000000..7cc453c2
--- /dev/null
+++ b/testsrc/tests/ecma_3/CVS/Entries
@@ -0,0 +1,5 @@
+/README/1.1/Fri Mar 18 19:09:32 2005//
+/browser.js/1.13/Sat May 19 20:05:06 2007//
+/shell.js/1.28/Wed Aug 13 12:16:58 2008//
+/template.js/1.5/Wed Aug 13 12:10:56 2008//
+D
diff --git a/testsrc/tests/ecma_3/CVS/Entries.Log b/testsrc/tests/ecma_3/CVS/Entries.Log
new file mode 100644
index 00000000..7a8940b9
--- /dev/null
+++ b/testsrc/tests/ecma_3/CVS/Entries.Log
@@ -0,0 +1,19 @@
+A D/Array////
+A D/Date////
+A D/Exceptions////
+A D/ExecutionContexts////
+A D/Expressions////
+A D/FunExpr////
+A D/Function////
+A D/GetSet////
+A D/LexicalConventions////
+A D/Number////
+A D/NumberFormatting////
+A D/Object////
+A D/Operators////
+A D/RegExp////
+A D/Regress////
+A D/Statements////
+A D/String////
+A D/Unicode////
+A D/extensions////
diff --git a/testsrc/tests/ecma_3/CVS/Repository b/testsrc/tests/ecma_3/CVS/Repository
new file mode 100644
index 00000000..82c243e2
--- /dev/null
+++ b/testsrc/tests/ecma_3/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_3
diff --git a/testsrc/tests/ecma_3/CVS/Root b/testsrc/tests/ecma_3/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_3/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_3/Date/CVS/Entries b/testsrc/tests/ecma_3/Date/CVS/Entries
new file mode 100644
index 00000000..a552495c
--- /dev/null
+++ b/testsrc/tests/ecma_3/Date/CVS/Entries
@@ -0,0 +1,13 @@
+/15.9.1.2-01.js/1.1/Tue Mar 11 22:18:23 2008//
+/15.9.3.2-1.js/1.2/Sat May 26 00:19:29 2007//
+/15.9.4.3.js/1.2/Thu Nov 27 11:56:20 2008//
+/15.9.5.3.js/1.4/Sat May 26 00:19:29 2007//
+/15.9.5.4.js/1.6/Sat May 26 00:19:29 2007//
+/15.9.5.5-02.js/1.1/Tue Nov 13 18:53:16 2007//
+/15.9.5.5.js/1.5/Sat May 26 00:19:29 2007//
+/15.9.5.6.js/1.6/Wed May 30 01:13:14 2007//
+/15.9.5.7.js/1.8/Sat May 26 00:19:29 2007//
+/browser.js/1.7/Sat May 26 00:19:29 2007//
+/regress-452786.js/1.1/Thu Nov 27 11:41:46 2008//
+/shell.js/1.11/Tue Mar 11 22:18:23 2008//
+D
diff --git a/testsrc/tests/ecma_3/Date/CVS/Repository b/testsrc/tests/ecma_3/Date/CVS/Repository
new file mode 100644
index 00000000..1dcdc8dc
--- /dev/null
+++ b/testsrc/tests/ecma_3/Date/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_3/Date
diff --git a/testsrc/tests/ecma_3/Date/CVS/Root b/testsrc/tests/ecma_3/Date/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_3/Date/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_3/Exceptions/CVS/Entries b/testsrc/tests/ecma_3/Exceptions/CVS/Entries
new file mode 100644
index 00000000..6c029336
--- /dev/null
+++ b/testsrc/tests/ecma_3/Exceptions/CVS/Entries
@@ -0,0 +1,13 @@
+/15.11.1.1.js/1.4/Sat May 26 00:19:29 2007//
+/15.11.4.4-1.js/1.7/Sat May 26 00:19:29 2007//
+/15.11.7.6-001.js/1.4/Sat May 26 00:19:29 2007//
+/15.11.7.6-002.js/1.5/Sat May 26 00:19:29 2007//
+/15.11.7.6-003.js/1.5/Sat May 26 00:19:29 2007//
+/binding-001.js/1.7/Sat May 26 00:19:29 2007//
+/browser.js/1.1/Fri Mar 18 19:09:33 2005//
+/regress-181654.js/1.8/Sat May 26 00:19:29 2007//
+/regress-181914.js/1.5/Sat May 26 00:19:29 2007//
+/regress-58946.js/1.5/Sat May 26 00:19:29 2007//
+/regress-95101.js/1.5/Sat May 26 00:19:29 2007//
+/shell.js/1.2/Sat May 26 00:19:29 2007//
+D
diff --git a/testsrc/tests/ecma_3/Exceptions/CVS/Repository b/testsrc/tests/ecma_3/Exceptions/CVS/Repository
new file mode 100644
index 00000000..345fac7b
--- /dev/null
+++ b/testsrc/tests/ecma_3/Exceptions/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_3/Exceptions
diff --git a/testsrc/tests/ecma_3/Exceptions/CVS/Root b/testsrc/tests/ecma_3/Exceptions/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_3/Exceptions/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_3/ExecutionContexts/CVS/Entries b/testsrc/tests/ecma_3/ExecutionContexts/CVS/Entries
new file mode 100644
index 00000000..58ad9747
--- /dev/null
+++ b/testsrc/tests/ecma_3/ExecutionContexts/CVS/Entries
@@ -0,0 +1,10 @@
+/10.1.3-1.js/1.8/Sat May 26 00:19:29 2007//
+/10.1.3-2.js/1.5/Mon Sep 17 03:50:25 2007//
+/10.1.3.js/1.4/Sat May 26 00:19:29 2007//
+/10.1.4-1.js/1.5/Sat May 26 00:19:29 2007//
+/10.6.1-01.js/1.2/Sat May 26 00:19:29 2007//
+/browser.js/1.1/Fri Mar 18 19:09:33 2005//
+/regress-23346.js/1.5/Sat May 26 00:19:29 2007//
+/regress-448595-01.js/1.1/Fri Aug 8 00:59:47 2008//
+/shell.js/1.2/Sat May 26 00:19:29 2007//
+D
diff --git a/testsrc/tests/ecma_3/ExecutionContexts/CVS/Repository b/testsrc/tests/ecma_3/ExecutionContexts/CVS/Repository
new file mode 100644
index 00000000..dcb18b8f
--- /dev/null
+++ b/testsrc/tests/ecma_3/ExecutionContexts/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_3/ExecutionContexts
diff --git a/testsrc/tests/ecma_3/ExecutionContexts/CVS/Root b/testsrc/tests/ecma_3/ExecutionContexts/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_3/ExecutionContexts/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_3/Expressions/CVS/Entries b/testsrc/tests/ecma_3/Expressions/CVS/Entries
new file mode 100644
index 00000000..c00e88da
--- /dev/null
+++ b/testsrc/tests/ecma_3/Expressions/CVS/Entries
@@ -0,0 +1,11 @@
+/11.10-01.js/1.1/Mon Sep 24 18:41:14 2007//
+/11.10-02.js/1.1/Mon Sep 24 18:41:14 2007//
+/11.10-03.js/1.1/Fri Dec 7 08:55:03 2007//
+/11.6.1-1.js/1.8/Sat May 26 00:19:30 2007//
+/11.7.1-01.js/1.1/Mon Sep 24 18:41:14 2007//
+/11.7.2-01.js/1.1/Mon Sep 24 18:41:14 2007//
+/11.7.3-01.js/1.2/Fri Sep 28 16:09:35 2007//
+/11.9.6-1.js/1.5/Sat May 26 00:19:30 2007//
+/browser.js/1.1/Fri Mar 18 19:09:34 2005//
+/shell.js/1.2/Sat May 26 00:19:30 2007//
+D
diff --git a/testsrc/tests/ecma_3/Expressions/CVS/Repository b/testsrc/tests/ecma_3/Expressions/CVS/Repository
new file mode 100644
index 00000000..44ed96a0
--- /dev/null
+++ b/testsrc/tests/ecma_3/Expressions/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_3/Expressions
diff --git a/testsrc/tests/ecma_3/Expressions/CVS/Root b/testsrc/tests/ecma_3/Expressions/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_3/Expressions/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_3/FunExpr/CVS/Entries b/testsrc/tests/ecma_3/FunExpr/CVS/Entries
new file mode 100644
index 00000000..08bcf059
--- /dev/null
+++ b/testsrc/tests/ecma_3/FunExpr/CVS/Entries
@@ -0,0 +1,6 @@
+/browser.js/1.1/Fri Mar 18 19:09:34 2005//
+/fe-001-n.js/1.5/Sat May 26 00:19:30 2007//
+/fe-001.js/1.4/Sat May 26 00:19:30 2007//
+/fe-002.js/1.4/Sat May 26 00:19:30 2007//
+/shell.js/1.2/Sat May 26 00:19:30 2007//
+D
diff --git a/testsrc/tests/ecma_3/FunExpr/CVS/Repository b/testsrc/tests/ecma_3/FunExpr/CVS/Repository
new file mode 100644
index 00000000..5dd32f6f
--- /dev/null
+++ b/testsrc/tests/ecma_3/FunExpr/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_3/FunExpr
diff --git a/testsrc/tests/ecma_3/FunExpr/CVS/Root b/testsrc/tests/ecma_3/FunExpr/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_3/FunExpr/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_3/Function/CVS/Entries b/testsrc/tests/ecma_3/Function/CVS/Entries
new file mode 100644
index 00000000..0adb1d8e
--- /dev/null
+++ b/testsrc/tests/ecma_3/Function/CVS/Entries
@@ -0,0 +1,19 @@
+/15.3.4.3-1.js/1.4/Sat May 26 00:19:30 2007//
+/15.3.4.4-1.js/1.4/Sat May 26 00:19:30 2007//
+/arguments-001.js/1.7/Sat May 26 00:19:30 2007//
+/arguments-002.js/1.1/Fri Jul 13 16:56:29 2007//
+/browser.js/1.1/Fri Mar 18 19:09:35 2005//
+/call-001.js/1.5/Sat May 26 00:19:30 2007//
+/regress-131964.js/1.7/Sat May 26 00:19:30 2007//
+/regress-137181.js/1.4/Sat May 26 00:19:30 2007//
+/regress-193555.js/1.4/Sat May 26 00:19:30 2007//
+/regress-313570.js/1.3/Sat May 26 00:19:30 2007//
+/regress-49286.js/1.4/Sat May 26 00:19:30 2007//
+/regress-58274.js/1.7/Sat May 26 00:19:30 2007//
+/regress-85880.js/1.7/Sat May 26 00:19:30 2007//
+/regress-94506.js/1.7/Sat May 26 00:19:30 2007//
+/regress-97921.js/1.5/Sat May 26 00:19:30 2007//
+/scope-001.js/1.6/Sat May 26 00:19:30 2007//
+/scope-002.js/1.4/Sat May 26 00:19:30 2007//
+/shell.js/1.3/Sat May 26 00:19:30 2007//
+D
diff --git a/testsrc/tests/ecma_3/Function/CVS/Repository b/testsrc/tests/ecma_3/Function/CVS/Repository
new file mode 100644
index 00000000..0a068065
--- /dev/null
+++ b/testsrc/tests/ecma_3/Function/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_3/Function
diff --git a/testsrc/tests/ecma_3/Function/CVS/Root b/testsrc/tests/ecma_3/Function/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_3/Function/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_3/GetSet/CVS/Entries b/testsrc/tests/ecma_3/GetSet/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/testsrc/tests/ecma_3/GetSet/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/testsrc/tests/ecma_3/GetSet/CVS/Repository b/testsrc/tests/ecma_3/GetSet/CVS/Repository
new file mode 100644
index 00000000..38318e74
--- /dev/null
+++ b/testsrc/tests/ecma_3/GetSet/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_3/GetSet
diff --git a/testsrc/tests/ecma_3/GetSet/CVS/Root b/testsrc/tests/ecma_3/GetSet/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_3/GetSet/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_3/LexicalConventions/CVS/Entries b/testsrc/tests/ecma_3/LexicalConventions/CVS/Entries
new file mode 100644
index 00000000..1d79ae13
--- /dev/null
+++ b/testsrc/tests/ecma_3/LexicalConventions/CVS/Entries
@@ -0,0 +1,5 @@
+/7.4-01.js/1.1/Sat Feb 21 01:29:57 2009//
+/7.9.1.js/1.1/Wed Nov 14 04:19:18 2007//
+/browser.js/1.1/Wed Nov 14 04:19:18 2007//
+/shell.js/1.1/Wed Nov 14 04:19:18 2007//
+D
diff --git a/testsrc/tests/ecma_3/LexicalConventions/CVS/Repository b/testsrc/tests/ecma_3/LexicalConventions/CVS/Repository
new file mode 100644
index 00000000..4a09ff4f
--- /dev/null
+++ b/testsrc/tests/ecma_3/LexicalConventions/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_3/LexicalConventions
diff --git a/testsrc/tests/ecma_3/LexicalConventions/CVS/Root b/testsrc/tests/ecma_3/LexicalConventions/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_3/LexicalConventions/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_3/Number/CVS/Entries b/testsrc/tests/ecma_3/Number/CVS/Entries
new file mode 100644
index 00000000..95093349
--- /dev/null
+++ b/testsrc/tests/ecma_3/Number/CVS/Entries
@@ -0,0 +1,12 @@
+/15.7.4.2-01.js/1.1/Sat Jan 12 03:48:16 2008//
+/15.7.4.3-01.js/1.2/Tue Jan 15 07:09:46 2008//
+/15.7.4.3-02.js/1.1/Mon Aug 4 23:44:10 2008//
+/15.7.4.5-1.js/1.7/Sat May 26 00:19:30 2007//
+/15.7.4.5-2.js/1.1/Sat Feb 21 01:29:58 2009//
+/15.7.4.6-1.js/1.7/Fri Dec 12 11:43:56 2008//
+/15.7.4.7-1.js/1.7/Fri Dec 12 11:43:56 2008//
+/15.7.4.7-2.js/1.1/Sat Jan 12 03:54:40 2008//
+/browser.js/1.1/Fri Mar 18 19:09:35 2005//
+/regress-442242-01.js/1.1/Thu Aug 7 11:47:00 2008//
+/shell.js/1.2/Sat May 26 00:19:30 2007//
+D
diff --git a/testsrc/tests/ecma_3/Number/CVS/Repository b/testsrc/tests/ecma_3/Number/CVS/Repository
new file mode 100644
index 00000000..9399ecf2
--- /dev/null
+++ b/testsrc/tests/ecma_3/Number/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_3/Number
diff --git a/testsrc/tests/ecma_3/Number/CVS/Root b/testsrc/tests/ecma_3/Number/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_3/Number/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_3/NumberFormatting/CVS/Entries b/testsrc/tests/ecma_3/NumberFormatting/CVS/Entries
new file mode 100644
index 00000000..41d131e4
--- /dev/null
+++ b/testsrc/tests/ecma_3/NumberFormatting/CVS/Entries
@@ -0,0 +1,4 @@
+/browser.js/1.1/Fri Mar 18 19:09:36 2005//
+/shell.js/1.2/Sat May 26 00:19:30 2007//
+/tostring-001.js/1.4/Sat May 26 00:19:30 2007//
+D
diff --git a/testsrc/tests/ecma_3/NumberFormatting/CVS/Repository b/testsrc/tests/ecma_3/NumberFormatting/CVS/Repository
new file mode 100644
index 00000000..29c37d92
--- /dev/null
+++ b/testsrc/tests/ecma_3/NumberFormatting/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_3/NumberFormatting
diff --git a/testsrc/tests/ecma_3/NumberFormatting/CVS/Root b/testsrc/tests/ecma_3/NumberFormatting/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_3/NumberFormatting/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_3/Object/CVS/Entries b/testsrc/tests/ecma_3/Object/CVS/Entries
new file mode 100644
index 00000000..4e3b6147
--- /dev/null
+++ b/testsrc/tests/ecma_3/Object/CVS/Entries
@@ -0,0 +1,16 @@
+/8.6.1-01.js/1.5/Thu Apr 10 21:24:09 2008//
+/8.6.2.6-001.js/1.4/Sat May 26 00:19:30 2007//
+/8.6.2.6-002.js/1.1/Wed Jan 28 16:51:56 2009//
+/browser.js/1.1/Fri Mar 18 19:09:36 2005//
+/class-001.js/1.7/Fri Oct 5 20:44:42 2007//
+/class-002.js/1.5/Sat May 26 00:19:30 2007//
+/class-003.js/1.5/Sat May 26 00:19:30 2007//
+/class-004.js/1.5/Sat May 26 00:19:30 2007//
+/class-005.js/1.5/Sat May 26 00:19:30 2007//
+/regress-361274.js/1.2/Sat May 26 00:19:30 2007//
+/regress-385393-07.js/1.1/Fri Aug 10 21:41:56 2007//
+/regress-459405.js/1.1/Wed Jan 28 16:51:56 2009//
+/regress-72773.js/1.4/Sat May 26 00:19:30 2007//
+/regress-79129-001.js/1.5/Sat May 26 00:19:30 2007//
+/shell.js/1.8/Sat May 26 00:19:30 2007//
+D
diff --git a/testsrc/tests/ecma_3/Object/CVS/Repository b/testsrc/tests/ecma_3/Object/CVS/Repository
new file mode 100644
index 00000000..88d8f827
--- /dev/null
+++ b/testsrc/tests/ecma_3/Object/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_3/Object
diff --git a/testsrc/tests/ecma_3/Object/CVS/Root b/testsrc/tests/ecma_3/Object/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_3/Object/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_3/Operators/CVS/Entries b/testsrc/tests/ecma_3/Operators/CVS/Entries
new file mode 100644
index 00000000..504ed225
--- /dev/null
+++ b/testsrc/tests/ecma_3/Operators/CVS/Entries
@@ -0,0 +1,8 @@
+/11.13.1-001.js/1.5/Sat May 26 00:19:31 2007//
+/11.13.1-002.js/1.3/Wed Aug 13 18:21:56 2008//
+/11.4.1-001.js/1.4/Sat May 26 00:19:31 2007//
+/11.4.1-002.js/1.1/Tue Mar 25 11:33:58 2008//
+/browser.js/1.1/Fri Mar 18 19:09:37 2005//
+/order-01.js/1.1/Thu Aug 7 02:13:31 2008//
+/shell.js/1.2/Sat May 26 00:19:31 2007//
+D
diff --git a/testsrc/tests/ecma_3/Operators/CVS/Repository b/testsrc/tests/ecma_3/Operators/CVS/Repository
new file mode 100644
index 00000000..87fd7ccf
--- /dev/null
+++ b/testsrc/tests/ecma_3/Operators/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_3/Operators
diff --git a/testsrc/tests/ecma_3/Operators/CVS/Root b/testsrc/tests/ecma_3/Operators/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_3/Operators/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_3/RegExp/CVS/Entries b/testsrc/tests/ecma_3/RegExp/CVS/Entries
new file mode 100644
index 00000000..927d2667
--- /dev/null
+++ b/testsrc/tests/ecma_3/RegExp/CVS/Entries
@@ -0,0 +1,71 @@
+/15.10.2-1.js/1.4/Sat May 26 00:19:31 2007//
+/15.10.2.12.js/1.2/Sat May 26 00:19:31 2007//
+/15.10.3.1-1.js/1.6/Sat May 26 00:19:31 2007//
+/15.10.3.1-2.js/1.6/Sat May 26 00:19:31 2007//
+/15.10.4.1-1.js/1.7/Sat May 26 00:19:31 2007//
+/15.10.4.1-2.js/1.7/Sat May 26 00:19:31 2007//
+/15.10.4.1-3.js/1.7/Sat May 26 00:19:31 2007//
+/15.10.4.1-4.js/1.7/Sat May 26 00:19:31 2007//
+/15.10.4.1-5-n.js/1.7/Sat May 26 00:19:31 2007//
+/15.10.4.1-6.js/1.1/Sat Feb 21 01:29:59 2009//
+/15.10.6.2-1.js/1.6/Sat May 26 00:19:31 2007//
+/15.10.6.2-2.js/1.5/Sat May 26 00:19:31 2007//
+/browser.js/1.1/Fri Mar 18 19:09:37 2005//
+/octal-001.js/1.5/Sat May 26 00:19:31 2007//
+/octal-002.js/1.4/Sat May 26 00:19:31 2007//
+/perlstress-001.js/1.7/Sat May 26 00:19:31 2007//
+/perlstress-002.js/1.7/Sat May 26 00:19:31 2007//
+/regress-100199.js/1.6/Sat May 26 00:19:31 2007//
+/regress-105972.js/1.7/Sat May 26 00:19:31 2007//
+/regress-119909.js/1.6/Sat May 26 00:19:31 2007//
+/regress-122076.js/1.6/Sat May 26 00:19:31 2007//
+/regress-123437.js/1.4/Sat May 26 00:19:31 2007//
+/regress-165353.js/1.5/Sat May 26 00:19:31 2007//
+/regress-169497.js/1.6/Sat May 26 00:19:31 2007//
+/regress-169534.js/1.4/Sat May 26 00:19:31 2007//
+/regress-187133.js/1.4/Sat May 26 00:19:31 2007//
+/regress-188206.js/1.8/Thu Oct 11 01:36:34 2007//
+/regress-191479.js/1.4/Sat May 26 00:19:31 2007//
+/regress-202564.js/1.4/Sat May 26 00:19:31 2007//
+/regress-209067.js/1.7/Sat May 26 00:19:31 2007//
+/regress-209919.js/1.10/Sat May 26 00:19:31 2007//
+/regress-216591.js/1.5/Sat May 26 00:19:31 2007//
+/regress-220367-001.js/1.4/Sat May 26 00:19:31 2007//
+/regress-223273.js/1.9/Sat May 26 00:19:31 2007//
+/regress-223535.js/1.6/Sat May 26 00:19:31 2007//
+/regress-224676.js/1.5/Sat Feb 21 01:29:59 2009//
+/regress-225289.js/1.10/Sat May 26 00:19:31 2007//
+/regress-225343.js/1.4/Sat May 26 00:19:31 2007//
+/regress-24712.js/1.6/Sat May 26 00:19:31 2007//
+/regress-285219.js/1.2/Sat May 26 00:19:31 2007//
+/regress-28686.js/1.4/Sat May 26 00:19:31 2007//
+/regress-289669.js/1.4/Sat May 26 00:19:31 2007//
+/regress-307456.js/1.2/Sat May 26 00:19:31 2007//
+/regress-309840.js/1.2/Sat May 26 00:19:31 2007//
+/regress-311414.js/1.6/Wed Jun 25 14:29:24 2008//
+/regress-312351.js/1.2/Sat May 26 00:19:31 2007//
+/regress-31316.js/1.6/Sat May 26 00:19:31 2007//
+/regress-330684.js/1.2/Sat May 26 00:19:31 2007//
+/regress-334158.js/1.2/Sat May 26 00:19:31 2007//
+/regress-346090.js/1.2/Sat May 26 00:19:31 2007//
+/regress-367888.js/1.2/Sat May 26 00:19:31 2007//
+/regress-375642.js/1.2/Sat May 26 00:19:31 2007//
+/regress-375651.js/1.1/Mon Feb 22 18:53:43 2010//
+/regress-375711.js/1.3/Thu Apr 24 01:49:19 2008//
+/regress-375715-01-n.js/1.3/Wed Jun 25 14:45:46 2008//
+/regress-375715-02.js/1.2/Thu Jul 12 17:49:30 2007//
+/regress-375715-03.js/1.2/Thu Jul 12 17:49:30 2007//
+/regress-375715-04.js/1.3/Thu Apr 24 01:49:19 2008//
+/regress-436700.js/1.1/Fri Aug 7 20:40:34 2009//
+/regress-465862.js/1.1/Mon Jan 5 05:28:33 2009//
+/regress-57572.js/1.10/Sat May 26 00:19:31 2007//
+/regress-57631.js/1.8/Sat May 26 00:19:31 2007//
+/regress-67773.js/1.13/Sat May 26 00:19:31 2007//
+/regress-72964.js/1.5/Sat May 26 00:19:31 2007//
+/regress-76683.js/1.5/Sat May 26 00:19:31 2007//
+/regress-78156.js/1.5/Sat May 26 00:19:31 2007//
+/regress-85721.js/1.8/Sat May 26 00:19:31 2007//
+/regress-87231.js/1.7/Sat May 26 00:19:31 2007//
+/regress-98306.js/1.9/Sat May 26 00:19:31 2007//
+/shell.js/1.18/Sat May 26 00:19:31 2007//
+D
diff --git a/testsrc/tests/ecma_3/RegExp/CVS/Repository b/testsrc/tests/ecma_3/RegExp/CVS/Repository
new file mode 100644
index 00000000..50e85227
--- /dev/null
+++ b/testsrc/tests/ecma_3/RegExp/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_3/RegExp
diff --git a/testsrc/tests/ecma_3/RegExp/CVS/Root b/testsrc/tests/ecma_3/RegExp/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_3/RegExp/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_3/Regress/CVS/Entries b/testsrc/tests/ecma_3/Regress/CVS/Entries
new file mode 100644
index 00000000..58d8c06c
--- /dev/null
+++ b/testsrc/tests/ecma_3/Regress/CVS/Entries
@@ -0,0 +1,9 @@
+/browser.js/1.1/Fri Aug 10 21:41:54 2007//
+/regress-385393-04.js/1.1/Fri Aug 10 21:41:54 2007//
+/regress-419152.js/1.1/Thu Feb 28 16:44:05 2008//
+/regress-420087.js/1.1/Sun Mar 9 20:49:13 2008//
+/regress-420610.js/1.1/Sun Mar 9 20:15:14 2008//
+/regress-441477-01.js/1.1/Thu Aug 7 10:21:39 2008//
+/regress-469937.js/1.1/Sun Dec 21 13:43:31 2008//
+/shell.js/1.1/Fri Aug 10 21:41:54 2007//
+D
diff --git a/testsrc/tests/ecma_3/Regress/CVS/Repository b/testsrc/tests/ecma_3/Regress/CVS/Repository
new file mode 100644
index 00000000..a66febb8
--- /dev/null
+++ b/testsrc/tests/ecma_3/Regress/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_3/Regress
diff --git a/testsrc/tests/ecma_3/Regress/CVS/Root b/testsrc/tests/ecma_3/Regress/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_3/Regress/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_3/Statements/CVS/Entries b/testsrc/tests/ecma_3/Statements/CVS/Entries
new file mode 100644
index 00000000..b7517416
--- /dev/null
+++ b/testsrc/tests/ecma_3/Statements/CVS/Entries
@@ -0,0 +1,19 @@
+/12.10-01.js/1.1/Fri Aug 7 21:28:27 2009//
+/12.6.3.js/1.2/Sat May 26 00:19:31 2007//
+/browser.js/1.1/Fri Mar 18 19:09:37 2005//
+/regress-121744.js/1.9/Sat May 26 00:19:31 2007//
+/regress-131348.js/1.10/Sat May 26 00:19:31 2007//
+/regress-157509.js/1.4/Sat May 26 00:19:31 2007//
+/regress-194364.js/1.5/Sat May 26 00:19:31 2007//
+/regress-226517.js/1.4/Sat May 26 00:19:31 2007//
+/regress-302439.js/1.3/Sat May 26 00:19:31 2007//
+/regress-324650.js/1.3/Wed Mar 26 20:21:25 2008//
+/regress-444979.js/1.1/Fri Oct 17 21:14:35 2008//
+/regress-74474-001.js/1.4/Sat May 26 00:19:31 2007//
+/regress-74474-002.js/1.4/Sat May 26 00:19:31 2007//
+/regress-74474-003.js/1.4/Sat May 26 00:19:31 2007//
+/regress-83532-001.js/1.6/Sat May 26 00:19:31 2007//
+/regress-83532-002.js/1.5/Sat May 26 00:19:31 2007//
+/shell.js/1.2/Sat May 26 00:19:31 2007//
+/switch-001.js/1.4/Sat May 26 00:19:31 2007//
+D
diff --git a/testsrc/tests/ecma_3/Statements/CVS/Repository b/testsrc/tests/ecma_3/Statements/CVS/Repository
new file mode 100644
index 00000000..fb734dee
--- /dev/null
+++ b/testsrc/tests/ecma_3/Statements/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_3/Statements
diff --git a/testsrc/tests/ecma_3/Statements/CVS/Root b/testsrc/tests/ecma_3/Statements/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_3/Statements/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_3/String/CVS/Entries b/testsrc/tests/ecma_3/String/CVS/Entries
new file mode 100644
index 00000000..68e88a08
--- /dev/null
+++ b/testsrc/tests/ecma_3/String/CVS/Entries
@@ -0,0 +1,11 @@
+/15.5.4.11.js/1.1/Wed Apr 16 16:30:03 2008//
+/15.5.4.14.js/1.2/Sat May 26 00:19:31 2007//
+/browser.js/1.1/Fri Mar 18 19:09:38 2005//
+/regress-104375.js/1.4/Sat May 26 00:19:31 2007//
+/regress-189898.js/1.4/Sat May 26 00:19:31 2007//
+/regress-304376.js/1.5/Sat May 26 00:19:31 2007//
+/regress-313567.js/1.2/Sat May 26 00:19:31 2007//
+/regress-392378.js/1.1/Wed Apr 16 16:30:03 2008//
+/regress-83293.js/1.16/Sat May 26 00:19:31 2007//
+/shell.js/1.2/Sat May 26 00:19:31 2007//
+D
diff --git a/testsrc/tests/ecma_3/String/CVS/Repository b/testsrc/tests/ecma_3/String/CVS/Repository
new file mode 100644
index 00000000..d8c534b8
--- /dev/null
+++ b/testsrc/tests/ecma_3/String/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_3/String
diff --git a/testsrc/tests/ecma_3/String/CVS/Root b/testsrc/tests/ecma_3/String/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_3/String/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_3/Unicode/CVS/Entries b/testsrc/tests/ecma_3/Unicode/CVS/Entries
new file mode 100644
index 00000000..94f5edcd
--- /dev/null
+++ b/testsrc/tests/ecma_3/Unicode/CVS/Entries
@@ -0,0 +1,12 @@
+/browser.js/1.1/Fri Mar 18 19:09:38 2005//
+/regress-352044-01.js/1.1/Fri Apr 18 11:55:40 2008//
+/regress-352044-02-n.js/1.1/Fri Apr 18 11:55:40 2008//
+/shell.js/1.2/Sat May 26 00:19:31 2007//
+/uc-001-n.js/1.4/Sat May 26 00:19:31 2007//
+/uc-001.js/1.6/Sat May 26 00:19:31 2007//
+/uc-002-n.js/1.5/Sat May 26 00:19:31 2007//
+/uc-002.js/1.6/Sat May 26 00:19:31 2007//
+/uc-003.js/1.7/Sat May 26 00:19:31 2007//
+/uc-004.js/1.4/Sat May 26 00:19:31 2007//
+/uc-005.js/1.7/Sat May 26 00:19:31 2007//
+D
diff --git a/testsrc/tests/ecma_3/Unicode/CVS/Repository b/testsrc/tests/ecma_3/Unicode/CVS/Repository
new file mode 100644
index 00000000..4ead1993
--- /dev/null
+++ b/testsrc/tests/ecma_3/Unicode/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_3/Unicode
diff --git a/testsrc/tests/ecma_3/Unicode/CVS/Root b/testsrc/tests/ecma_3/Unicode/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_3/Unicode/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_3/extensions/CVS/Entries b/testsrc/tests/ecma_3/extensions/CVS/Entries
new file mode 100644
index 00000000..983a1eb0
--- /dev/null
+++ b/testsrc/tests/ecma_3/extensions/CVS/Entries
@@ -0,0 +1,17 @@
+/10.1.3-2.js/1.2/Sat May 26 00:19:32 2007//
+/7.9.1.js/1.1/Wed Nov 14 04:19:19 2007//
+/browser.js/1.1/Fri Feb 9 00:00:52 2007//
+/regress-103087.js/1.1/Thu Oct 11 03:53:01 2007//
+/regress-188206-01.js/1.1/Thu Oct 11 01:36:33 2007//
+/regress-188206-02.js/1.1/Thu Oct 11 01:36:33 2007//
+/regress-220367-002.js/1.1/Thu Oct 11 02:04:47 2007//
+/regress-228087.js/1.1/Thu Oct 11 03:38:13 2007//
+/regress-274152.js/1.3/Thu Dec 6 19:23:03 2007//
+/regress-320854.js/1.2/Sat May 26 00:19:32 2007//
+/regress-327170.js/1.1/Thu Oct 11 03:46:26 2007//
+/regress-368516.js/1.2/Tue Aug 5 20:43:02 2008//
+/regress-385393-03.js/1.1/Fri Aug 10 21:41:56 2007//
+/regress-429248.js/1.1/Sat Apr 26 01:02:29 2008//
+/regress-430740.js/1.1/Wed Sep 24 07:37:40 2008//
+/shell.js/1.3/Thu Oct 11 10:32:25 2007//
+D
diff --git a/testsrc/tests/ecma_3/extensions/CVS/Repository b/testsrc/tests/ecma_3/extensions/CVS/Repository
new file mode 100644
index 00000000..e7a2f219
--- /dev/null
+++ b/testsrc/tests/ecma_3/extensions/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_3/extensions
diff --git a/testsrc/tests/ecma_3/extensions/CVS/Root b/testsrc/tests/ecma_3/extensions/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_3/extensions/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_3_1/CVS/Entries b/testsrc/tests/ecma_3_1/CVS/Entries
new file mode 100644
index 00000000..ec5175e9
--- /dev/null
+++ b/testsrc/tests/ecma_3_1/CVS/Entries
@@ -0,0 +1,5 @@
+/README/1.1/Wed Aug 13 10:25:11 2008//
+/browser.js/1.1/Wed Aug 13 10:25:11 2008//
+/shell.js/1.1/Wed Aug 13 10:25:11 2008//
+/template.js/1.1/Wed Aug 13 10:25:11 2008//
+D
diff --git a/testsrc/tests/ecma_3_1/CVS/Entries.Log b/testsrc/tests/ecma_3_1/CVS/Entries.Log
new file mode 100644
index 00000000..d60950af
--- /dev/null
+++ b/testsrc/tests/ecma_3_1/CVS/Entries.Log
@@ -0,0 +1,3 @@
+A D/Object////
+A D/RegExp////
+A D/extensions////
diff --git a/testsrc/tests/ecma_3_1/CVS/Repository b/testsrc/tests/ecma_3_1/CVS/Repository
new file mode 100644
index 00000000..d260edd6
--- /dev/null
+++ b/testsrc/tests/ecma_3_1/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_3_1
diff --git a/testsrc/tests/ecma_3_1/CVS/Root b/testsrc/tests/ecma_3_1/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_3_1/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_3_1/Object/CVS/Entries b/testsrc/tests/ecma_3_1/Object/CVS/Entries
new file mode 100644
index 00000000..45885bb3
--- /dev/null
+++ b/testsrc/tests/ecma_3_1/Object/CVS/Entries
@@ -0,0 +1,4 @@
+/browser.js/1.1/Wed Aug 13 10:25:12 2008//
+/regress-444787.js/1.1/Wed Aug 13 10:25:12 2008//
+/shell.js/1.1/Wed Aug 13 10:25:12 2008//
+D
diff --git a/testsrc/tests/ecma_3_1/Object/CVS/Repository b/testsrc/tests/ecma_3_1/Object/CVS/Repository
new file mode 100644
index 00000000..4ec18e85
--- /dev/null
+++ b/testsrc/tests/ecma_3_1/Object/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_3_1/Object
diff --git a/testsrc/tests/ecma_3_1/Object/CVS/Root b/testsrc/tests/ecma_3_1/Object/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_3_1/Object/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_3_1/RegExp/CVS/Entries b/testsrc/tests/ecma_3_1/RegExp/CVS/Entries
new file mode 100644
index 00000000..86d17915
--- /dev/null
+++ b/testsrc/tests/ecma_3_1/RegExp/CVS/Entries
@@ -0,0 +1,4 @@
+/browser.js/1.1/Wed Aug 13 10:25:13 2008//
+/regress-305064.js/1.2/Wed Aug 13 12:01:08 2008//
+/shell.js/1.1/Wed Aug 13 10:25:13 2008//
+D
diff --git a/testsrc/tests/ecma_3_1/RegExp/CVS/Repository b/testsrc/tests/ecma_3_1/RegExp/CVS/Repository
new file mode 100644
index 00000000..15a8e1e7
--- /dev/null
+++ b/testsrc/tests/ecma_3_1/RegExp/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_3_1/RegExp
diff --git a/testsrc/tests/ecma_3_1/RegExp/CVS/Root b/testsrc/tests/ecma_3_1/RegExp/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_3_1/RegExp/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/ecma_3_1/extensions/CVS/Entries b/testsrc/tests/ecma_3_1/extensions/CVS/Entries
new file mode 100644
index 00000000..2f9dcbeb
--- /dev/null
+++ b/testsrc/tests/ecma_3_1/extensions/CVS/Entries
@@ -0,0 +1,4 @@
+/browser.js/1.1/Wed Aug 13 10:25:14 2008//
+/regress-478047.js/1.1/Sat Feb 21 01:30:01 2009//
+/shell.js/1.1/Wed Aug 13 10:25:14 2008//
+D
diff --git a/testsrc/tests/ecma_3_1/extensions/CVS/Repository b/testsrc/tests/ecma_3_1/extensions/CVS/Repository
new file mode 100644
index 00000000..49ec89b3
--- /dev/null
+++ b/testsrc/tests/ecma_3_1/extensions/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/ecma_3_1/extensions
diff --git a/testsrc/tests/ecma_3_1/extensions/CVS/Root b/testsrc/tests/ecma_3_1/extensions/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/ecma_3_1/extensions/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_1/Boolean/CVS/Entries b/testsrc/tests/js1_1/Boolean/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/testsrc/tests/js1_1/Boolean/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/testsrc/tests/js1_1/Boolean/CVS/Repository b/testsrc/tests/js1_1/Boolean/CVS/Repository
new file mode 100644
index 00000000..7b47ba41
--- /dev/null
+++ b/testsrc/tests/js1_1/Boolean/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_1/Boolean
diff --git a/testsrc/tests/js1_1/Boolean/CVS/Root b/testsrc/tests/js1_1/Boolean/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_1/Boolean/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_1/CVS/Entries b/testsrc/tests/js1_1/CVS/Entries
new file mode 100644
index 00000000..c2545cc0
--- /dev/null
+++ b/testsrc/tests/js1_1/CVS/Entries
@@ -0,0 +1,5 @@
+/README/1.1/Fri Mar 18 19:09:39 2005//
+/browser.js/1.20/Sat May 26 00:19:32 2007//
+/jsref.js/1.2/Mon Oct 30 16:48:34 2006//
+/shell.js/1.19/Sat May 26 00:19:32 2007//
+D
diff --git a/testsrc/tests/js1_1/CVS/Entries.Log b/testsrc/tests/js1_1/CVS/Entries.Log
new file mode 100644
index 00000000..cef5dc80
--- /dev/null
+++ b/testsrc/tests/js1_1/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/Boolean////
+A D/regress////
diff --git a/testsrc/tests/js1_1/CVS/Repository b/testsrc/tests/js1_1/CVS/Repository
new file mode 100644
index 00000000..f260560d
--- /dev/null
+++ b/testsrc/tests/js1_1/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_1
diff --git a/testsrc/tests/js1_1/CVS/Root b/testsrc/tests/js1_1/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_1/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_1/regress/CVS/Entries b/testsrc/tests/js1_1/regress/CVS/Entries
new file mode 100644
index 00000000..3a2f641a
--- /dev/null
+++ b/testsrc/tests/js1_1/regress/CVS/Entries
@@ -0,0 +1,4 @@
+/browser.js/1.1/Fri Mar 18 19:09:39 2005//
+/function-001.js/1.5/Sat May 26 00:19:32 2007//
+/shell.js/1.2/Sat May 26 00:19:32 2007//
+D
diff --git a/testsrc/tests/js1_1/regress/CVS/Repository b/testsrc/tests/js1_1/regress/CVS/Repository
new file mode 100644
index 00000000..04166b38
--- /dev/null
+++ b/testsrc/tests/js1_1/regress/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_1/regress
diff --git a/testsrc/tests/js1_1/regress/CVS/Root b/testsrc/tests/js1_1/regress/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_1/regress/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_2/Array/CVS/Entries b/testsrc/tests/js1_2/Array/CVS/Entries
new file mode 100644
index 00000000..430f0d91
--- /dev/null
+++ b/testsrc/tests/js1_2/Array/CVS/Entries
@@ -0,0 +1,11 @@
+/array_split_1.js/1.5/Sat May 26 00:19:32 2007//
+/browser.js/1.1/Fri Mar 18 19:09:41 2005//
+/general1.js/1.5/Sat May 26 00:19:32 2007//
+/general2.js/1.5/Sat May 26 00:19:32 2007//
+/shell.js/1.2/Sat May 26 00:19:32 2007//
+/slice.js/1.5/Sat May 26 00:19:32 2007//
+/splice1.js/1.6/Sat May 26 00:19:32 2007//
+/splice2.js/1.6/Sat May 26 00:19:32 2007//
+/tostring_1.js/1.8/Sat May 26 00:19:32 2007//
+/tostring_2.js/1.7/Sat May 26 00:19:32 2007//
+D
diff --git a/testsrc/tests/js1_2/Array/CVS/Repository b/testsrc/tests/js1_2/Array/CVS/Repository
new file mode 100644
index 00000000..d0f9075a
--- /dev/null
+++ b/testsrc/tests/js1_2/Array/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_2/Array
diff --git a/testsrc/tests/js1_2/Array/CVS/Root b/testsrc/tests/js1_2/Array/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_2/Array/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_2/CVS/Entries b/testsrc/tests/js1_2/CVS/Entries
new file mode 100644
index 00000000..7babb49e
--- /dev/null
+++ b/testsrc/tests/js1_2/CVS/Entries
@@ -0,0 +1,5 @@
+/README/1.1/Fri Mar 18 19:09:40 2005//
+/browser.js/1.19/Sat May 26 00:19:32 2007//
+/jsref.js/1.5/Mon Oct 30 16:48:34 2006//
+/shell.js/1.23/Sat May 26 00:19:32 2007//
+D
diff --git a/testsrc/tests/js1_2/CVS/Entries.Log b/testsrc/tests/js1_2/CVS/Entries.Log
new file mode 100644
index 00000000..7b2c5e24
--- /dev/null
+++ b/testsrc/tests/js1_2/CVS/Entries.Log
@@ -0,0 +1,9 @@
+A D/Array////
+A D/Objects////
+A D/String////
+A D/function////
+A D/operator////
+A D/regexp////
+A D/regress////
+A D/statements////
+A D/version120////
diff --git a/testsrc/tests/js1_2/CVS/Repository b/testsrc/tests/js1_2/CVS/Repository
new file mode 100644
index 00000000..533ce525
--- /dev/null
+++ b/testsrc/tests/js1_2/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_2
diff --git a/testsrc/tests/js1_2/CVS/Root b/testsrc/tests/js1_2/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_2/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_2/Objects/CVS/Entries b/testsrc/tests/js1_2/Objects/CVS/Entries
new file mode 100644
index 00000000..077c3dd6
--- /dev/null
+++ b/testsrc/tests/js1_2/Objects/CVS/Entries
@@ -0,0 +1,4 @@
+/browser.js/1.1/Fri Mar 18 19:09:43 2005//
+/shell.js/1.2/Sat May 26 00:19:33 2007//
+/toString-001.js/1.8/Sat May 26 00:19:33 2007//
+D
diff --git a/testsrc/tests/js1_2/Objects/CVS/Repository b/testsrc/tests/js1_2/Objects/CVS/Repository
new file mode 100644
index 00000000..efd65439
--- /dev/null
+++ b/testsrc/tests/js1_2/Objects/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_2/Objects
diff --git a/testsrc/tests/js1_2/Objects/CVS/Root b/testsrc/tests/js1_2/Objects/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_2/Objects/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_2/String/CVS/Entries b/testsrc/tests/js1_2/String/CVS/Entries
new file mode 100644
index 00000000..368098dd
--- /dev/null
+++ b/testsrc/tests/js1_2/String/CVS/Entries
@@ -0,0 +1,7 @@
+/browser.js/1.1/Fri Mar 18 19:09:44 2005//
+/charCodeAt.js/1.5/Sat May 26 00:19:33 2007//
+/concat.js/1.5/Sat May 26 00:19:33 2007//
+/match.js/1.5/Sat May 26 00:19:33 2007//
+/shell.js/1.2/Sat May 26 00:19:33 2007//
+/slice.js/1.5/Sat May 26 00:19:33 2007//
+D
diff --git a/testsrc/tests/js1_2/String/CVS/Repository b/testsrc/tests/js1_2/String/CVS/Repository
new file mode 100644
index 00000000..624824f3
--- /dev/null
+++ b/testsrc/tests/js1_2/String/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_2/String
diff --git a/testsrc/tests/js1_2/String/CVS/Root b/testsrc/tests/js1_2/String/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_2/String/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_2/function/CVS/Entries b/testsrc/tests/js1_2/function/CVS/Entries
new file mode 100644
index 00000000..67e5bb51
--- /dev/null
+++ b/testsrc/tests/js1_2/function/CVS/Entries
@@ -0,0 +1,15 @@
+/Function_object.js/1.6/Sat May 26 00:19:33 2007//
+/Number.js/1.6/Sat May 26 00:19:33 2007//
+/String.js/1.5/Sat May 26 00:19:33 2007//
+/browser.js/1.1/Fri Mar 18 19:09:48 2005//
+/definition-1.js/1.5/Sat May 26 00:19:33 2007//
+/function-001-n.js/1.6/Sat May 26 00:19:33 2007//
+/length.js/1.6/Sat May 26 00:19:33 2007//
+/nesting-1.js/1.5/Sat May 26 00:19:33 2007//
+/nesting.js/1.5/Sat May 26 00:19:33 2007//
+/regexparg-1.js/1.6/Sat May 26 00:19:33 2007//
+/regexparg-2-n.js/1.5/Sat May 26 00:19:33 2007//
+/shell.js/1.2/Sat May 26 00:19:33 2007//
+/tostring-1.js/1.6/Sat May 26 00:19:33 2007//
+/tostring-2.js/1.7/Sat May 26 00:19:33 2007//
+D
diff --git a/testsrc/tests/js1_2/function/CVS/Repository b/testsrc/tests/js1_2/function/CVS/Repository
new file mode 100644
index 00000000..204732ea
--- /dev/null
+++ b/testsrc/tests/js1_2/function/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_2/function
diff --git a/testsrc/tests/js1_2/function/CVS/Root b/testsrc/tests/js1_2/function/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_2/function/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_2/operator/CVS/Entries b/testsrc/tests/js1_2/operator/CVS/Entries
new file mode 100644
index 00000000..bbddbe53
--- /dev/null
+++ b/testsrc/tests/js1_2/operator/CVS/Entries
@@ -0,0 +1,5 @@
+/browser.js/1.1/Fri Mar 18 19:09:48 2005//
+/equality.js/1.5/Sat May 26 00:19:33 2007//
+/shell.js/1.2/Sat May 26 00:19:33 2007//
+/strictEquality.js/1.5/Sat May 26 00:19:33 2007//
+D
diff --git a/testsrc/tests/js1_2/operator/CVS/Repository b/testsrc/tests/js1_2/operator/CVS/Repository
new file mode 100644
index 00000000..9199195c
--- /dev/null
+++ b/testsrc/tests/js1_2/operator/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_2/operator
diff --git a/testsrc/tests/js1_2/operator/CVS/Root b/testsrc/tests/js1_2/operator/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_2/operator/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_2/regexp/CVS/Entries b/testsrc/tests/js1_2/regexp/CVS/Entries
new file mode 100644
index 00000000..fd444735
--- /dev/null
+++ b/testsrc/tests/js1_2/regexp/CVS/Entries
@@ -0,0 +1,53 @@
+/RegExp_dollar_number.js/1.7/Sat May 26 00:19:33 2007//
+/RegExp_input.js/1.5/Sat May 26 00:19:33 2007//
+/RegExp_input_as_array.js/1.5/Sat May 26 00:19:33 2007//
+/RegExp_lastIndex.js/1.6/Sat May 26 00:19:33 2007//
+/RegExp_lastMatch.js/1.5/Sat May 26 00:19:33 2007//
+/RegExp_lastMatch_as_array.js/1.5/Sat May 26 00:19:33 2007//
+/RegExp_lastParen.js/1.5/Sat May 26 00:19:33 2007//
+/RegExp_lastParen_as_array.js/1.5/Sat May 26 00:19:33 2007//
+/RegExp_leftContext.js/1.5/Sat May 26 00:19:33 2007//
+/RegExp_leftContext_as_array.js/1.5/Sat May 26 00:19:33 2007//
+/RegExp_multiline.js/1.5/Sat May 26 00:19:33 2007//
+/RegExp_multiline_as_array.js/1.5/Sat May 26 00:19:33 2007//
+/RegExp_object.js/1.5/Sat May 26 00:19:33 2007//
+/RegExp_rightContext.js/1.5/Sat May 26 00:19:33 2007//
+/RegExp_rightContext_as_array.js/1.5/Sat May 26 00:19:33 2007//
+/alphanumeric.js/1.5/Sat May 26 00:19:33 2007//
+/asterisk.js/1.5/Sat May 26 00:19:33 2007//
+/backslash.js/1.5/Sat May 26 00:19:33 2007//
+/backspace.js/1.5/Sat May 26 00:19:33 2007//
+/beginLine.js/1.5/Sat May 26 00:19:33 2007//
+/browser.js/1.1/Fri Mar 18 19:09:49 2005//
+/character_class.js/1.5/Sat May 26 00:19:33 2007//
+/compile.js/1.5/Sat May 26 00:19:33 2007//
+/control_characters.js/1.6/Sat May 26 00:19:33 2007//
+/digit.js/1.5/Sat May 26 00:19:33 2007//
+/dot.js/1.5/Sat May 26 00:19:33 2007//
+/endLine.js/1.5/Sat May 26 00:19:33 2007//
+/everything.js/1.5/Sat May 26 00:19:33 2007//
+/exec.js/1.5/Sat May 26 00:19:33 2007//
+/flags.js/1.5/Sat May 26 00:19:33 2007//
+/global.js/1.5/Sat May 26 00:19:33 2007//
+/hexadecimal.js/1.5/Sat May 26 00:19:33 2007//
+/ignoreCase.js/1.5/Sat May 26 00:19:33 2007//
+/interval.js/1.5/Sat May 26 00:19:33 2007//
+/octal.js/1.5/Sat May 26 00:19:33 2007//
+/parentheses.js/1.5/Sat May 26 00:19:33 2007//
+/plus.js/1.5/Sat May 26 00:19:33 2007//
+/question_mark.js/1.5/Sat May 26 00:19:33 2007//
+/regress-6359.js/1.6/Sat May 26 00:19:33 2007//
+/regress-9141.js/1.6/Sat May 26 00:19:33 2007//
+/shell.js/1.2/Sat May 26 00:19:33 2007//
+/simple_form.js/1.5/Sat May 26 00:19:33 2007//
+/source.js/1.5/Sat May 26 00:19:33 2007//
+/special_characters.js/1.5/Sat May 26 00:19:33 2007//
+/string_replace.js/1.5/Sat May 26 00:19:33 2007//
+/string_search.js/1.5/Sat May 26 00:19:33 2007//
+/string_split.js/1.5/Sat May 26 00:19:33 2007//
+/test.js/1.5/Sat May 26 00:19:33 2007//
+/toString.js/1.6/Sat May 26 00:19:33 2007//
+/vertical_bar.js/1.6/Sat May 26 00:19:33 2007//
+/whitespace.js/1.5/Sat May 26 00:19:33 2007//
+/word_boundary.js/1.5/Sat May 26 00:19:33 2007//
+D
diff --git a/testsrc/tests/js1_2/regexp/CVS/Repository b/testsrc/tests/js1_2/regexp/CVS/Repository
new file mode 100644
index 00000000..74632d2a
--- /dev/null
+++ b/testsrc/tests/js1_2/regexp/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_2/regexp
diff --git a/testsrc/tests/js1_2/regexp/CVS/Root b/testsrc/tests/js1_2/regexp/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_2/regexp/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_2/regress/CVS/Entries b/testsrc/tests/js1_2/regress/CVS/Entries
new file mode 100644
index 00000000..d63565a9
--- /dev/null
+++ b/testsrc/tests/js1_2/regress/CVS/Entries
@@ -0,0 +1,5 @@
+/browser.js/1.1/Fri Mar 18 19:09:49 2005//
+/regress-144834.js/1.8/Sat May 26 00:19:33 2007//
+/regress-7703.js/1.7/Sat May 26 00:19:33 2007//
+/shell.js/1.2/Sat May 26 00:19:33 2007//
+D
diff --git a/testsrc/tests/js1_2/regress/CVS/Repository b/testsrc/tests/js1_2/regress/CVS/Repository
new file mode 100644
index 00000000..74cb495f
--- /dev/null
+++ b/testsrc/tests/js1_2/regress/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_2/regress
diff --git a/testsrc/tests/js1_2/regress/CVS/Root b/testsrc/tests/js1_2/regress/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_2/regress/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_2/statements/CVS/Entries b/testsrc/tests/js1_2/statements/CVS/Entries
new file mode 100644
index 00000000..346f974e
--- /dev/null
+++ b/testsrc/tests/js1_2/statements/CVS/Entries
@@ -0,0 +1,8 @@
+/break.js/1.5/Sat May 26 00:19:34 2007//
+/browser.js/1.1/Fri Mar 18 19:09:50 2005//
+/continue.js/1.5/Sat May 26 00:19:34 2007//
+/do_while.js/1.5/Sat May 26 00:19:34 2007//
+/shell.js/1.2/Sat May 26 00:19:34 2007//
+/switch.js/1.6/Sat May 26 00:19:34 2007//
+/switch2.js/1.7/Sat May 26 00:19:34 2007//
+D
diff --git a/testsrc/tests/js1_2/statements/CVS/Repository b/testsrc/tests/js1_2/statements/CVS/Repository
new file mode 100644
index 00000000..2d0b0d37
--- /dev/null
+++ b/testsrc/tests/js1_2/statements/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_2/statements
diff --git a/testsrc/tests/js1_2/statements/CVS/Root b/testsrc/tests/js1_2/statements/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_2/statements/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_2/version120/CVS/Entries b/testsrc/tests/js1_2/version120/CVS/Entries
new file mode 100644
index 00000000..96cdfaf6
--- /dev/null
+++ b/testsrc/tests/js1_2/version120/CVS/Entries
@@ -0,0 +1,5 @@
+/boolean-001.js/1.4/Sat May 26 00:19:34 2007//
+/browser.js/1.3/Sat May 26 00:19:34 2007//
+/regress-99663.js/1.6/Sat May 26 00:19:34 2007//
+/shell.js/1.6/Sat May 26 00:19:34 2007//
+D
diff --git a/testsrc/tests/js1_2/version120/CVS/Repository b/testsrc/tests/js1_2/version120/CVS/Repository
new file mode 100644
index 00000000..7ec658c7
--- /dev/null
+++ b/testsrc/tests/js1_2/version120/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_2/version120
diff --git a/testsrc/tests/js1_2/version120/CVS/Root b/testsrc/tests/js1_2/version120/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_2/version120/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_3/Boolean/CVS/Entries b/testsrc/tests/js1_3/Boolean/CVS/Entries
new file mode 100644
index 00000000..8449ed2a
--- /dev/null
+++ b/testsrc/tests/js1_3/Boolean/CVS/Entries
@@ -0,0 +1,4 @@
+/boolean-001.js/1.6/Sat May 26 00:19:34 2007//
+/browser.js/1.1/Fri Mar 18 19:09:51 2005//
+/shell.js/1.2/Sat May 26 00:19:34 2007//
+D
diff --git a/testsrc/tests/js1_3/Boolean/CVS/Repository b/testsrc/tests/js1_3/Boolean/CVS/Repository
new file mode 100644
index 00000000..3654deaf
--- /dev/null
+++ b/testsrc/tests/js1_3/Boolean/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_3/Boolean
diff --git a/testsrc/tests/js1_3/Boolean/CVS/Root b/testsrc/tests/js1_3/Boolean/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_3/Boolean/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_3/CVS/Entries b/testsrc/tests/js1_3/CVS/Entries
new file mode 100644
index 00000000..ad57d867
--- /dev/null
+++ b/testsrc/tests/js1_3/CVS/Entries
@@ -0,0 +1,5 @@
+/README/1.1/Fri Mar 18 19:09:51 2005//
+/browser.js/1.17/Sat May 26 00:19:34 2007//
+/jsref.js/1.3/Mon Oct 30 16:48:35 2006//
+/shell.js/1.17/Sat May 26 00:19:34 2007//
+D
diff --git a/testsrc/tests/js1_3/CVS/Entries.Log b/testsrc/tests/js1_3/CVS/Entries.Log
new file mode 100644
index 00000000..386ea2e4
--- /dev/null
+++ b/testsrc/tests/js1_3/CVS/Entries.Log
@@ -0,0 +1,6 @@
+A D/Boolean////
+A D/Script////
+A D/extensions////
+A D/inherit////
+A D/misc////
+A D/regress////
diff --git a/testsrc/tests/js1_3/CVS/Repository b/testsrc/tests/js1_3/CVS/Repository
new file mode 100644
index 00000000..60890080
--- /dev/null
+++ b/testsrc/tests/js1_3/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_3
diff --git a/testsrc/tests/js1_3/CVS/Root b/testsrc/tests/js1_3/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_3/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_3/Script/CVS/Entries b/testsrc/tests/js1_3/Script/CVS/Entries
new file mode 100644
index 00000000..9ca8a45b
--- /dev/null
+++ b/testsrc/tests/js1_3/Script/CVS/Entries
@@ -0,0 +1,9 @@
+/browser.js/1.1/Fri Mar 18 19:09:52 2005//
+/delete-001.js/1.5/Sat May 26 00:19:34 2007//
+/function-001-n.js/1.7/Sat May 26 00:19:34 2007//
+/function-002.js/1.5/Sat May 26 00:19:34 2007//
+/in-001.js/1.5/Sat May 26 00:19:34 2007//
+/new-001.js/1.5/Sat May 26 00:19:34 2007//
+/shell.js/1.2/Sat May 26 00:19:34 2007//
+/switch-001.js/1.5/Sat May 26 00:19:34 2007//
+D
diff --git a/testsrc/tests/js1_3/Script/CVS/Repository b/testsrc/tests/js1_3/Script/CVS/Repository
new file mode 100644
index 00000000..79fa7d55
--- /dev/null
+++ b/testsrc/tests/js1_3/Script/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_3/Script
diff --git a/testsrc/tests/js1_3/Script/CVS/Root b/testsrc/tests/js1_3/Script/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_3/Script/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_3/extensions/CVS/Entries b/testsrc/tests/js1_3/extensions/CVS/Entries
new file mode 100644
index 00000000..d6c08ac5
--- /dev/null
+++ b/testsrc/tests/js1_3/extensions/CVS/Entries
@@ -0,0 +1,7 @@
+/browser.js/1.1/Fri Feb 9 00:00:52 2007//
+/proto_10.js/1.2/Sat May 26 00:19:34 2007//
+/proto_2.js/1.2/Sat May 26 00:19:34 2007//
+/proto_5.js/1.2/Sat May 26 00:19:34 2007//
+/script-001.js/1.2/Sat May 26 00:19:34 2007//
+/shell.js/1.2/Sat May 26 00:19:34 2007//
+D
diff --git a/testsrc/tests/js1_3/extensions/CVS/Repository b/testsrc/tests/js1_3/extensions/CVS/Repository
new file mode 100644
index 00000000..e4808cd8
--- /dev/null
+++ b/testsrc/tests/js1_3/extensions/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_3/extensions
diff --git a/testsrc/tests/js1_3/extensions/CVS/Root b/testsrc/tests/js1_3/extensions/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_3/extensions/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_3/inherit/CVS/Entries b/testsrc/tests/js1_3/inherit/CVS/Entries
new file mode 100644
index 00000000..7633d7ed
--- /dev/null
+++ b/testsrc/tests/js1_3/inherit/CVS/Entries
@@ -0,0 +1,13 @@
+/browser.js/1.1/Fri Mar 18 19:09:52 2005//
+/proto_1.js/1.5/Sat May 26 00:19:35 2007//
+/proto_10.js/1.6/Sat May 26 00:19:35 2007//
+/proto_11.js/1.5/Sat May 26 00:19:35 2007//
+/proto_12.js/1.5/Sat May 26 00:19:35 2007//
+/proto_3.js/1.5/Sat May 26 00:19:35 2007//
+/proto_4.js/1.5/Sat May 26 00:19:35 2007//
+/proto_6.js/1.5/Sat May 26 00:19:35 2007//
+/proto_7.js/1.5/Sat May 26 00:19:35 2007//
+/proto_8.js/1.5/Sat May 26 00:19:35 2007//
+/proto_9.js/1.5/Sat May 26 00:19:35 2007//
+/shell.js/1.2/Sat May 26 00:19:35 2007//
+D
diff --git a/testsrc/tests/js1_3/inherit/CVS/Repository b/testsrc/tests/js1_3/inherit/CVS/Repository
new file mode 100644
index 00000000..1ac368d9
--- /dev/null
+++ b/testsrc/tests/js1_3/inherit/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_3/inherit
diff --git a/testsrc/tests/js1_3/inherit/CVS/Root b/testsrc/tests/js1_3/inherit/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_3/inherit/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_3/misc/CVS/Entries b/testsrc/tests/js1_3/misc/CVS/Entries
new file mode 100644
index 00000000..3a642b08
--- /dev/null
+++ b/testsrc/tests/js1_3/misc/CVS/Entries
@@ -0,0 +1,3 @@
+/browser.js/1.1/Fri Mar 18 19:09:52 2005//
+/shell.js/1.2/Sat May 26 00:19:35 2007//
+D
diff --git a/testsrc/tests/js1_3/misc/CVS/Repository b/testsrc/tests/js1_3/misc/CVS/Repository
new file mode 100644
index 00000000..665cfd92
--- /dev/null
+++ b/testsrc/tests/js1_3/misc/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_3/misc
diff --git a/testsrc/tests/js1_3/misc/CVS/Root b/testsrc/tests/js1_3/misc/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_3/misc/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_3/regress/CVS/Entries b/testsrc/tests/js1_3/regress/CVS/Entries
new file mode 100644
index 00000000..b0f550ba
--- /dev/null
+++ b/testsrc/tests/js1_3/regress/CVS/Entries
@@ -0,0 +1,9 @@
+/browser.js/1.1/Fri Mar 18 19:09:53 2005//
+/delete-001.js/1.5/Sat May 26 00:19:35 2007//
+/function-001-n.js/1.7/Sat May 26 00:19:35 2007//
+/function-002.js/1.5/Sat May 26 00:19:35 2007//
+/in-001.js/1.5/Sat May 26 00:19:35 2007//
+/new-001.js/1.5/Sat May 26 00:19:35 2007//
+/shell.js/1.2/Sat May 26 00:19:35 2007//
+/switch-001.js/1.5/Sat May 26 00:19:35 2007//
+D
diff --git a/testsrc/tests/js1_3/regress/CVS/Repository b/testsrc/tests/js1_3/regress/CVS/Repository
new file mode 100644
index 00000000..44588f47
--- /dev/null
+++ b/testsrc/tests/js1_3/regress/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_3/regress
diff --git a/testsrc/tests/js1_3/regress/CVS/Root b/testsrc/tests/js1_3/regress/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_3/regress/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_4/CVS/Entries b/testsrc/tests/js1_4/CVS/Entries
new file mode 100644
index 00000000..3face52b
--- /dev/null
+++ b/testsrc/tests/js1_4/CVS/Entries
@@ -0,0 +1,5 @@
+/README/1.1/Fri Mar 18 19:09:53 2005//
+/browser.js/1.20/Sat May 26 00:19:35 2007//
+/jsref.js/1.2/Mon Oct 30 16:48:35 2006//
+/shell.js/1.17/Sat May 26 00:19:35 2007//
+D
diff --git a/testsrc/tests/js1_4/CVS/Entries.Log b/testsrc/tests/js1_4/CVS/Entries.Log
new file mode 100644
index 00000000..1088c65c
--- /dev/null
+++ b/testsrc/tests/js1_4/CVS/Entries.Log
@@ -0,0 +1,4 @@
+A D/Eval////
+A D/Exceptions////
+A D/Functions////
+A D/Regress////
diff --git a/testsrc/tests/js1_4/CVS/Repository b/testsrc/tests/js1_4/CVS/Repository
new file mode 100644
index 00000000..48ec8eb7
--- /dev/null
+++ b/testsrc/tests/js1_4/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_4
diff --git a/testsrc/tests/js1_4/CVS/Root b/testsrc/tests/js1_4/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_4/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_4/Eval/CVS/Entries b/testsrc/tests/js1_4/Eval/CVS/Entries
new file mode 100644
index 00000000..aced0605
--- /dev/null
+++ b/testsrc/tests/js1_4/Eval/CVS/Entries
@@ -0,0 +1,6 @@
+/browser.js/1.1/Fri Mar 18 19:09:54 2005//
+/eval-001.js/1.6/Sat May 26 00:19:35 2007//
+/eval-002.js/1.6/Sat May 26 00:19:35 2007//
+/eval-003.js/1.6/Sat May 26 00:19:35 2007//
+/shell.js/1.2/Sat May 26 00:19:35 2007//
+D
diff --git a/testsrc/tests/js1_4/Eval/CVS/Repository b/testsrc/tests/js1_4/Eval/CVS/Repository
new file mode 100644
index 00000000..6599f2da
--- /dev/null
+++ b/testsrc/tests/js1_4/Eval/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_4/Eval
diff --git a/testsrc/tests/js1_4/Eval/CVS/Root b/testsrc/tests/js1_4/Eval/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_4/Eval/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_4/Exceptions/CVS/Entries b/testsrc/tests/js1_4/Exceptions/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/testsrc/tests/js1_4/Exceptions/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/testsrc/tests/js1_4/Exceptions/CVS/Repository b/testsrc/tests/js1_4/Exceptions/CVS/Repository
new file mode 100644
index 00000000..a47b940b
--- /dev/null
+++ b/testsrc/tests/js1_4/Exceptions/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_4/Exceptions
diff --git a/testsrc/tests/js1_4/Exceptions/CVS/Root b/testsrc/tests/js1_4/Exceptions/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_4/Exceptions/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_4/Functions/CVS/Entries b/testsrc/tests/js1_4/Functions/CVS/Entries
new file mode 100644
index 00000000..694bd69b
--- /dev/null
+++ b/testsrc/tests/js1_4/Functions/CVS/Entries
@@ -0,0 +1,4 @@
+/browser.js/1.1/Fri Mar 18 19:09:54 2005//
+/function-001.js/1.5/Sat May 26 00:19:35 2007//
+/shell.js/1.2/Sat May 26 00:19:35 2007//
+D
diff --git a/testsrc/tests/js1_4/Functions/CVS/Repository b/testsrc/tests/js1_4/Functions/CVS/Repository
new file mode 100644
index 00000000..bf2f6c3f
--- /dev/null
+++ b/testsrc/tests/js1_4/Functions/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_4/Functions
diff --git a/testsrc/tests/js1_4/Functions/CVS/Root b/testsrc/tests/js1_4/Functions/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_4/Functions/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_4/Regress/CVS/Entries b/testsrc/tests/js1_4/Regress/CVS/Entries
new file mode 100644
index 00000000..3a3c1feb
--- /dev/null
+++ b/testsrc/tests/js1_4/Regress/CVS/Entries
@@ -0,0 +1,10 @@
+/browser.js/1.1/Fri Mar 18 19:09:54 2005//
+/date-001-n.js/1.6/Sat May 26 00:19:36 2007//
+/function-001.js/1.5/Sat May 26 00:19:36 2007//
+/function-002.js/1.9/Sat May 26 00:19:36 2007//
+/function-003.js/1.6/Sat May 26 00:19:36 2007//
+/function-004-n.js/1.5/Sat May 26 00:19:36 2007//
+/regress-7224.js/1.6/Sat May 26 00:19:36 2007//
+/shell.js/1.2/Sat May 26 00:19:36 2007//
+/toString-001-n.js/1.5/Sat May 26 00:19:36 2007//
+D
diff --git a/testsrc/tests/js1_4/Regress/CVS/Repository b/testsrc/tests/js1_4/Regress/CVS/Repository
new file mode 100644
index 00000000..bb699069
--- /dev/null
+++ b/testsrc/tests/js1_4/Regress/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_4/Regress
diff --git a/testsrc/tests/js1_4/Regress/CVS/Root b/testsrc/tests/js1_4/Regress/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_4/Regress/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_5/Array/CVS/Entries b/testsrc/tests/js1_5/Array/CVS/Entries
new file mode 100644
index 00000000..c472127e
--- /dev/null
+++ b/testsrc/tests/js1_5/Array/CVS/Entries
@@ -0,0 +1,38 @@
+/11.1.4.js/1.2/Sat May 26 00:19:36 2007//
+/array-001.js/1.6/Sat May 26 00:19:36 2007//
+/browser.js/1.1/Fri Mar 18 19:09:55 2005//
+/regress-101964.js/1.4/Sat May 26 00:19:36 2007//
+/regress-107138.js/1.4/Sat May 26 00:19:36 2007//
+/regress-108440.js/1.5/Sat May 26 00:19:36 2007//
+/regress-154338.js/1.5/Sat May 26 00:19:36 2007//
+/regress-157652.js/1.18/Thu Mar 13 18:46:10 2008//
+/regress-178722.js/1.12/Sat May 26 00:19:36 2007//
+/regress-255555.js/1.2/Sat May 26 00:19:36 2007//
+/regress-299644.js/1.2/Sat May 26 00:19:36 2007//
+/regress-300858.js/1.2/Sat May 26 00:19:36 2007//
+/regress-310351.js/1.3/Sat May 26 00:19:36 2007//
+/regress-311515.js/1.3/Sat Feb 21 01:30:02 2009//
+/regress-313153.js/1.3/Sat May 26 00:19:36 2007//
+/regress-315509-01.js/1.2/Sat May 26 00:19:36 2007//
+/regress-330812.js/1.4/Sat Mar 15 11:56:17 2008//
+/regress-345961.js/1.2/Sat May 26 00:19:36 2007//
+/regress-348810.js/1.2/Sat May 26 00:19:36 2007//
+/regress-350256-01.js/1.2/Sat May 26 00:19:36 2007//
+/regress-350256-02.js/1.2/Sat May 26 00:19:36 2007//
+/regress-350256-03.js/1.3/Thu Apr 10 20:23:42 2008//
+/regress-360681-01.js/1.2/Sat May 26 00:19:36 2007//
+/regress-360681-02.js/1.2/Sat May 26 00:19:36 2007//
+/regress-364104.js/1.3/Sat May 26 00:19:36 2007//
+/regress-422286.js/1.1/Tue Mar 25 11:39:05 2008//
+/regress-424954.js/1.1/Wed Mar 26 07:01:05 2008//
+/regress-451483.js/1.1/Fri Oct 17 21:14:36 2008//
+/regress-451906.js/1.1/Fri Oct 17 21:14:36 2008//
+/regress-456845.js/1.1/Fri Oct 17 21:14:36 2008//
+/regress-465980-01.js/1.1/Tue Aug 18 08:46:31 2009//
+/regress-465980-02.js/1.1/Tue Aug 18 08:46:31 2009//
+/regress-474529.js/1.1/Mon Feb 22 18:53:43 2010//
+/regress-94257.js/1.4/Sat May 26 00:19:36 2007//
+/regress-99120-01.js/1.4/Sat May 26 00:19:36 2007//
+/regress-99120-02.js/1.4/Sat May 26 00:19:36 2007//
+/shell.js/1.2/Sat May 26 00:19:36 2007//
+D
diff --git a/testsrc/tests/js1_5/Array/CVS/Repository b/testsrc/tests/js1_5/Array/CVS/Repository
new file mode 100644
index 00000000..e2e9d56a
--- /dev/null
+++ b/testsrc/tests/js1_5/Array/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_5/Array
diff --git a/testsrc/tests/js1_5/Array/CVS/Root b/testsrc/tests/js1_5/Array/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_5/Array/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_5/CVS/Entries b/testsrc/tests/js1_5/CVS/Entries
new file mode 100644
index 00000000..0a7ebe31
--- /dev/null
+++ b/testsrc/tests/js1_5/CVS/Entries
@@ -0,0 +1,5 @@
+/README/1.1/Fri Mar 18 19:09:55 2005//
+/browser.js/1.17/Sat May 19 20:05:07 2007//
+/shell.js/1.27/Wed Aug 13 12:16:59 2008//
+/template.js/1.5/Wed Aug 13 12:10:56 2008//
+D
diff --git a/testsrc/tests/js1_5/CVS/Entries.Log b/testsrc/tests/js1_5/CVS/Entries.Log
new file mode 100644
index 00000000..f80013bf
--- /dev/null
+++ b/testsrc/tests/js1_5/CVS/Entries.Log
@@ -0,0 +1,15 @@
+A D/Array////
+A D/Date////
+A D/Error////
+A D/Exceptions////
+A D/Expressions////
+A D/Function////
+A D/GC////
+A D/GetSet////
+A D/LexicalConventions////
+A D/Object////
+A D/Regress////
+A D/Scope////
+A D/String////
+A D/decompilation////
+A D/extensions////
diff --git a/testsrc/tests/js1_5/CVS/Repository b/testsrc/tests/js1_5/CVS/Repository
new file mode 100644
index 00000000..0bef4895
--- /dev/null
+++ b/testsrc/tests/js1_5/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_5
diff --git a/testsrc/tests/js1_5/CVS/Root b/testsrc/tests/js1_5/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_5/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_5/Date/CVS/Entries b/testsrc/tests/js1_5/Date/CVS/Entries
new file mode 100644
index 00000000..bb8c5c52
--- /dev/null
+++ b/testsrc/tests/js1_5/Date/CVS/Entries
@@ -0,0 +1,10 @@
+/browser.js/1.1/Thu Jul 28 02:34:07 2005//
+/regress-188211.js/1.2/Sat May 26 00:19:36 2007//
+/regress-301738-01.js/1.2/Sat May 26 00:19:36 2007//
+/regress-301738-02.js/1.2/Sat May 26 00:19:36 2007//
+/regress-309925-01.js/1.2/Sat May 26 00:19:36 2007//
+/regress-309925-02.js/1.2/Sat May 26 00:19:36 2007//
+/regress-346027.js/1.2/Sat May 26 00:19:36 2007//
+/regress-346363.js/1.2/Sat May 26 00:19:36 2007//
+/shell.js/1.2/Sat May 26 00:19:36 2007//
+D
diff --git a/testsrc/tests/js1_5/Date/CVS/Repository b/testsrc/tests/js1_5/Date/CVS/Repository
new file mode 100644
index 00000000..23d51f71
--- /dev/null
+++ b/testsrc/tests/js1_5/Date/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_5/Date
diff --git a/testsrc/tests/js1_5/Date/CVS/Root b/testsrc/tests/js1_5/Date/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_5/Date/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_5/Error/CVS/Entries b/testsrc/tests/js1_5/Error/CVS/Entries
new file mode 100644
index 00000000..fe07cf94
--- /dev/null
+++ b/testsrc/tests/js1_5/Error/CVS/Entries
@@ -0,0 +1,6 @@
+/browser.js/1.1/Mon Oct 24 02:47:28 2005//
+/regress-354246.js/1.2/Sat May 26 00:19:36 2007//
+/regress-412324.js/1.1/Thu Feb 21 21:22:38 2008//
+/regress-465377.js/1.1/Wed Jan 28 16:52:37 2009//
+/shell.js/1.2/Sat May 26 00:19:36 2007//
+D
diff --git a/testsrc/tests/js1_5/Error/CVS/Repository b/testsrc/tests/js1_5/Error/CVS/Repository
new file mode 100644
index 00000000..81df89a0
--- /dev/null
+++ b/testsrc/tests/js1_5/Error/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_5/Error
diff --git a/testsrc/tests/js1_5/Error/CVS/Root b/testsrc/tests/js1_5/Error/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_5/Error/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_5/Exceptions/CVS/Entries b/testsrc/tests/js1_5/Exceptions/CVS/Entries
new file mode 100644
index 00000000..bcd4ed39
--- /dev/null
+++ b/testsrc/tests/js1_5/Exceptions/CVS/Entries
@@ -0,0 +1,18 @@
+/browser.js/1.1/Fri Mar 18 19:09:56 2005//
+/catchguard-002-n.js/1.5/Sat May 26 00:19:36 2007//
+/catchguard-003-n.js/1.5/Sat May 26 00:19:36 2007//
+/errstack-001.js/1.4/Sat May 26 00:19:36 2007//
+/regress-121658.js/1.8/Sat May 26 00:19:36 2007//
+/regress-123002.js/1.6/Sat May 26 00:19:36 2007//
+/regress-232182.js/1.7/Sat May 26 00:19:36 2007//
+/regress-257751.js/1.2/Sat May 26 00:19:36 2007//
+/regress-273931.js/1.2/Sat May 26 00:19:36 2007//
+/regress-315147.js/1.4/Thu Apr 10 21:24:09 2008//
+/regress-332472.js/1.2/Sat May 26 00:19:36 2007//
+/regress-333728.js/1.2/Sat May 26 00:19:36 2007//
+/regress-342359.js/1.4/Mon Dec 10 21:51:53 2007//
+/regress-347674.js/1.2/Sat May 26 00:19:36 2007//
+/regress-350650-n.js/1.2/Sat May 26 00:19:36 2007//
+/regress-350837.js/1.2/Sat May 26 00:19:36 2007//
+/shell.js/1.2/Sat May 26 00:19:36 2007//
+D
diff --git a/testsrc/tests/js1_5/Exceptions/CVS/Repository b/testsrc/tests/js1_5/Exceptions/CVS/Repository
new file mode 100644
index 00000000..ba965098
--- /dev/null
+++ b/testsrc/tests/js1_5/Exceptions/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_5/Exceptions
diff --git a/testsrc/tests/js1_5/Exceptions/CVS/Root b/testsrc/tests/js1_5/Exceptions/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_5/Exceptions/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_5/Expressions/CVS/Entries b/testsrc/tests/js1_5/Expressions/CVS/Entries
new file mode 100644
index 00000000..5cdaa709
--- /dev/null
+++ b/testsrc/tests/js1_5/Expressions/CVS/Entries
@@ -0,0 +1,8 @@
+/browser.js/1.1/Fri Mar 18 19:09:56 2005//
+/regress-192288.js/1.4/Sat May 26 00:19:37 2007//
+/regress-394673.js/1.1/Fri Oct 5 16:41:54 2007//
+/regress-96526-argsub.js/1.4/Sat May 26 00:19:37 2007//
+/regress-96526-delelem.js/1.5/Sat May 26 00:19:37 2007//
+/regress-96526-noargsub.js/1.4/Sat May 26 00:19:37 2007//
+/shell.js/1.6/Sat May 26 00:19:37 2007//
+D
diff --git a/testsrc/tests/js1_5/Expressions/CVS/Repository b/testsrc/tests/js1_5/Expressions/CVS/Repository
new file mode 100644
index 00000000..aa97eb83
--- /dev/null
+++ b/testsrc/tests/js1_5/Expressions/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_5/Expressions
diff --git a/testsrc/tests/js1_5/Expressions/CVS/Root b/testsrc/tests/js1_5/Expressions/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_5/Expressions/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_5/Function/CVS/Entries b/testsrc/tests/js1_5/Function/CVS/Entries
new file mode 100644
index 00000000..b124a082
--- /dev/null
+++ b/testsrc/tests/js1_5/Function/CVS/Entries
@@ -0,0 +1,17 @@
+/10.1.6-01.js/1.3/Sat May 26 00:19:37 2007//
+/10.1.6.js/1.2/Sat May 26 00:19:37 2007//
+/15.3.4.4.js/1.5/Sat May 26 00:19:37 2007//
+/browser.js/1.1/Fri Mar 18 19:09:57 2005//
+/regress-123371.js/1.2/Sat May 26 00:19:37 2007//
+/regress-178389.js/1.2/Sat May 26 00:19:37 2007//
+/regress-222029-001.js/1.5/Sat May 26 00:19:37 2007//
+/regress-222029-002.js/1.4/Sat May 26 00:19:37 2007//
+/regress-292215.js/1.2/Sat May 26 00:19:37 2007//
+/regress-338001.js/1.4/Fri Mar 28 19:14:45 2008//
+/regress-338121-01.js/1.3/Thu Apr 10 20:23:43 2008//
+/regress-338121-02.js/1.3/Thu Apr 10 20:23:43 2008//
+/regress-338121-03.js/1.3/Mon Nov 26 08:42:53 2007//
+/regress-344052.js/1.2/Sat May 26 00:19:37 2007//
+/regress-364023.js/1.1/Wed Aug 8 10:30:08 2007//
+/shell.js/1.2/Sat May 26 00:19:37 2007//
+D
diff --git a/testsrc/tests/js1_5/Function/CVS/Repository b/testsrc/tests/js1_5/Function/CVS/Repository
new file mode 100644
index 00000000..80f7c99d
--- /dev/null
+++ b/testsrc/tests/js1_5/Function/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_5/Function
diff --git a/testsrc/tests/js1_5/Function/CVS/Root b/testsrc/tests/js1_5/Function/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_5/Function/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_5/GC/CVS/Entries b/testsrc/tests/js1_5/GC/CVS/Entries
new file mode 100644
index 00000000..63faa65f
--- /dev/null
+++ b/testsrc/tests/js1_5/GC/CVS/Entries
@@ -0,0 +1,28 @@
+/browser.js/1.1/Wed Jun 14 23:45:22 2006//
+/regress-104584.js/1.4/Sat May 26 00:19:37 2007//
+/regress-203278-2.js/1.2/Sat May 26 00:19:37 2007//
+/regress-203278-3.js/1.2/Sat May 26 00:19:37 2007//
+/regress-278725.js/1.2/Sat May 26 00:19:37 2007//
+/regress-306788.js/1.2/Sat May 26 00:19:37 2007//
+/regress-311497.js/1.2/Sat May 26 00:19:37 2007//
+/regress-313276.js/1.2/Sat May 26 00:19:37 2007//
+/regress-313479.js/1.2/Sat May 26 00:19:37 2007//
+/regress-316885-01.js/1.2/Sat May 26 00:19:37 2007//
+/regress-316885-02.js/1.2/Sat May 26 00:19:37 2007//
+/regress-316885-03.js/1.2/Sat May 26 00:19:37 2007//
+/regress-319980-01.js/1.3/Sat May 26 00:19:37 2007//
+/regress-324278.js/1.2/Sat May 26 00:19:37 2007//
+/regress-331719.js/1.3/Sat May 26 00:19:37 2007//
+/regress-338653.js/1.4/Wed Jun 25 14:45:46 2008//
+/regress-341877-01.js/1.2/Sat May 26 00:19:37 2007//
+/regress-341877-02.js/1.2/Sat May 26 00:19:37 2007//
+/regress-346794.js/1.2/Sat May 26 00:19:37 2007//
+/regress-348532.js/1.3/Sat May 26 00:19:37 2007//
+/regress-352606.js/1.2/Sat May 26 00:19:37 2007//
+/regress-383269-01.js/1.2/Sat Feb 21 01:30:03 2009//
+/regress-383269-02.js/1.2/Sat Feb 21 01:30:03 2009//
+/regress-390078.js/1.1/Fri Oct 19 02:26:52 2007//
+/regress-418128.js/1.1/Thu Jul 3 14:22:43 2008//
+/regress-440558.js/1.1/Thu Aug 7 09:53:20 2008//
+/shell.js/1.2/Sat May 26 00:19:37 2007//
+D
diff --git a/testsrc/tests/js1_5/GC/CVS/Repository b/testsrc/tests/js1_5/GC/CVS/Repository
new file mode 100644
index 00000000..5c9d7381
--- /dev/null
+++ b/testsrc/tests/js1_5/GC/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_5/GC
diff --git a/testsrc/tests/js1_5/GC/CVS/Root b/testsrc/tests/js1_5/GC/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_5/GC/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_5/GetSet/CVS/Entries b/testsrc/tests/js1_5/GetSet/CVS/Entries
new file mode 100644
index 00000000..f60a8a20
--- /dev/null
+++ b/testsrc/tests/js1_5/GetSet/CVS/Entries
@@ -0,0 +1,6 @@
+/browser.js/1.1/Fri Mar 18 19:09:57 2005//
+/getset-002.js/1.4/Sat May 26 00:19:37 2007//
+/regress-353264.js/1.2/Sat May 26 00:19:37 2007//
+/regress-375976.js/1.1/Fri Sep 21 14:26:35 2007//
+/shell.js/1.2/Sat May 26 00:19:37 2007//
+D
diff --git a/testsrc/tests/js1_5/GetSet/CVS/Repository b/testsrc/tests/js1_5/GetSet/CVS/Repository
new file mode 100644
index 00000000..318127e4
--- /dev/null
+++ b/testsrc/tests/js1_5/GetSet/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_5/GetSet
diff --git a/testsrc/tests/js1_5/GetSet/CVS/Root b/testsrc/tests/js1_5/GetSet/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_5/GetSet/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_5/LexicalConventions/CVS/Entries b/testsrc/tests/js1_5/LexicalConventions/CVS/Entries
new file mode 100644
index 00000000..de9f5ce4
--- /dev/null
+++ b/testsrc/tests/js1_5/LexicalConventions/CVS/Entries
@@ -0,0 +1,7 @@
+/browser.js/1.1/Fri Mar 18 19:09:57 2005//
+/lexical-001.js/1.5/Sat May 26 00:19:37 2007//
+/regress-177314.js/1.5/Sat May 26 00:19:37 2007//
+/regress-343675.js/1.2/Sat May 26 00:19:37 2007//
+/regress-469940.js/1.1/Sat Jan 24 13:06:56 2009//
+/shell.js/1.2/Sat May 26 00:19:37 2007//
+D
diff --git a/testsrc/tests/js1_5/LexicalConventions/CVS/Repository b/testsrc/tests/js1_5/LexicalConventions/CVS/Repository
new file mode 100644
index 00000000..5864f625
--- /dev/null
+++ b/testsrc/tests/js1_5/LexicalConventions/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_5/LexicalConventions
diff --git a/testsrc/tests/js1_5/LexicalConventions/CVS/Root b/testsrc/tests/js1_5/LexicalConventions/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_5/LexicalConventions/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_5/Object/CVS/Entries b/testsrc/tests/js1_5/Object/CVS/Entries
new file mode 100644
index 00000000..4e2693c0
--- /dev/null
+++ b/testsrc/tests/js1_5/Object/CVS/Entries
@@ -0,0 +1,13 @@
+/browser.js/1.1/Fri Mar 18 19:09:58 2005//
+/regress-137000.js/1.7/Sat May 26 00:19:37 2007//
+/regress-192105.js/1.4/Sat May 26 00:19:37 2007//
+/regress-308806-01.js/1.2/Sat May 26 00:19:37 2007//
+/regress-338709.js/1.3/Sat May 26 00:19:37 2007//
+/regress-362872-01.js/1.1/Wed Aug 8 10:26:45 2007//
+/regress-362872-02.js/1.1/Wed Aug 8 10:26:45 2007//
+/regress-382503.js/1.2/Wed Jun 25 14:45:46 2008//
+/regress-382532.js/1.1/Wed Jun 13 03:49:10 2007//
+/regress-465476.js/1.1/Wed Jan 28 16:52:38 2009//
+/regress-90596-003.js/1.6/Sat May 26 00:19:37 2007//
+/shell.js/1.2/Sat May 26 00:19:37 2007//
+D
diff --git a/testsrc/tests/js1_5/Object/CVS/Repository b/testsrc/tests/js1_5/Object/CVS/Repository
new file mode 100644
index 00000000..24b52f67
--- /dev/null
+++ b/testsrc/tests/js1_5/Object/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_5/Object
diff --git a/testsrc/tests/js1_5/Object/CVS/Root b/testsrc/tests/js1_5/Object/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_5/Object/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_5/Regress/CVS/Entries b/testsrc/tests/js1_5/Regress/CVS/Entries
new file mode 100644
index 00000000..437db437
--- /dev/null
+++ b/testsrc/tests/js1_5/Regress/CVS/Entries
@@ -0,0 +1,370 @@
+/browser.js/1.1/Fri Mar 18 19:09:58 2005//
+/regress-102725.js/1.8/Sat May 26 00:19:38 2007//
+/regress-10278.js/1.2/Sat May 26 00:19:38 2007//
+/regress-103602.js/1.5/Sat May 26 00:19:38 2007//
+/regress-104077.js/1.16/Sat May 26 00:19:38 2007//
+/regress-106244.js/1.3/Sat May 26 00:19:38 2007//
+/regress-110286.js/1.4/Sat May 26 00:19:38 2007//
+/regress-111557.js/1.6/Sat May 26 00:19:38 2007//
+/regress-114491.js/1.4/Sat May 26 00:19:38 2007//
+/regress-114493.js/1.4/Sat May 26 00:19:38 2007//
+/regress-115436.js/1.4/Sat May 26 00:19:38 2007//
+/regress-116228.js/1.2/Sat May 26 00:19:38 2007//
+/regress-118849.js/1.4/Sat May 26 00:19:38 2007//
+/regress-119719.js/1.2/Sat May 26 00:19:38 2007//
+/regress-127243.js/1.3/Sat May 26 00:19:38 2007//
+/regress-127557.js/1.6/Sat May 26 00:19:38 2007//
+/regress-131510-001.js/1.5/Sat May 26 00:19:38 2007//
+/regress-139316.js/1.3/Sat May 26 00:19:38 2007//
+/regress-140852.js/1.2/Sat May 26 00:19:38 2007//
+/regress-140974.js/1.5/Sat May 26 00:19:38 2007//
+/regress-146596.js/1.6/Sat May 26 00:19:38 2007//
+/regress-152646.js/1.9/Sat May 26 00:19:38 2007//
+/regress-155081-2.js/1.2/Sat May 26 00:19:38 2007//
+/regress-155081.js/1.3/Sat May 26 00:19:38 2007//
+/regress-156354.js/1.4/Sat May 26 00:19:38 2007//
+/regress-159334.js/1.5/Sat May 26 00:19:38 2007//
+/regress-162392.js/1.2/Sat May 26 00:19:38 2007//
+/regress-165201.js/1.2/Sat May 26 00:19:38 2007//
+/regress-167328.js/1.3/Sat May 26 00:19:38 2007//
+/regress-167658.js/1.2/Sat May 26 00:19:38 2007//
+/regress-168347.js/1.7/Sat May 26 00:19:38 2007//
+/regress-169559.js/1.3/Sat May 26 00:19:38 2007//
+/regress-170193.js/1.4/Sat May 26 00:19:38 2007//
+/regress-172699.js/1.5/Sat May 26 00:19:38 2007//
+/regress-173067.js/1.2/Sat May 26 00:19:38 2007//
+/regress-174709.js/1.2/Sat May 26 00:19:38 2007//
+/regress-176125.js/1.2/Sat May 26 00:19:38 2007//
+/regress-179524.js/1.8/Sat May 26 00:19:38 2007//
+/regress-185165.js/1.4/Sat May 26 00:19:38 2007//
+/regress-191633.js/1.4/Sat May 26 00:19:38 2007//
+/regress-191668.js/1.4/Sat May 26 00:19:38 2007//
+/regress-192414.js/1.6/Sat May 26 00:19:38 2007//
+/regress-193418.js/1.4/Sat May 26 00:19:38 2007//
+/regress-203278-1.js/1.2/Sat May 26 00:19:38 2007//
+/regress-203402.js/1.4/Sat May 26 00:19:38 2007//
+/regress-203841.js/1.7/Sat May 26 00:19:38 2007//
+/regress-204210.js/1.5/Sat May 26 00:19:38 2007//
+/regress-210682.js/1.4/Sat May 26 00:19:38 2007//
+/regress-211590.js/1.4/Sun Dec 16 16:01:48 2007//
+/regress-213482.js/1.2/Sat May 26 00:19:38 2007//
+/regress-214761.js/1.4/Sat May 26 00:19:38 2007//
+/regress-216320.js/1.6/Sat May 26 00:19:38 2007//
+/regress-224956.js/1.8/Sat May 26 00:19:38 2007//
+/regress-229006.js/1.2/Sat May 26 00:19:38 2007//
+/regress-230216-1.js/1.2/Sat May 26 00:19:38 2007//
+/regress-230216-2.js/1.2/Sat May 26 00:19:38 2007//
+/regress-230216-3.js/1.2/Sat May 26 00:19:38 2007//
+/regress-233483-2.js/1.4/Sat May 26 00:19:38 2007//
+/regress-233483.js/1.4/Sat May 26 00:19:38 2007//
+/regress-234389.js/1.6/Sat May 26 00:19:38 2007//
+/regress-238881.js/1.2/Sat May 26 00:19:38 2007//
+/regress-238945.js/1.2/Sat May 26 00:19:38 2007//
+/regress-240317.js/1.2/Sat May 26 00:19:38 2007//
+/regress-240577.js/1.2/Sat May 26 00:19:38 2007//
+/regress-243174.js/1.2/Sat May 26 00:19:38 2007//
+/regress-243389-n.js/1.2/Sat May 26 00:19:38 2007//
+/regress-243869.js/1.2/Sat May 26 00:19:38 2007//
+/regress-244470.js/1.2/Sat May 26 00:19:38 2007//
+/regress-244619.js/1.3/Sat May 26 00:19:38 2007//
+/regress-245113.js/1.2/Sat May 26 00:19:38 2007//
+/regress-245308.js/1.2/Sat May 26 00:19:38 2007//
+/regress-246911.js/1.2/Sat May 26 00:19:38 2007//
+/regress-246964.js/1.3/Wed Jun 25 14:45:46 2008//
+/regress-247179.js/1.2/Sat May 26 00:19:38 2007//
+/regress-248444.js/1.2/Sat May 26 00:19:38 2007//
+/regress-249211.js/1.2/Sat May 26 00:19:38 2007//
+/regress-252892.js/1.3/Sat May 26 00:19:38 2007//
+/regress-253150.js/1.3/Sat May 26 00:19:38 2007//
+/regress-254296.js/1.4/Sat May 26 00:19:38 2007//
+/regress-254974.js/1.3/Sat May 26 00:19:38 2007//
+/regress-256501.js/1.2/Sat May 26 00:19:38 2007//
+/regress-256617.js/1.2/Sat May 26 00:19:38 2007//
+/regress-256798.js/1.3/Sat May 26 00:19:38 2007//
+/regress-259935.js/1.2/Sat May 26 00:19:38 2007//
+/regress-260541.js/1.2/Sat May 26 00:19:38 2007//
+/regress-261886.js/1.2/Sat May 26 00:19:38 2007//
+/regress-261887.js/1.2/Sat May 26 00:19:38 2007//
+/regress-271716-n.js/1.2/Sat May 26 00:19:38 2007//
+/regress-274035.js/1.2/Sat May 26 00:19:38 2007//
+/regress-274888.js/1.2/Sat May 26 00:19:38 2007//
+/regress-275378.js/1.2/Sat May 26 00:19:38 2007//
+/regress-276103.js/1.2/Sat May 26 00:19:38 2007//
+/regress-278873.js/1.2/Sat May 26 00:19:38 2007//
+/regress-280769-1.js/1.5/Sat May 26 00:19:38 2007//
+/regress-280769-2.js/1.3/Thu Apr 10 20:23:43 2008//
+/regress-280769-3.js/1.3/Sat May 26 00:19:38 2007//
+/regress-280769-4.js/1.3/Sat May 26 00:19:38 2007//
+/regress-280769-5.js/1.2/Sat May 26 00:19:38 2007//
+/regress-280769.js/1.3/Sat May 26 00:19:38 2007//
+/regress-281487.js/1.3/Sat May 26 00:19:38 2007//
+/regress-281606.js/1.2/Sat May 26 00:19:38 2007//
+/regress-281930.js/1.2/Sat May 26 00:19:38 2007//
+/regress-283477.js/1.2/Sat May 26 00:19:38 2007//
+/regress-286216.js/1.2/Sat May 26 00:19:38 2007//
+/regress-288688.js/1.2/Sat May 26 00:19:38 2007//
+/regress-289094.js/1.2/Sat May 26 00:19:38 2007//
+/regress-290575.js/1.4/Sat May 26 00:19:38 2007//
+/regress-290656.js/1.2/Sat May 26 00:19:38 2007//
+/regress-294191.js/1.2/Sat May 26 00:19:38 2007//
+/regress-294195-01.js/1.2/Sat May 26 00:19:38 2007//
+/regress-294195-02.js/1.2/Sat May 26 00:19:38 2007//
+/regress-294302.js/1.2/Sat May 26 00:19:38 2007//
+/regress-295052.js/1.2/Sat May 26 00:19:38 2007//
+/regress-295666.js/1.2/Sat May 26 00:19:38 2007//
+/regress-299209.js/1.5/Sat May 26 00:19:38 2007//
+/regress-299641.js/1.2/Sat May 26 00:19:38 2007//
+/regress-303213.js/1.5/Thu Mar 13 18:46:11 2008//
+/regress-306633.js/1.6/Sat Feb 21 01:30:03 2009//
+/regress-306727.js/1.5/Sat May 26 00:19:38 2007//
+/regress-306794.js/1.3/Thu Jul 12 17:49:31 2007//
+/regress-308085.js/1.2/Sat May 26 00:19:38 2007//
+/regress-308566.js/1.4/Sat Feb 21 01:30:03 2009//
+/regress-309242.js/1.2/Sat May 26 00:19:38 2007//
+/regress-310295.js/1.2/Sat May 26 00:19:38 2007//
+/regress-310607.js/1.2/Sat May 26 00:19:38 2007//
+/regress-310993.js/1.3/Sat Feb 21 01:30:03 2009//
+/regress-311071.js/1.2/Sat May 26 00:19:38 2007//
+/regress-311629.js/1.2/Sat May 26 00:19:38 2007//
+/regress-312260.js/1.3/Sat May 26 00:19:38 2007//
+/regress-31255.js/1.4/Sat May 26 00:19:38 2007//
+/regress-312588.js/1.4/Wed Feb 6 20:06:40 2008//
+/regress-313967-01.js/1.2/Sat May 26 00:19:38 2007//
+/regress-313967-02.js/1.2/Sat May 26 00:19:38 2007//
+/regress-314401.js/1.3/Sat May 26 00:19:38 2007//
+/regress-315974.js/1.2/Sat May 26 00:19:38 2007//
+/regress-315990.js/1.2/Sat May 26 00:19:38 2007//
+/regress-317476.js/1.2/Sat May 26 00:19:38 2007//
+/regress-317533.js/1.6/Thu Apr 10 21:24:09 2008//
+/regress-317714-01.js/1.2/Sat May 26 00:19:38 2007//
+/regress-317714-02.js/1.2/Sat May 26 00:19:38 2007//
+/regress-319384.js/1.3/Sat May 26 00:19:38 2007//
+/regress-319391.js/1.2/Sat May 26 00:19:38 2007//
+/regress-320032.js/1.2/Sat May 26 00:19:38 2007//
+/regress-320119.js/1.2/Sat May 26 00:19:38 2007//
+/regress-321757.js/1.2/Sat May 26 00:19:38 2007//
+/regress-321874.js/1.3/Sat May 26 00:19:38 2007//
+/regress-321971.js/1.2/Sat May 26 00:19:38 2007//
+/regress-322430.js/1.4/Thu Dec 4 13:01:41 2008//
+/regress-323314-1.js/1.4/Thu Apr 10 21:24:09 2008//
+/regress-325925.js/1.2/Sat May 26 00:19:38 2007//
+/regress-326453.js/1.3/Thu Jul 12 17:49:31 2007//
+/regress-326467.js/1.3/Thu Jul 12 17:49:31 2007//
+/regress-328012.js/1.2/Sat May 26 00:19:38 2007//
+/regress-328664.js/1.3/Mon Nov 19 17:23:06 2007//
+/regress-328897.js/1.3/Sat Feb 21 01:30:03 2009//
+/regress-329383.js/1.3/Sat May 26 00:19:38 2007//
+/regress-329530.js/1.4/Sat May 26 00:19:38 2007//
+/regress-330352.js/1.4/Sat May 26 00:19:38 2007//
+/regress-330951.js/1.2/Sat May 26 00:19:38 2007//
+/regress-334807-01.js/1.2/Sat May 26 00:19:38 2007//
+/regress-334807-02.js/1.2/Sat May 26 00:19:38 2007//
+/regress-334807-03.js/1.2/Sat May 26 00:19:38 2007//
+/regress-334807-04.js/1.2/Sat May 26 00:19:38 2007//
+/regress-334807-05.js/1.2/Sat May 26 00:19:38 2007//
+/regress-334807-06.js/1.2/Sat May 26 00:19:38 2007//
+/regress-336100.js/1.3/Sat May 26 00:19:38 2007//
+/regress-338307.js/1.2/Sat May 26 00:19:38 2007//
+/regress-340369.js/1.3/Sat May 26 00:19:38 2007//
+/regress-341360.js/1.3/Sat May 26 00:19:38 2007//
+/regress-343713.js/1.3/Sat May 26 00:19:38 2007//
+/regress-343966.js/1.2/Sat May 26 00:19:38 2007//
+/regress-344711-n.js/1.2/Sat May 26 00:19:38 2007//
+/regress-344804.js/1.2/Sat May 26 00:19:38 2007//
+/regress-344959.js/1.2/Sat May 26 00:19:38 2007//
+/regress-346237.js/1.2/Sat May 26 00:19:38 2007//
+/regress-346801.js/1.3/Sat May 26 00:19:38 2007//
+/regress-347306-01.js/1.4/Sat May 26 00:19:38 2007//
+/regress-349482-01.js/1.3/Sat May 26 00:19:38 2007//
+/regress-349482-02.js/1.4/Sat May 26 00:19:38 2007//
+/regress-349592.js/1.4/Sat May 26 00:19:38 2007//
+/regress-349648.js/1.2/Sat May 26 00:19:38 2007//
+/regress-350253.js/1.2/Sat May 26 00:19:38 2007//
+/regress-350268.js/1.3/Wed Feb 6 20:06:40 2008//
+/regress-350312.js/1.5/Sat May 26 00:19:38 2007//
+/regress-350415.js/1.2/Sat May 26 00:19:38 2007//
+/regress-350529.js/1.3/Thu Jul 12 17:49:31 2007//
+/regress-350692.js/1.4/Sat May 26 00:19:38 2007//
+/regress-351116.js/1.2/Sat May 26 00:19:38 2007//
+/regress-351515.js/1.2/Sat May 26 00:19:38 2007//
+/regress-352009.js/1.2/Sat May 26 00:19:38 2007//
+/regress-352197.js/1.5/Thu Apr 10 21:24:09 2008//
+/regress-352208.js/1.2/Sat May 26 00:19:38 2007//
+/regress-352604.js/1.1/Wed Apr 16 14:38:39 2008//
+/regress-354924.js/1.2/Sat May 26 00:19:38 2007//
+/regress-355341.js/1.3/Sat May 26 00:19:38 2007//
+/regress-355344.js/1.3/Sat May 26 00:19:38 2007//
+/regress-355556.js/1.3/Sat May 26 00:19:38 2007//
+/regress-355829-01.js/1.1/Fri Aug 7 23:45:05 2009//
+/regress-355829-02.js/1.1/Fri Aug 7 23:45:05 2009//
+/regress-355829-03.js/1.1/Fri Aug 7 23:45:05 2009//
+/regress-356250.js/1.4/Thu Jul 12 17:49:31 2007//
+/regress-356693.js/1.3/Thu Jul 12 17:49:31 2007//
+/regress-360969-01.js/1.2/Sat May 26 00:19:38 2007//
+/regress-360969-02.js/1.2/Sat May 26 00:19:38 2007//
+/regress-360969-03.js/1.2/Sat May 26 00:19:38 2007//
+/regress-360969-04.js/1.2/Sat May 26 00:19:38 2007//
+/regress-360969-05.js/1.2/Sat May 26 00:19:38 2007//
+/regress-360969-06.js/1.2/Sat May 26 00:19:38 2007//
+/regress-361467.js/1.2/Sat May 26 00:19:38 2007//
+/regress-361617.js/1.1/Thu Feb 7 13:30:54 2008//
+/regress-362583.js/1.1/Thu Feb 7 13:33:53 2008//
+/regress-3649-n.js/1.4/Sat May 26 00:19:38 2007//
+/regress-366122.js/1.1/Thu Jun 14 22:15:49 2007//
+/regress-366468.js/1.2/Sat May 26 00:19:38 2007//
+/regress-366601.js/1.1/Wed Aug 8 14:52:54 2007//
+/regress-367561-01.js/1.1/Thu Jun 14 22:19:51 2007//
+/regress-367561-03.js/1.1/Thu Jun 14 22:19:51 2007//
+/regress-372364.js/1.3/Mon Nov 19 17:23:06 2007//
+/regress-379245.js/1.1/Fri Sep 21 14:33:29 2007//
+/regress-383674.js/1.1/Tue Jun 12 20:58:09 2007//
+/regress-383682.js/1.1/Wed Oct 31 17:22:32 2007//
+/regress-385393-06.js/1.1/Fri Aug 10 21:41:57 2007//
+/regress-387951-01.js/1.1/Wed Apr 16 12:02:58 2008//
+/regress-387951-02.js/1.1/Wed Apr 16 12:02:58 2008//
+/regress-387951-03.js/1.1/Wed Apr 16 12:02:58 2008//
+/regress-39309.js/1.4/Sat May 26 00:19:38 2007//
+/regress-396684.js/1.1/Mon Sep 24 19:20:54 2007//
+/regress-398085-01.js/1.3/Sat Feb 21 01:30:04 2009//
+/regress-398085-02.js/1.1/Sat Mar 29 22:37:33 2008//
+/regress-398609.js/1.1/Sat Dec 8 20:12:09 2007//
+/regress-404755.js/1.1/Sat Dec 8 19:41:50 2007//
+/regress-406769.js/1.1/Thu Dec 13 23:10:07 2007//
+/regress-407024.js/1.1/Sat Dec 8 19:29:22 2007//
+/regress-407323.js/1.2/Fri Dec 21 00:02:15 2007//
+/regress-407957.js/1.2/Sat Feb 21 01:30:04 2009//
+/regress-410852.js/1.1/Wed Aug 6 08:44:47 2008//
+/regress-416628.js/1.1/Mon Feb 18 11:38:44 2008//
+/regress-416737-01.js/1.1/Fri Aug 7 20:32:08 2009//
+/regress-416737-02.js/1.1/Fri Aug 7 20:32:08 2009//
+/regress-417893.js/1.1/Thu Feb 21 19:38:06 2008//
+/regress-418504.js/1.1/Thu Feb 21 18:12:57 2008//
+/regress-418540.js/1.1/Thu Feb 21 17:14:44 2008//
+/regress-419018.js/1.1/Fri Feb 29 01:37:05 2008//
+/regress-419803.js/1.1/Thu Feb 28 16:24:12 2008//
+/regress-420919.js/1.1/Fri Apr 25 21:28:09 2008//
+/regress-422348.js/1.1/Tue Mar 25 11:36:55 2008//
+/regress-424311.js/1.1/Wed Apr 16 15:17:35 2008//
+/regress-425360.js/1.2/Sat Feb 21 01:30:04 2009//
+/regress-426827.js/1.1/Fri Aug 7 20:38:01 2009//
+/regress-428366.js/1.1/Wed Jan 14 16:13:02 2009//
+/regress-438415-01.js/1.1/Sun Jul 27 04:08:48 2008//
+/regress-438415-02.js/1.1/Wed Aug 6 06:44:40 2008//
+/regress-449627.js/1.1/Fri Oct 17 21:14:38 2008//
+/regress-449666.js/1.1/Fri Mar 6 01:38:40 2009//
+/regress-450369.js/1.1/Fri Oct 17 21:14:38 2008//
+/regress-450833.js/1.1/Thu Dec 4 13:01:41 2008//
+/regress-451322.js/1.1/Mon Feb 22 18:53:43 2010//
+/regress-451884.js/1.1/Mon Sep 22 17:20:16 2008//
+/regress-451946.js/1.1/Mon Oct 20 15:46:02 2008//
+/regress-452008.js/1.1/Fri Oct 17 21:14:38 2008//
+/regress-452170.js/1.1/Thu Sep 18 17:12:38 2008//
+/regress-452333.js/1.1/Thu Sep 18 11:32:31 2008//
+/regress-452336.js/1.1/Thu Sep 18 10:17:44 2008//
+/regress-452346.js/1.1/Thu Sep 18 21:28:00 2008//
+/regress-452495.js/1.1/Thu Sep 18 08:10:01 2008//
+/regress-452573-01.js/1.1/Thu Sep 18 07:29:55 2008//
+/regress-452573-02.js/1.2/Thu Oct 2 16:59:16 2008//
+/regress-452713.js/1.1/Thu Sep 18 07:03:03 2008//
+/regress-452724-01.js/1.1/Thu Sep 18 06:46:40 2008//
+/regress-452724-02.js/1.1/Thu Sep 18 06:46:40 2008//
+/regress-452742-01.js/1.1/Fri Oct 17 21:14:38 2008//
+/regress-452742-02.js/1.1/Fri Oct 17 21:14:38 2008//
+/regress-452853.js/1.2/Wed Sep 17 10:39:48 2008//
+/regress-452884-01.js/1.2/Wed Sep 17 10:39:48 2008//
+/regress-452884-02.js/1.2/Wed Sep 17 10:39:48 2008//
+/regress-453024.js/1.1/Sun Oct 12 03:49:38 2008//
+/regress-453173.js/1.1/Wed Sep 17 13:58:20 2008//
+/regress-453397.js/1.1/Mon Sep 22 17:43:00 2008//
+/regress-453701.js/1.1/Wed Sep 17 14:01:40 2008//
+/regress-453747.js/1.1/Wed Sep 17 14:06:29 2008//
+/regress-454682.js/1.1/Sun Oct 12 03:49:38 2008//
+/regress-454981.js/1.1/Wed Sep 17 23:27:19 2008//
+/regress-455605.js/1.1/Sun Oct 12 03:49:38 2008//
+/regress-455748.js/1.1/Sun Oct 12 03:49:38 2008//
+/regress-455758-01.js/1.1/Mon Sep 22 17:37:53 2008//
+/regress-455758-02.js/1.1/Mon Sep 22 17:37:53 2008//
+/regress-455775.js/1.1/Sun Oct 12 03:49:38 2008//
+/regress-456470.js/1.1/Thu Dec 4 13:01:41 2008//
+/regress-456477-01.js/1.1/Sun Oct 12 03:49:38 2008//
+/regress-456477-02.js/1.1/Sun Oct 12 03:49:38 2008//
+/regress-456494.js/1.1/Fri Oct 17 21:14:38 2008//
+/regress-456540-01.js/1.1/Sun Oct 12 03:49:39 2008//
+/regress-456540-02.js/1.1/Sun Oct 12 03:49:39 2008//
+/regress-457065-03.js/1.1/Fri Mar 20 05:00:42 2009//
+/regress-457456.js/1.1/Sun Oct 12 03:49:39 2008//
+/regress-457778.js/1.1/Sun Oct 12 03:49:39 2008//
+/regress-458851.js/1.1/Tue Nov 11 21:04:33 2008//
+/regress-459085.js/1.1/Sun Oct 12 03:49:39 2008//
+/regress-459628.js/1.1/Tue Nov 11 21:04:33 2008//
+/regress-459990.js/1.1/Mon Oct 20 15:46:02 2008//
+/regress-460024.js/1.1/Tue Nov 11 21:04:33 2008//
+/regress-460117.js/1.1/Tue Nov 11 21:04:33 2008//
+/regress-460886-01.js/1.1/Mon Feb 22 18:53:43 2010//
+/regress-460886-02.js/1.1/Mon Feb 22 18:53:43 2010//
+/regress-461307.js/1.1/Tue Nov 11 21:04:33 2008//
+/regress-461723.js/1.1/Tue Nov 11 21:04:33 2008//
+/regress-462292.js/1.1/Tue Nov 11 21:04:33 2008//
+/regress-462879.js/1.1/Thu Dec 4 13:01:41 2008//
+/regress-462989.js/1.1/Tue Nov 11 21:04:33 2008//
+/regress-463259.js/1.1/Tue Nov 11 21:04:33 2008//
+/regress-463782.js/1.2/Fri Aug 7 23:53:51 2009//
+/regress-464334.js/1.1/Thu Dec 4 13:01:41 2008//
+/regress-464862.js/1.1/Wed Jan 28 16:53:16 2009//
+/regress-465013.js/1.1/Thu Dec 4 13:01:41 2008//
+/regress-465132.js/1.1/Sat Jan 24 13:07:06 2009//
+/regress-465133.js/1.1/Wed Jan 14 16:13:02 2009//
+/regress-465135.js/1.1/Thu Dec 4 13:01:41 2008//
+/regress-465136.js/1.1/Thu Dec 4 13:01:41 2008//
+/regress-465137.js/1.1/Thu Dec 4 13:01:41 2008//
+/regress-465262.js/1.1/Thu Dec 4 13:01:41 2008//
+/regress-465272.js/1.1/Thu Nov 27 11:33:47 2008//
+/regress-465347.js/1.1/Thu Nov 27 11:25:09 2008//
+/regress-465366.js/1.1/Wed Jan 14 16:13:02 2009//
+/regress-466262.js/1.1/Thu Nov 27 11:13:08 2008//
+/regress-466747.js/1.1/Sat Mar 14 22:48:20 2009//
+/regress-469044.js/1.1/Sat Feb 21 01:30:05 2009//
+/regress-470061.js/1.1/Sat Jan 24 13:07:06 2009//
+/regress-470187-01.js/1.1/Sat Feb 21 01:30:05 2009//
+/regress-470187-02.js/1.1/Sat Feb 21 01:30:05 2009//
+/regress-470758-01.js/1.1/Sat Jan 24 13:07:07 2009//
+/regress-470758-02.js/1.1/Sat Jan 24 13:07:08 2009//
+/regress-472533.js/1.1/Mon Feb 22 18:53:43 2010//
+/regress-475645-01.js/1.1/Sat Feb 21 01:30:05 2009//
+/regress-475645-02.js/1.1/Sat Feb 21 01:30:05 2009//
+/regress-476049.js/1.1/Fri Aug 7 23:49:58 2009//
+/regress-476192.js/1.2/Fri Aug 7 23:53:51 2009//
+/regress-477733.js/1.1/Fri Mar 20 05:00:42 2009//
+/regress-477758.js/1.1/Sat Feb 21 01:30:05 2009//
+/regress-478314.js/1.1/Sat Feb 21 01:30:05 2009//
+/regress-479353.js/1.1/Fri Mar 6 01:38:41 2009//
+/regress-480147.js/1.1/Sat Mar 14 22:48:20 2009//
+/regress-480244.js/1.1/Fri Mar 20 05:00:42 2009//
+/regress-481436.js/1.1/Tue Aug 18 08:54:34 2009//
+/regress-482421.js/1.1/Sat Mar 14 22:48:20 2009//
+/regress-482783.js/1.1/Mon Feb 22 18:53:43 2010//
+/regress-483103.js/1.1/Fri Mar 20 05:00:42 2009//
+/regress-501124.js/1.1/Tue Aug 18 09:00:44 2009//
+/regress-504078.js/1.1/Tue Aug 18 08:19:56 2009//
+/regress-506567.js/1.1/Tue Aug 18 08:28:36 2009//
+/regress-57043.js/1.5/Sat May 26 00:19:38 2007//
+/regress-58116.js/1.2/Sat May 26 00:19:38 2007//
+/regress-68498-001.js/1.6/Sat May 26 00:19:38 2007//
+/regress-68498-002.js/1.5/Sat May 26 00:19:38 2007//
+/regress-68498-003.js/1.5/Sat May 26 00:19:38 2007//
+/regress-68498-004.js/1.5/Sat May 26 00:19:38 2007//
+/regress-69607.js/1.5/Sat May 26 00:19:38 2007//
+/regress-71107.js/1.4/Sat May 26 00:19:38 2007//
+/regress-76054.js/1.5/Sat May 26 00:19:38 2007//
+/regress-80981.js/1.7/Sat May 26 00:19:38 2007//
+/regress-82306.js/1.6/Sat May 26 00:19:38 2007//
+/regress-89443.js/1.6/Sat May 26 00:19:38 2007//
+/regress-89474.js/1.6/Sat May 26 00:19:38 2007//
+/regress-90445.js/1.5/Sat May 26 00:19:38 2007//
+/regress-96128-n.js/1.5/Sat May 26 00:19:38 2007//
+/regress-96526-001.js/1.5/Sat May 26 00:19:38 2007//
+/regress-96526-002.js/1.5/Sat May 26 00:19:38 2007//
+/regress-96526-003.js/1.7/Sat May 26 00:19:38 2007//
+/regress-98901.js/1.2/Sat May 26 00:19:38 2007//
+/shell.js/1.2/Sat May 26 00:19:38 2007//
+D
diff --git a/testsrc/tests/js1_5/Regress/CVS/Repository b/testsrc/tests/js1_5/Regress/CVS/Repository
new file mode 100644
index 00000000..963d7412
--- /dev/null
+++ b/testsrc/tests/js1_5/Regress/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_5/Regress
diff --git a/testsrc/tests/js1_5/Regress/CVS/Root b/testsrc/tests/js1_5/Regress/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_5/Regress/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_5/Scope/CVS/Entries b/testsrc/tests/js1_5/Scope/CVS/Entries
new file mode 100644
index 00000000..8983e2c1
--- /dev/null
+++ b/testsrc/tests/js1_5/Scope/CVS/Entries
@@ -0,0 +1,20 @@
+/browser.js/1.1/Fri Mar 18 19:09:59 2005//
+/regress-154693.js/1.4/Sat May 26 00:19:39 2007//
+/regress-181834.js/1.7/Sat May 26 00:19:39 2007//
+/regress-184107.js/1.5/Sat May 26 00:19:39 2007//
+/regress-185485.js/1.7/Sat May 26 00:19:39 2007//
+/regress-191276.js/1.4/Sat May 26 00:19:39 2007//
+/regress-192226.js/1.4/Sat May 26 00:19:39 2007//
+/regress-202678-001.js/1.5/Sat May 26 00:19:39 2007//
+/regress-202678-002.js/1.5/Sat May 26 00:19:39 2007//
+/regress-208496-001.js/1.4/Sat May 26 00:19:39 2007//
+/regress-208496-002.js/1.4/Sat May 26 00:19:39 2007//
+/regress-220362.js/1.4/Sat May 26 00:19:39 2007//
+/regress-446026-01.js/1.1/Sat Jan 24 13:07:09 2009//
+/regress-446026-02.js/1.1/Sat Jan 24 13:07:10 2009//
+/regress-77578-001.js/1.5/Sat May 26 00:19:39 2007//
+/scope-002.js/1.5/Sat May 26 00:19:39 2007//
+/scope-003.js/1.6/Sat May 26 00:19:39 2007//
+/scope-004.js/1.4/Sat May 26 00:19:39 2007//
+/shell.js/1.2/Sat May 26 00:19:39 2007//
+D
diff --git a/testsrc/tests/js1_5/Scope/CVS/Repository b/testsrc/tests/js1_5/Scope/CVS/Repository
new file mode 100644
index 00000000..3bfb1327
--- /dev/null
+++ b/testsrc/tests/js1_5/Scope/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_5/Scope
diff --git a/testsrc/tests/js1_5/Scope/CVS/Root b/testsrc/tests/js1_5/Scope/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_5/Scope/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_5/String/CVS/Entries b/testsrc/tests/js1_5/String/CVS/Entries
new file mode 100644
index 00000000..7690cb01
--- /dev/null
+++ b/testsrc/tests/js1_5/String/CVS/Entries
@@ -0,0 +1,11 @@
+/browser.js/1.1/Fri Mar 18 19:09:59 2005//
+/regress-107771.js/1.5/Sat May 26 00:19:39 2007//
+/regress-112626.js/1.2/Sat May 26 00:19:39 2007//
+/regress-157334-01.js/1.6/Sat Feb 21 01:30:08 2009//
+/regress-179068.js/1.5/Sat May 26 00:19:39 2007//
+/regress-314890.js/1.3/Sat May 26 00:19:39 2007//
+/regress-322772.js/1.3/Sat May 26 00:19:39 2007//
+/regress-56940-01.js/1.4/Sat May 26 00:19:39 2007//
+/regress-56940-02.js/1.4/Sat May 26 00:19:39 2007//
+/shell.js/1.2/Sat May 26 00:19:39 2007//
+D
diff --git a/testsrc/tests/js1_5/String/CVS/Repository b/testsrc/tests/js1_5/String/CVS/Repository
new file mode 100644
index 00000000..be0a2ed2
--- /dev/null
+++ b/testsrc/tests/js1_5/String/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_5/String
diff --git a/testsrc/tests/js1_5/String/CVS/Root b/testsrc/tests/js1_5/String/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_5/String/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_5/decompilation/CVS/Entries b/testsrc/tests/js1_5/decompilation/CVS/Entries
new file mode 100644
index 00000000..89b396f9
--- /dev/null
+++ b/testsrc/tests/js1_5/decompilation/CVS/Entries
@@ -0,0 +1,67 @@
+/browser.js/1.1/Tue Mar 20 06:19:09 2007//
+/regress-344120.js/1.1/Wed May 30 17:42:50 2007//
+/regress-346892.js/1.2/Sat May 26 00:19:39 2007//
+/regress-346902.js/1.2/Sat May 26 00:19:39 2007//
+/regress-346904.js/1.2/Sat May 26 00:19:39 2007//
+/regress-346915.js/1.2/Sat May 26 00:19:39 2007//
+/regress-349484.js/1.2/Sat May 26 00:19:39 2007//
+/regress-349489.js/1.2/Sat May 26 00:19:39 2007//
+/regress-349491.js/1.2/Sat May 26 00:19:39 2007//
+/regress-349596.js/1.2/Sat May 26 00:19:39 2007//
+/regress-349650.js/1.2/Sat May 26 00:19:39 2007//
+/regress-349663.js/1.2/Sat May 26 00:19:39 2007//
+/regress-350242.js/1.2/Sat May 26 00:19:39 2007//
+/regress-350263.js/1.2/Sat May 26 00:19:39 2007//
+/regress-350271.js/1.2/Sat May 26 00:19:39 2007//
+/regress-350666.js/1.2/Sat May 26 00:19:39 2007//
+/regress-350670.js/1.2/Sat May 26 00:19:39 2007//
+/regress-351104.js/1.2/Sat May 26 00:19:39 2007//
+/regress-351219.js/1.2/Sat May 26 00:19:39 2007//
+/regress-351336.js/1.2/Sat May 26 00:19:39 2007//
+/regress-351597.js/1.2/Sat May 26 00:19:39 2007//
+/regress-351625.js/1.2/Sat May 26 00:19:39 2007//
+/regress-351626.js/1.2/Sat May 26 00:19:39 2007//
+/regress-351693.js/1.3/Sat Feb 21 01:30:09 2009//
+/regress-351705.js/1.2/Sat May 26 00:19:39 2007//
+/regress-351793.js/1.2/Sat May 26 00:19:39 2007//
+/regress-352013.js/1.2/Sat May 26 00:19:39 2007//
+/regress-352022.js/1.2/Sat May 26 00:19:39 2007//
+/regress-352073.js/1.3/Fri Apr 10 19:44:02 2009//
+/regress-352202.js/1.2/Sat May 26 00:19:39 2007//
+/regress-352312.js/1.2/Sat May 26 00:19:39 2007//
+/regress-352360.js/1.3/Sat May 26 00:19:39 2007//
+/regress-352375.js/1.2/Sat May 26 00:19:39 2007//
+/regress-352453.js/1.2/Sat May 26 00:19:39 2007//
+/regress-352649.js/1.2/Sat May 26 00:19:39 2007//
+/regress-352873-01.js/1.2/Sat May 26 00:19:39 2007//
+/regress-352873-02.js/1.2/Sat May 26 00:19:39 2007//
+/regress-353000.js/1.3/Sat Feb 21 01:30:09 2009//
+/regress-353120.js/1.2/Sat May 26 00:19:39 2007//
+/regress-353146.js/1.2/Sat May 26 00:19:39 2007//
+/regress-354878.js/1.2/Sat May 26 00:19:39 2007//
+/regress-354910.js/1.2/Sat May 26 00:19:39 2007//
+/regress-355992.js/1.2/Sat May 26 00:19:39 2007//
+/regress-356083.js/1.2/Sat May 26 00:19:39 2007//
+/regress-356248.js/1.2/Sat May 26 00:19:39 2007//
+/regress-371692.js/1.2/Sat May 26 00:19:39 2007//
+/regress-373678.js/1.2/Sat May 26 00:19:39 2007//
+/regress-375639.js/1.1/Wed Sep 19 07:01:30 2007//
+/regress-375882.js/1.2/Sat May 26 00:19:39 2007//
+/regress-376564.js/1.2/Sat May 26 00:19:39 2007//
+/regress-383721.js/1.1/Thu Jun 14 21:32:09 2007//
+/regress-406555.js/1.1/Thu Feb 7 13:37:06 2008//
+/regress-437288-02.js/1.1/Fri Sep 26 07:23:05 2008//
+/regress-443071-01.js/1.1/Wed Jan 14 16:13:03 2009//
+/regress-456964-01.js/1.1/Fri Sep 26 07:51:50 2008//
+/regress-457093-01.js/1.1/Fri Sep 26 08:08:01 2008//
+/regress-457824.js/1.1/Sun Oct 12 03:49:40 2008//
+/regress-460116-01.js/1.1/Mon Oct 20 15:46:04 2008//
+/regress-460116-02.js/1.1/Mon Oct 20 15:46:04 2008//
+/regress-460116-03.js/1.1/Mon Oct 20 15:46:04 2008//
+/regress-460501.js/1.1/Tue Nov 11 21:04:38 2008//
+/regress-460870.js/1.1/Thu Dec 4 13:01:52 2008//
+/regress-461108.js/1.1/Tue Nov 11 21:04:38 2008//
+/regress-461110.js/1.1/Tue Nov 11 21:04:38 2008//
+/regress-461111.js/1.1/Tue Nov 11 21:04:38 2008//
+/shell.js/1.2/Sat May 26 00:19:39 2007//
+D
diff --git a/testsrc/tests/js1_5/decompilation/CVS/Repository b/testsrc/tests/js1_5/decompilation/CVS/Repository
new file mode 100644
index 00000000..8fbe7ad0
--- /dev/null
+++ b/testsrc/tests/js1_5/decompilation/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_5/decompilation
diff --git a/testsrc/tests/js1_5/decompilation/CVS/Root b/testsrc/tests/js1_5/decompilation/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_5/decompilation/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_5/extensions/CVS/Entries b/testsrc/tests/js1_5/extensions/CVS/Entries
new file mode 100644
index 00000000..33a49cc3
--- /dev/null
+++ b/testsrc/tests/js1_5/extensions/CVS/Entries
@@ -0,0 +1,246 @@
+/browser.js/1.1/Fri Feb 9 00:00:52 2007//
+/catchguard-001-n.js/1.2/Sat May 26 00:19:39 2007//
+/catchguard-001.js/1.2/Sat May 26 00:19:39 2007//
+/catchguard-002.js/1.2/Sat May 26 00:19:39 2007//
+/catchguard-003.js/1.2/Sat May 26 00:19:39 2007//
+/getset-001.js/1.2/Sat May 26 00:19:39 2007//
+/getset-003.js/1.2/Sat May 26 00:19:39 2007//
+/getset-004.js/1.2/Sat May 26 00:19:39 2007//
+/getset-005.js/1.2/Sat May 26 00:19:39 2007//
+/getset-006.js/1.2/Sat May 26 00:19:39 2007//
+/no-such-method.js/1.2/Sat May 26 00:19:39 2007//
+/regress-104077.js/1.2/Sat May 26 00:19:39 2007//
+/regress-164697.js/1.2/Sat May 26 00:19:39 2007//
+/regress-178722.js/1.2/Sat May 26 00:19:39 2007//
+/regress-192465.js/1.2/Sat May 26 00:19:39 2007//
+/regress-220584.js/1.3/Sat May 26 00:19:39 2007//
+/regress-225831.js/1.2/Sat May 26 00:19:39 2007//
+/regress-226078.js/1.2/Sat May 26 00:19:39 2007//
+/regress-226507.js/1.3/Thu Apr 10 20:58:06 2008//
+/regress-231518.js/1.2/Sat May 26 00:19:39 2007//
+/regress-237461.js/1.2/Sat May 26 00:19:39 2007//
+/regress-245148.js/1.2/Sat May 26 00:19:39 2007//
+/regress-245795.js/1.2/Sat May 26 00:19:39 2007//
+/regress-254375.js/1.2/Sat May 26 00:19:39 2007//
+/regress-255245.js/1.2/Sat May 26 00:19:39 2007//
+/regress-291213.js/1.2/Sat May 26 00:19:39 2007//
+/regress-300079.js/1.1/Fri Mar 6 01:38:50 2009//
+/regress-303277.js/1.2/Sat May 26 00:19:39 2007//
+/regress-304897.js/1.2/Sat May 26 00:19:39 2007//
+/regress-306738.js/1.2/Sat May 26 00:19:39 2007//
+/regress-311161.js/1.2/Sat May 26 00:19:39 2007//
+/regress-311583.js/1.2/Sat May 26 00:19:39 2007//
+/regress-311792-01.js/1.2/Sat May 26 00:19:39 2007//
+/regress-311792-02.js/1.2/Sat May 26 00:19:39 2007//
+/regress-312278.js/1.2/Sat May 26 00:19:39 2007//
+/regress-313500.js/1.2/Sat May 26 00:19:39 2007//
+/regress-313630.js/1.2/Sat May 26 00:19:39 2007//
+/regress-313763.js/1.2/Sat May 26 00:19:39 2007//
+/regress-313803.js/1.2/Sat May 26 00:19:39 2007//
+/regress-313938.js/1.3/Sat May 26 00:19:39 2007//
+/regress-314874.js/1.2/Sat May 26 00:19:39 2007//
+/regress-315509-02.js/1.2/Sat May 26 00:19:39 2007//
+/regress-319683.js/1.2/Sat May 26 00:19:39 2007//
+/regress-322957.js/1.2/Sat May 26 00:19:39 2007//
+/regress-325269.js/1.3/Tue Dec 4 18:16:43 2007//
+/regress-327608.js/1.2/Sat May 26 00:19:39 2007//
+/regress-328443.js/1.2/Sat May 26 00:19:39 2007//
+/regress-328556.js/1.2/Sat May 26 00:19:39 2007//
+/regress-330569.js/1.3/Sat May 26 00:19:39 2007//
+/regress-333541.js/1.3/Wed Aug 27 17:23:16 2008//
+/regress-335700.js/1.2/Sat May 26 00:19:39 2007//
+/regress-336409-1.js/1.3/Thu Apr 10 20:23:43 2008//
+/regress-336409-2.js/1.3/Thu Apr 10 20:23:43 2008//
+/regress-336410-1.js/1.3/Thu Apr 10 20:23:43 2008//
+/regress-336410-2.js/1.3/Thu Apr 10 20:23:43 2008//
+/regress-338804-01.js/1.3/Sat May 26 00:19:39 2007//
+/regress-338804-02.js/1.3/Sat May 26 00:19:39 2007//
+/regress-338804-03.js/1.2/Sat May 26 00:19:39 2007//
+/regress-339685.js/1.2/Sat May 26 00:19:39 2007//
+/regress-340199.js/1.3/Tue May 29 21:59:13 2007//
+/regress-341956-01.js/1.2/Sat May 26 00:19:39 2007//
+/regress-341956-02.js/1.2/Sat May 26 00:19:39 2007//
+/regress-341956-03.js/1.2/Sat May 26 00:19:39 2007//
+/regress-342960.js/1.4/Tue May 5 12:04:01 2009//
+/regress-345967.js/1.2/Sat May 26 00:19:39 2007//
+/regress-346494-01.js/1.2/Sat May 26 00:19:39 2007//
+/regress-346494.js/1.2/Sat May 26 00:19:39 2007//
+/regress-347306-02.js/1.2/Sat May 26 00:19:39 2007//
+/regress-348986.js/1.2/Sat May 26 00:19:39 2007//
+/regress-349616.js/1.2/Sat May 26 00:19:39 2007//
+/regress-350312-01.js/1.2/Sat May 26 00:19:39 2007//
+/regress-350312-02.js/1.2/Sat May 26 00:19:39 2007//
+/regress-350312-03.js/1.2/Sat May 26 00:19:39 2007//
+/regress-350531.js/1.3/Sat May 26 00:19:39 2007//
+/regress-351102-01.js/1.1/Thu Jun 14 22:23:38 2007//
+/regress-351102-02.js/1.1/Thu Jun 14 22:23:38 2007//
+/regress-351102-06.js/1.1/Thu Jun 14 22:23:38 2007//
+/regress-351448.js/1.3/Sat May 26 00:19:39 2007//
+/regress-351463-01.js/1.1/Thu Jan 3 04:53:12 2008//
+/regress-351973.js/1.2/Sat May 26 00:19:39 2007//
+/regress-352060.js/1.2/Sat May 26 00:19:39 2007//
+/regress-352094.js/1.2/Sat May 26 00:19:39 2007//
+/regress-352261.js/1.2/Sat May 26 00:19:39 2007//
+/regress-352281.js/1.2/Sat May 26 00:19:39 2007//
+/regress-352291.js/1.1/Wed Jan 9 03:42:01 2008//
+/regress-352372.js/1.2/Sat May 26 00:19:39 2007//
+/regress-352455.js/1.2/Sat May 26 00:19:39 2007//
+/regress-352604.js/1.1/Wed Apr 16 14:38:40 2008//
+/regress-353214.js/1.3/Tue May 29 22:05:11 2007//
+/regress-354297.js/1.2/Sat May 26 00:19:39 2007//
+/regress-354541-01.js/1.2/Sat May 26 00:19:39 2007//
+/regress-354541-02.js/1.2/Sat May 26 00:19:39 2007//
+/regress-354541-03.js/1.3/Sat May 26 00:19:39 2007//
+/regress-354541-04.js/1.3/Sat May 26 00:19:39 2007//
+/regress-355339.js/1.3/Thu Jul 12 17:49:31 2007//
+/regress-355497.js/1.2/Sat May 26 00:19:39 2007//
+/regress-355622.js/1.1/Thu Feb 7 13:39:53 2008//
+/regress-355655.js/1.1/Thu Jun 14 22:27:17 2007//
+/regress-355736.js/1.3/Sat May 26 00:19:39 2007//
+/regress-355820.js/1.2/Sat May 26 00:19:39 2007//
+/regress-355982.js/1.2/Sat May 26 00:19:39 2007//
+/regress-356085.js/1.2/Sat May 26 00:19:39 2007//
+/regress-356106.js/1.1/Thu Feb 7 13:42:23 2008//
+/regress-356378.js/1.1/Thu Jul 3 14:32:34 2008//
+/regress-356402.js/1.4/Thu Jul 12 17:49:31 2007//
+/regress-358594-01.js/1.1/Fri Sep 21 14:39:09 2007//
+/regress-358594-02.js/1.1/Fri Sep 21 14:39:09 2007//
+/regress-358594-03.js/1.1/Fri Sep 21 14:39:09 2007//
+/regress-358594-04.js/1.1/Fri Sep 21 14:39:09 2007//
+/regress-358594-05.js/1.1/Fri Sep 21 14:39:09 2007//
+/regress-358594-06.js/1.1/Fri Sep 21 14:39:09 2007//
+/regress-359024.js/1.1/Fri Oct 17 21:14:39 2008//
+/regress-361346.js/1.2/Sat May 26 00:19:39 2007//
+/regress-361360.js/1.3/Thu Jul 12 17:49:31 2007//
+/regress-361552.js/1.3/Sat May 26 00:19:39 2007//
+/regress-361558.js/1.3/Thu Jul 12 17:49:31 2007//
+/regress-361571.js/1.4/Thu Jul 12 17:49:31 2007//
+/regress-361856.js/1.3/Thu Jul 12 17:49:31 2007//
+/regress-361964.js/1.2/Sat May 26 00:19:40 2007//
+/regress-363258.js/1.1/Sun Aug 5 17:39:44 2007//
+/regress-363988.js/1.2/Sat May 26 00:19:40 2007//
+/regress-365527.js/1.2/Sat May 26 00:19:40 2007//
+/regress-365692.js/1.1/Wed Aug 8 14:48:57 2007//
+/regress-365869.js/1.6/Wed Jun 25 14:45:46 2008//
+/regress-366288.js/1.2/Sat May 26 00:19:40 2007//
+/regress-366292.js/1.2/Sat May 26 00:19:40 2007//
+/regress-366396.js/1.2/Sat May 26 00:19:40 2007//
+/regress-367118-01.js/1.2/Sat May 26 00:19:40 2007//
+/regress-367118-02.js/1.2/Sat May 26 00:19:40 2007//
+/regress-367119-01.js/1.2/Sat May 26 00:19:40 2007//
+/regress-367119-02.js/1.2/Sat May 26 00:19:40 2007//
+/regress-367120-01.js/1.2/Sat May 26 00:19:40 2007//
+/regress-367120-02.js/1.2/Sat May 26 00:19:40 2007//
+/regress-367121.js/1.2/Fri Feb 8 20:51:08 2008//
+/regress-367501-01.js/1.1/Wed Aug 8 15:05:08 2007//
+/regress-367501-02.js/1.1/Wed Aug 8 15:05:08 2007//
+/regress-367501-03.js/1.1/Wed Aug 8 15:05:08 2007//
+/regress-367501-04.js/1.1/Wed Aug 8 15:05:08 2007//
+/regress-367589.js/1.3/Fri Dec 14 16:37:02 2007//
+/regress-367630.js/1.1/Thu Jun 14 22:31:17 2007//
+/regress-367923.js/1.4/Thu Apr 10 21:24:09 2008//
+/regress-368859.js/1.2/Sat May 26 00:19:40 2007//
+/regress-369404.js/1.4/Fri Dec 14 16:35:17 2007//
+/regress-369696-01.js/1.1/Tue Aug 18 08:33:56 2009//
+/regress-369696-02.js/1.1/Tue Aug 18 08:33:56 2009//
+/regress-369696-03.js/1.1/Tue Aug 18 08:33:56 2009//
+/regress-371636.js/1.1/Mon Dec 10 15:28:00 2007//
+/regress-372309.js/1.1/Fri Sep 21 14:12:07 2007//
+/regress-374589.js/1.2/Sat May 26 00:19:40 2007//
+/regress-375183.js/1.2/Sat Feb 21 01:30:09 2009//
+/regress-375344.js/1.1/Tue Mar 25 11:53:08 2008//
+/regress-375801.js/1.1/Thu Jun 14 21:50:12 2007//
+/regress-376052.js/1.2/Sat May 26 00:19:40 2007//
+/regress-379523.js/1.1/Thu Feb 7 13:44:32 2008//
+/regress-380581.js/1.2/Tue May 29 22:41:06 2007//
+/regress-380831.js/1.1/Fri Jun 15 18:46:59 2007//
+/regress-380889.js/1.1/Sat May 26 13:25:11 2007//
+/regress-381205.js/1.3/Thu May 31 18:31:12 2007//
+/regress-381211.js/1.1/Sat May 26 13:00:49 2007//
+/regress-381304.js/1.1/Thu Feb 7 13:46:59 2008//
+/regress-382509.js/1.2/Thu Apr 10 21:24:09 2008//
+/regress-383965.js/1.1/Thu Jun 14 03:38:15 2007//
+/regress-384680.js/1.1/Fri Jul 13 02:26:26 2007//
+/regress-385134.js/1.1/Fri Jul 13 02:08:24 2007//
+/regress-385393-02.js/1.1/Fri Aug 10 21:41:57 2007//
+/regress-385393-09.js/1.1/Fri Aug 10 21:41:57 2007//
+/regress-390597.js/1.1/Sat Mar 29 22:59:26 2008//
+/regress-390598.js/1.1/Mon Feb 22 18:53:44 2010//
+/regress-394967.js/1.1/Fri Sep 21 14:45:48 2007//
+/regress-396326.js/1.1/Mon Sep 17 02:48:24 2007//
+/regress-406572.js/1.1/Tue Mar 25 11:48:39 2008//
+/regress-407019.js/1.1/Tue Mar 25 11:46:29 2008//
+/regress-407501.js/1.1/Thu Dec 13 23:15:05 2007//
+/regress-407720.js/1.1/Tue Mar 25 11:43:46 2008//
+/regress-412926.js/1.1/Sat Mar 29 23:03:04 2008//
+/regress-414755.js/1.1/Sat Mar 29 23:05:12 2008//
+/regress-416354.js/1.1/Sat Mar 29 23:07:16 2008//
+/regress-416460.js/1.1/Mon Feb 18 10:21:39 2008//
+/regress-416834.js/1.1/Sun Apr 13 10:55:07 2008//
+/regress-418730.js/1.1/Sat Apr 5 07:44:23 2008//
+/regress-420612.js/1.2/Mon Mar 10 21:24:35 2008//
+/regress-420869-01.js/1.2/Sat Feb 21 01:30:09 2009//
+/regress-421621.js/1.1/Sun Oct 12 03:49:41 2008//
+/regress-422137.js/1.1/Fri Apr 25 21:10:45 2008//
+/regress-422592.js/1.1/Thu Jul 3 14:44:56 2008//
+/regress-424257.js/1.1/Wed Apr 16 15:22:55 2008//
+/regress-424683-01.js/1.2/Thu Apr 10 19:23:12 2008//
+/regress-426711.js/1.1/Sat Apr 12 15:28:44 2008//
+/regress-427196-01.js/1.1/Tue Aug 18 08:40:07 2009//
+/regress-427196-02.js/1.1/Tue Aug 18 08:40:07 2009//
+/regress-427196-03.js/1.1/Tue Aug 18 08:40:07 2009//
+/regress-429264.js/1.1/Sat Apr 26 00:02:29 2008//
+/regress-429739.js/1.1/Mon Feb 22 18:53:44 2010//
+/regress-431428.js/1.1/Wed Apr 30 12:41:59 2008//
+/regress-432075.js/1.1/Sun Oct 12 03:49:41 2008//
+/regress-434837-01.js/1.2/Tue Jan 20 10:41:32 2009//
+/regress-435345-01.js/1.1/Thu Aug 7 04:57:07 2008//
+/regress-435497-01.js/1.1/Sun Oct 12 03:49:41 2008//
+/regress-435497-02.js/1.1/Sun Oct 12 03:49:41 2008//
+/regress-435497-03.js/1.1/Sun Oct 12 03:49:41 2008//
+/regress-436741.js/1.1/Thu Dec 4 13:01:53 2008//
+/regress-437288-01.js/1.1/Fri Sep 26 07:23:02 2008//
+/regress-44009.js/1.2/Sat May 26 00:19:40 2007//
+/regress-443569.js/1.2/Thu Oct 2 16:59:17 2008//
+/regress-446386.js/1.1/Fri Oct 17 21:14:39 2008//
+/regress-449657.js/1.1/Fri Mar 6 01:38:51 2009//
+/regress-452168.js/1.2/Sun Sep 21 19:44:13 2008//
+/regress-452178.js/1.2/Sat Feb 21 01:30:09 2009//
+/regress-452329.js/1.1/Thu Sep 18 16:48:36 2008//
+/regress-452338.js/1.1/Thu Sep 18 10:09:18 2008//
+/regress-452372.js/1.1/Thu Sep 18 08:54:13 2008//
+/regress-452565.js/1.1/Thu Sep 18 07:43:15 2008//
+/regress-453249.js/1.1/Thu Sep 18 06:09:15 2008//
+/regress-454040.js/1.1/Fri Oct 17 21:14:39 2008//
+/regress-454142.js/1.1/Wed Jan 14 16:13:07 2009//
+/regress-454704.js/1.1/Tue Aug 18 08:42:22 2009//
+/regress-455380.js/1.1/Wed Sep 17 21:22:19 2008//
+/regress-455408.js/1.1/Wed Sep 17 19:02:02 2008//
+/regress-455413.js/1.1/Sun Oct 12 03:49:41 2008//
+/regress-459606.js/1.1/Mon Oct 20 15:46:07 2008//
+/regress-462734-02.js/1.1/Fri Aug 7 21:28:28 2009//
+/regress-462734-03.js/1.1/Fri Aug 7 21:28:28 2009//
+/regress-462734-04.js/1.1/Fri Aug 7 21:28:28 2009//
+/regress-465145.js/1.1/Mon Feb 22 18:53:44 2010//
+/regress-465276.js/1.1/Thu Nov 27 11:32:03 2008//
+/regress-469625.js/1.1/Fri Mar 6 01:38:51 2009//
+/regress-469761.js/1.1/Fri Mar 6 01:38:51 2009//
+/regress-472599.js/1.1/Wed Jan 28 16:53:53 2009//
+/regress-472787.js/1.1/Fri Mar 6 01:38:51 2009//
+/regress-476447.js/1.1/Sat Feb 21 01:30:09 2009//
+/regress-479487.js/1.1/Fri Mar 20 05:00:44 2009//
+/regress-479551.js/1.1/Fri Mar 20 05:00:43 2009//
+/regress-480579.js/1.1/Fri Mar 20 05:00:43 2009//
+/regress-481516.js/1.1/Fri Mar 20 05:00:43 2009//
+/regress-488995.js/1.1/Tue Aug 18 08:58:46 2009//
+/regress-50447-1.js/1.3/Sat May 26 00:19:40 2007//
+/regress-50447.js/1.2/Sat May 26 00:19:40 2007//
+/regress-90596-001.js/1.2/Sat May 26 00:19:40 2007//
+/regress-90596-002.js/1.2/Sat May 26 00:19:40 2007//
+/regress-96284-001.js/1.2/Sat May 26 00:19:40 2007//
+/regress-96284-002.js/1.2/Sat May 26 00:19:40 2007//
+/scope-001.js/1.2/Sat May 26 00:19:40 2007//
+/shell.js/1.2/Sat May 26 00:19:40 2007//
+/toLocaleFormat-01.js/1.1/Thu Oct 11 00:47:10 2007//
+/toLocaleFormat-02.js/1.2/Thu Apr 10 19:29:11 2008//
+D
diff --git a/testsrc/tests/js1_5/extensions/CVS/Repository b/testsrc/tests/js1_5/extensions/CVS/Repository
new file mode 100644
index 00000000..79a59a5e
--- /dev/null
+++ b/testsrc/tests/js1_5/extensions/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_5/extensions
diff --git a/testsrc/tests/js1_5/extensions/CVS/Root b/testsrc/tests/js1_5/extensions/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_5/extensions/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_5/extensions/regress-226507.js b/testsrc/tests/js1_5/extensions/regress-226507.js
index fc020cfc..3cf0e866 100755
--- a/testsrc/tests/js1_5/extensions/regress-226507.js
+++ b/testsrc/tests/js1_5/extensions/regress-226507.js
@@ -55,10 +55,8 @@ var expectedvalues = [];
/*
* With stack limit 100K on Linux debug build even N=30 already can cause
* stack overflow; use 35 to trigger it for sure.
- * But we need to trigger this consistently but not a Java exception, so back
- * to 35.
*/
-var N = 35;
+var N = 350;
var counter = 0;
function f()
diff --git a/testsrc/tests/js1_6/Array/CVS/Entries b/testsrc/tests/js1_6/Array/CVS/Entries
new file mode 100644
index 00000000..005aefb7
--- /dev/null
+++ b/testsrc/tests/js1_6/Array/CVS/Entries
@@ -0,0 +1,15 @@
+/browser.js/1.2/Mon Oct 30 16:48:36 2006//
+/filter.js/1.3/Sat May 26 00:19:40 2007//
+/regress-290592.js/1.2/Sat May 26 00:19:40 2007//
+/regress-304828.js/1.2/Sat May 26 00:19:40 2007//
+/regress-305002.js/1.2/Sat May 26 00:19:40 2007//
+/regress-310425-01.js/1.2/Sat May 26 00:19:40 2007//
+/regress-310425-02.js/1.3/Sat May 26 00:19:40 2007//
+/regress-320887.js/1.2/Sat May 26 00:19:40 2007//
+/regress-352742-01.js/1.3/Sat May 26 00:19:40 2007//
+/regress-352742-02.js/1.3/Sat May 26 00:19:40 2007//
+/regress-386030.js/1.1/Fri Jul 13 01:13:41 2007//
+/regress-415451.js/1.1/Tue Feb 5 21:52:34 2008//
+/regress-415540.js/1.1/Mon Feb 11 16:55:10 2008//
+/shell.js/1.3/Sat May 26 00:19:40 2007//
+D
diff --git a/testsrc/tests/js1_6/Array/CVS/Repository b/testsrc/tests/js1_6/Array/CVS/Repository
new file mode 100644
index 00000000..d064a37f
--- /dev/null
+++ b/testsrc/tests/js1_6/Array/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_6/Array
diff --git a/testsrc/tests/js1_6/Array/CVS/Root b/testsrc/tests/js1_6/Array/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_6/Array/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_6/CVS/Entries b/testsrc/tests/js1_6/CVS/Entries
new file mode 100644
index 00000000..42aef4c7
--- /dev/null
+++ b/testsrc/tests/js1_6/CVS/Entries
@@ -0,0 +1,5 @@
+/README/1.1/Sun Oct 9 23:24:21 2005//
+/browser.js/1.14/Sat May 19 20:05:07 2007//
+/shell.js/1.21/Wed Aug 13 12:16:59 2008//
+/template.js/1.5/Wed Aug 13 12:10:56 2008//
+D
diff --git a/testsrc/tests/js1_6/CVS/Entries.Log b/testsrc/tests/js1_6/CVS/Entries.Log
new file mode 100644
index 00000000..82ac9ac1
--- /dev/null
+++ b/testsrc/tests/js1_6/CVS/Entries.Log
@@ -0,0 +1,5 @@
+A D/Array////
+A D/Regress////
+A D/String////
+A D/decompilation////
+A D/extensions////
diff --git a/testsrc/tests/js1_6/CVS/Repository b/testsrc/tests/js1_6/CVS/Repository
new file mode 100644
index 00000000..56af7678
--- /dev/null
+++ b/testsrc/tests/js1_6/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_6
diff --git a/testsrc/tests/js1_6/CVS/Root b/testsrc/tests/js1_6/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_6/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_6/Regress/CVS/Entries b/testsrc/tests/js1_6/Regress/CVS/Entries
new file mode 100644
index 00000000..84193c1a
--- /dev/null
+++ b/testsrc/tests/js1_6/Regress/CVS/Entries
@@ -0,0 +1,18 @@
+/browser.js/1.2/Mon Oct 30 16:48:36 2006//
+/regress-301574.js/1.4/Sat May 26 00:19:40 2007//
+/regress-311157-01.js/1.2/Sat May 26 00:19:40 2007//
+/regress-311157-02.js/1.2/Sat May 26 00:19:40 2007//
+/regress-314887.js/1.2/Sat May 26 00:19:40 2007//
+/regress-320172.js/1.2/Sat May 26 00:19:40 2007//
+/regress-350417.js/1.2/Sat May 26 00:19:40 2007//
+/regress-351795.js/1.1/Thu Feb 7 14:10:49 2008//
+/regress-352271.js/1.2/Sat May 26 00:19:40 2007//
+/regress-353078.js/1.3/Tue Aug 18 08:09:36 2009//
+/regress-355002.js/1.2/Sat May 26 00:19:40 2007//
+/regress-372565.js/1.4/Thu Jul 12 17:49:31 2007//
+/regress-378492.js/1.2/Sat May 26 00:19:40 2007//
+/regress-382509.js/1.2/Wed Jun 13 20:51:06 2007//
+/regress-475469.js/1.1/Fri Mar 6 01:38:52 2009//
+/regress-476655.js/1.1/Fri Mar 20 05:01:03 2009//
+/shell.js/1.3/Sat May 26 00:19:40 2007//
+D
diff --git a/testsrc/tests/js1_6/Regress/CVS/Repository b/testsrc/tests/js1_6/Regress/CVS/Repository
new file mode 100644
index 00000000..b3a535f9
--- /dev/null
+++ b/testsrc/tests/js1_6/Regress/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_6/Regress
diff --git a/testsrc/tests/js1_6/Regress/CVS/Root b/testsrc/tests/js1_6/Regress/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_6/Regress/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_6/String/CVS/Entries b/testsrc/tests/js1_6/String/CVS/Entries
new file mode 100644
index 00000000..e8ba0ac3
--- /dev/null
+++ b/testsrc/tests/js1_6/String/CVS/Entries
@@ -0,0 +1,4 @@
+/browser.js/1.2/Mon Oct 30 16:48:37 2006//
+/regress-306591.js/1.3/Sat May 26 00:19:40 2007//
+/shell.js/1.3/Sat May 26 00:19:40 2007//
+D
diff --git a/testsrc/tests/js1_6/String/CVS/Repository b/testsrc/tests/js1_6/String/CVS/Repository
new file mode 100644
index 00000000..bb523db4
--- /dev/null
+++ b/testsrc/tests/js1_6/String/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_6/String
diff --git a/testsrc/tests/js1_6/String/CVS/Root b/testsrc/tests/js1_6/String/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_6/String/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_6/decompilation/CVS/Entries b/testsrc/tests/js1_6/decompilation/CVS/Entries
new file mode 100644
index 00000000..b6b65e09
--- /dev/null
+++ b/testsrc/tests/js1_6/decompilation/CVS/Entries
@@ -0,0 +1,6 @@
+/browser.js/1.1/Sun May 6 23:27:00 2007//
+/regress-352084.js/1.2/Sat May 26 00:19:40 2007//
+/regress-352613-01.js/1.2/Sat May 26 00:19:40 2007//
+/regress-352613-02.js/1.2/Sat May 26 00:19:40 2007//
+/shell.js/1.2/Sat May 26 00:19:40 2007//
+D
diff --git a/testsrc/tests/js1_6/decompilation/CVS/Repository b/testsrc/tests/js1_6/decompilation/CVS/Repository
new file mode 100644
index 00000000..3d7ca791
--- /dev/null
+++ b/testsrc/tests/js1_6/decompilation/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_6/decompilation
diff --git a/testsrc/tests/js1_6/decompilation/CVS/Root b/testsrc/tests/js1_6/decompilation/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_6/decompilation/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_6/extensions/CVS/Entries b/testsrc/tests/js1_6/extensions/CVS/Entries
new file mode 100644
index 00000000..8e11e29b
--- /dev/null
+++ b/testsrc/tests/js1_6/extensions/CVS/Entries
@@ -0,0 +1,18 @@
+/browser.js/1.1/Fri Feb 9 00:00:52 2007//
+/regress-312385-01.js/1.2/Sat May 26 00:19:41 2007//
+/regress-352392.js/1.2/Sat May 26 00:19:41 2007//
+/regress-385393-08.js/1.1/Fri Aug 10 21:41:58 2007//
+/regress-414098.js/1.2/Sat Feb 21 01:30:12 2009//
+/regress-455464-01.js/1.1/Wed Sep 17 18:34:45 2008//
+/regress-455464-02.js/1.1/Wed Sep 17 18:34:45 2008//
+/regress-455464-03.js/1.1/Wed Sep 17 18:34:45 2008//
+/regress-455464-04.js/1.3/Sat Feb 21 01:30:12 2009//
+/regress-456826.js/1.1/Sun Oct 12 03:49:42 2008//
+/regress-457521.js/1.1/Fri Mar 6 01:38:53 2009//
+/regress-465443.js/1.2/Sat Feb 21 01:30:12 2009//
+/regress-470310.js/1.1/Sat Feb 21 01:30:12 2009//
+/regress-472508.js/1.1/Fri Mar 6 01:38:53 2009//
+/regress-475144.js/1.1/Fri Mar 6 01:38:53 2009//
+/regress-479567.js/1.1/Mon Feb 22 18:53:44 2010//
+/shell.js/1.2/Sat May 26 00:19:41 2007//
+D
diff --git a/testsrc/tests/js1_6/extensions/CVS/Repository b/testsrc/tests/js1_6/extensions/CVS/Repository
new file mode 100644
index 00000000..71067e6d
--- /dev/null
+++ b/testsrc/tests/js1_6/extensions/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_6/extensions
diff --git a/testsrc/tests/js1_6/extensions/CVS/Root b/testsrc/tests/js1_6/extensions/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_6/extensions/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_7/CVS/Entries b/testsrc/tests/js1_7/CVS/Entries
new file mode 100644
index 00000000..42ab193b
--- /dev/null
+++ b/testsrc/tests/js1_7/CVS/Entries
@@ -0,0 +1,5 @@
+/README/1.1/Wed Jun 14 18:03:48 2006//
+/browser.js/1.9/Sat May 19 20:05:07 2007//
+/shell.js/1.15/Wed Aug 13 12:16:59 2008//
+/template.js/1.4/Wed Aug 13 12:10:56 2008//
+D
diff --git a/testsrc/tests/js1_7/CVS/Entries.Log b/testsrc/tests/js1_7/CVS/Entries.Log
new file mode 100644
index 00000000..ec5d8b72
--- /dev/null
+++ b/testsrc/tests/js1_7/CVS/Entries.Log
@@ -0,0 +1,10 @@
+A D/GC////
+A D/block////
+A D/decompilation////
+A D/expressions////
+A D/extensions////
+A D/geniter////
+A D/iterable////
+A D/lexical////
+A D/regexp////
+A D/regress////
diff --git a/testsrc/tests/js1_7/CVS/Repository b/testsrc/tests/js1_7/CVS/Repository
new file mode 100644
index 00000000..93830cf4
--- /dev/null
+++ b/testsrc/tests/js1_7/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_7
diff --git a/testsrc/tests/js1_7/CVS/Root b/testsrc/tests/js1_7/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_7/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_7/GC/CVS/Entries b/testsrc/tests/js1_7/GC/CVS/Entries
new file mode 100644
index 00000000..ace3550b
--- /dev/null
+++ b/testsrc/tests/js1_7/GC/CVS/Entries
@@ -0,0 +1,5 @@
+/browser.js/1.1/Sat Jun 17 04:54:08 2006//
+/regress-341675.js/1.3/Sat May 26 00:19:41 2007//
+/regress-381374.js/1.1/Fri Sep 21 14:48:55 2007//
+/shell.js/1.2/Sat May 26 00:19:41 2007//
+D
diff --git a/testsrc/tests/js1_7/GC/CVS/Repository b/testsrc/tests/js1_7/GC/CVS/Repository
new file mode 100644
index 00000000..b06338e1
--- /dev/null
+++ b/testsrc/tests/js1_7/GC/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_7/GC
diff --git a/testsrc/tests/js1_7/GC/CVS/Root b/testsrc/tests/js1_7/GC/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_7/GC/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_7/block/CVS/Entries b/testsrc/tests/js1_7/block/CVS/Entries
new file mode 100644
index 00000000..b1931913
--- /dev/null
+++ b/testsrc/tests/js1_7/block/CVS/Entries
@@ -0,0 +1,39 @@
+/browser.js/1.1/Fri Jun 23 03:05:07 2006//
+/order-of-operation.js/1.4/Tue Aug 18 07:48:18 2009//
+/regress-341939.js/1.4/Sat May 26 00:19:41 2007//
+/regress-343765.js/1.3/Sat May 26 00:19:41 2007//
+/regress-344139.js/1.2/Sat May 26 00:19:41 2007//
+/regress-344262.js/1.3/Sat May 26 00:19:41 2007//
+/regress-344370.js/1.2/Sat May 26 00:19:41 2007//
+/regress-344601.js/1.2/Sat May 26 00:19:41 2007//
+/regress-345542.js/1.2/Sat May 26 00:19:41 2007//
+/regress-347559.js/1.5/Thu Apr 10 21:24:10 2008//
+/regress-348685.js/1.4/Wed Jul 18 19:59:20 2007//
+/regress-349283.js/1.2/Sat May 26 00:19:41 2007//
+/regress-349298.js/1.5/Sat Feb 21 01:30:13 2009//
+/regress-349507.js/1.4/Wed Jul 18 19:59:21 2007//
+/regress-349653.js/1.3/Thu Jul 12 17:49:31 2007//
+/regress-349962.js/1.2/Sat May 26 00:19:41 2007//
+/regress-350279.js/1.4/Wed Jul 18 19:59:21 2007//
+/regress-350730.js/1.4/Sun Jan 6 01:18:48 2008//
+/regress-350793-01.js/1.2/Sat May 26 00:19:41 2007//
+/regress-351497.js/1.3/Wed Jul 18 19:59:21 2007//
+/regress-351606.js/1.5/Sat Feb 21 01:30:14 2009//
+/regress-351794.js/1.3/Thu Jul 12 17:49:31 2007//
+/regress-352092.js/1.3/Sun Jan 6 01:18:48 2008//
+/regress-352185.js/1.3/Sun Jan 6 01:18:48 2008//
+/regress-352212.js/1.3/Wed Jul 18 19:59:21 2007//
+/regress-352267.js/1.3/Sat May 26 00:19:41 2007//
+/regress-352422.js/1.1/Wed Jan 9 03:31:29 2008//
+/regress-352609.js/1.4/Wed Jul 18 19:59:21 2007//
+/regress-352616.js/1.2/Wed Oct 3 20:56:55 2007//
+/regress-352624.js/1.2/Sat May 26 00:19:41 2007//
+/regress-352786.js/1.1/Wed Jan 9 03:25:46 2008//
+/regress-352907.js/1.1/Wed Jan 9 03:19:55 2008//
+/regress-357754.js/1.2/Sat May 26 00:19:41 2007//
+/regress-358508.js/1.2/Sat May 26 00:19:41 2007//
+/regress-376410.js/1.1/Wed Jan 9 03:13:01 2008//
+/regress-396900.js/1.1/Fri Sep 21 17:11:48 2007//
+/regress-411279.js/1.1/Wed Jan 9 02:56:25 2008//
+/shell.js/1.2/Sat May 26 00:19:41 2007//
+D
diff --git a/testsrc/tests/js1_7/block/CVS/Repository b/testsrc/tests/js1_7/block/CVS/Repository
new file mode 100644
index 00000000..b7484371
--- /dev/null
+++ b/testsrc/tests/js1_7/block/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_7/block
diff --git a/testsrc/tests/js1_7/block/CVS/Root b/testsrc/tests/js1_7/block/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_7/block/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_7/decompilation/CVS/Entries b/testsrc/tests/js1_7/decompilation/CVS/Entries
new file mode 100644
index 00000000..c0434a38
--- /dev/null
+++ b/testsrc/tests/js1_7/decompilation/CVS/Entries
@@ -0,0 +1,54 @@
+/browser.js/1.1/Tue Apr 3 11:34:08 2007//
+/regress-346642-01.js/1.2/Sat May 26 00:19:41 2007//
+/regress-348904.js/1.3/Sat Feb 21 01:30:14 2009//
+/regress-349493.js/1.2/Sat May 26 00:19:41 2007//
+/regress-349499.js/1.2/Sat May 26 00:19:41 2007//
+/regress-349602.js/1.2/Sat May 26 00:19:41 2007//
+/regress-349605.js/1.2/Sat May 26 00:19:41 2007//
+/regress-349633.js/1.2/Sat May 26 00:19:41 2007//
+/regress-349634.js/1.2/Sat May 26 00:19:41 2007//
+/regress-350704.js/1.3/Wed May 30 01:52:57 2007//
+/regress-350793-02.js/1.2/Sat May 26 00:19:41 2007//
+/regress-350810.js/1.2/Sat May 26 00:19:41 2007//
+/regress-350991.js/1.2/Sat May 26 00:19:41 2007//
+/regress-351070-01.js/1.3/Sun Jan 6 01:18:48 2008//
+/regress-351070-03.js/1.3/Sun Jan 6 01:18:48 2008//
+/regress-351496.js/1.2/Sat May 26 00:19:41 2007//
+/regress-352008.js/1.2/Sat May 26 00:19:41 2007//
+/regress-352011.js/1.2/Sat May 26 00:19:41 2007//
+/regress-352015.js/1.2/Sat May 26 00:19:41 2007//
+/regress-352022.js/1.3/Thu Nov 27 11:38:05 2008//
+/regress-352025.js/1.2/Sat May 26 00:19:41 2007//
+/regress-352026.js/1.3/Wed May 30 01:52:57 2007//
+/regress-352068.js/1.2/Sat May 26 00:19:41 2007//
+/regress-352079.js/1.3/Wed May 30 01:52:57 2007//
+/regress-352198.js/1.2/Sat May 26 00:19:41 2007//
+/regress-352217.js/1.3/Sun Jan 6 01:18:48 2008//
+/regress-352266.js/1.2/Sat May 26 00:19:41 2007//
+/regress-352268.js/1.3/Sun Jan 6 01:18:48 2008//
+/regress-352269.js/1.2/Sat May 26 00:19:41 2007//
+/regress-352272.js/1.3/Wed May 30 01:52:57 2007//
+/regress-352283.js/1.2/Sat May 26 00:19:41 2007//
+/regress-352402.js/1.2/Sat May 26 00:19:41 2007//
+/regress-352415.js/1.2/Sat May 26 00:19:41 2007//
+/regress-352441.js/1.2/Sat May 26 00:19:41 2007//
+/regress-352732.js/1.3/Sun Jan 6 01:18:48 2008//
+/regress-355004.js/1.2/Sat May 26 00:19:41 2007//
+/regress-355049-01.js/1.2/Sat May 26 00:19:41 2007//
+/regress-355049-02.js/1.2/Sat May 26 00:19:41 2007//
+/regress-355105.js/1.2/Sat May 26 00:19:41 2007//
+/regress-355635.js/1.2/Sat May 26 00:19:41 2007//
+/regress-355786.js/1.2/Sat May 26 00:19:41 2007//
+/regress-356247.js/1.3/Sun Jan 6 01:18:48 2008//
+/regress-371802.js/1.1/Wed Jan 14 16:13:08 2009//
+/regress-374713.js/1.2/Sat May 26 00:19:41 2007//
+/regress-375794.js/1.2/Sat May 26 00:19:41 2007//
+/regress-379925.js/1.1/Sat May 26 16:27:25 2007//
+/regress-380506.js/1.1/Sat May 26 14:00:13 2007//
+/regress-381101.js/1.1/Sat May 26 13:19:53 2007//
+/regress-381108.js/1.1/Thu May 31 06:54:10 2007//
+/regress-410571.js/1.2/Mon Feb 11 22:22:02 2008//
+/regress-410649.js/1.1/Tue Feb 26 18:40:57 2008//
+/regress-429252.js/1.1/Sat Apr 26 00:28:48 2008//
+/shell.js/1.2/Sat May 26 00:19:41 2007//
+D
diff --git a/testsrc/tests/js1_7/decompilation/CVS/Repository b/testsrc/tests/js1_7/decompilation/CVS/Repository
new file mode 100644
index 00000000..883855b7
--- /dev/null
+++ b/testsrc/tests/js1_7/decompilation/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_7/decompilation
diff --git a/testsrc/tests/js1_7/decompilation/CVS/Root b/testsrc/tests/js1_7/decompilation/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_7/decompilation/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_7/expressions/CVS/Entries b/testsrc/tests/js1_7/expressions/CVS/Entries
new file mode 100644
index 00000000..042f232e
--- /dev/null
+++ b/testsrc/tests/js1_7/expressions/CVS/Entries
@@ -0,0 +1,13 @@
+/browser.js/1.1/Fri Jul 28 09:45:23 2006//
+/destructuring-scope.js/1.1/Wed Aug 22 19:43:31 2007//
+/regress-346203.js/1.2/Sat May 26 00:19:42 2007//
+/regress-346645-01.js/1.3/Sat May 26 00:19:42 2007//
+/regress-346645-02.js/1.3/Sat May 26 00:19:42 2007//
+/regress-346645-03.js/1.3/Sat May 26 00:19:42 2007//
+/regress-349624.js/1.2/Sat May 26 00:19:42 2007//
+/regress-349818.js/1.2/Sat May 26 00:19:42 2007//
+/regress-418051.js/1.1/Mon Sep 22 17:34:13 2008//
+/regress-421806.js/1.1/Tue Mar 25 11:41:20 2008//
+/regress-451340.js/1.1/Mon Sep 22 17:24:44 2008//
+/shell.js/1.2/Sat May 26 00:19:42 2007//
+D
diff --git a/testsrc/tests/js1_7/expressions/CVS/Repository b/testsrc/tests/js1_7/expressions/CVS/Repository
new file mode 100644
index 00000000..b9261d60
--- /dev/null
+++ b/testsrc/tests/js1_7/expressions/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_7/expressions
diff --git a/testsrc/tests/js1_7/expressions/CVS/Root b/testsrc/tests/js1_7/expressions/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_7/expressions/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_7/extensions/CVS/Entries b/testsrc/tests/js1_7/extensions/CVS/Entries
new file mode 100644
index 00000000..88c050b7
--- /dev/null
+++ b/testsrc/tests/js1_7/extensions/CVS/Entries
@@ -0,0 +1,71 @@
+/basic-Iterator.js/1.2/Sat May 26 00:19:42 2007//
+/basic-for-each.js/1.2/Sat May 26 00:19:42 2007//
+/basic-for-in.js/1.2/Sat May 26 00:19:42 2007//
+/browser.js/1.1/Fri Feb 9 00:00:53 2007//
+/destructuring-order.js/1.2/Sat May 26 00:19:42 2007//
+/iterator-ctor.js/1.1/Sat Jan 5 14:16:51 2008//
+/regress-346021.js/1.2/Sat May 26 00:19:42 2007//
+/regress-346642-02.js/1.2/Sat May 26 00:19:42 2007//
+/regress-346642-06.js/1.4/Mon Jan 7 15:29:21 2008//
+/regress-346773.js/1.2/Sat May 26 00:19:42 2007//
+/regress-349619.js/1.3/Sat May 26 00:19:42 2007//
+/regress-350312.js/1.2/Sat May 26 00:19:42 2007//
+/regress-351070-02.js/1.3/Sun Jan 6 01:18:48 2008//
+/regress-351102-03.js/1.1/Thu Jun 14 22:39:03 2007//
+/regress-351102-04.js/1.1/Thu Jun 14 22:39:03 2007//
+/regress-351102-05.js/1.1/Thu Jun 14 22:39:03 2007//
+/regress-351102-07.js/1.1/Thu Jun 14 22:39:03 2007//
+/regress-352797-01.js/1.3/Thu Jul 12 17:49:31 2007//
+/regress-352885-01.js/1.2/Sat May 26 00:19:42 2007//
+/regress-352885-02.js/1.2/Sat May 26 00:19:42 2007//
+/regress-353214-01.js/1.2/Sat May 26 00:19:42 2007//
+/regress-353214-02.js/1.2/Sat May 26 00:19:42 2007//
+/regress-353249.js/1.2/Sat May 26 00:19:42 2007//
+/regress-353454.js/1.2/Sat May 26 00:19:42 2007//
+/regress-354499-01.js/1.2/Sat May 26 00:19:42 2007//
+/regress-354499-02.js/1.2/Sat May 26 00:19:42 2007//
+/regress-354945-01.js/1.2/Sat May 26 00:19:42 2007//
+/regress-354945-02.js/1.2/Sat May 26 00:19:42 2007//
+/regress-355052-01.js/1.3/Fri Jan 11 17:38:09 2008//
+/regress-355052-02.js/1.3/Fri Jan 11 17:38:09 2008//
+/regress-355052-03.js/1.3/Fri Jan 11 17:38:09 2008//
+/regress-355145.js/1.2/Sat May 26 00:19:42 2007//
+/regress-355410.js/1.2/Sat May 26 00:19:42 2007//
+/regress-355512.js/1.2/Sat May 26 00:19:42 2007//
+/regress-355578.js/1.2/Sat May 26 00:19:42 2007//
+/regress-355583.js/1.2/Sat May 26 00:19:42 2007//
+/regress-363040-01.js/1.2/Sat May 26 00:19:42 2007//
+/regress-363040-02.js/1.2/Sat May 26 00:19:42 2007//
+/regress-366668-01.js/1.2/Sat May 26 00:19:42 2007//
+/regress-366668-02.js/1.2/Sat May 26 00:19:42 2007//
+/regress-367629.js/1.2/Wed May 30 18:42:40 2007//
+/regress-368213.js/1.3/Sat May 26 00:19:42 2007//
+/regress-368224.js/1.3/Thu Jul 12 17:49:31 2007//
+/regress-372364.js/1.2/Sat May 26 00:19:42 2007//
+/regress-379482.js/1.1/Sun May 27 18:33:14 2007//
+/regress-379566.js/1.1/Sun May 27 18:25:54 2007//
+/regress-380933.js/1.1/Fri Sep 21 14:55:45 2007//
+/regress-381301.js/1.2/Thu May 31 19:00:11 2007//
+/regress-381303.js/1.1/Sat May 26 12:30:31 2007//
+/regress-387955-01.js/1.1/Fri Oct 19 02:34:01 2007//
+/regress-387955-02.js/1.2/Wed Jun 25 14:45:46 2008//
+/regress-392308.js/1.2/Wed Jun 25 14:45:46 2008//
+/regress-396326.js/1.1/Mon Sep 17 02:48:25 2007//
+/regress-429266.js/1.1/Thu Jul 3 14:37:51 2008//
+/regress-453955.js/1.1/Sat Feb 21 01:30:14 2009//
+/regress-455982-01.js/1.1/Sun Oct 12 03:49:43 2008//
+/regress-455982-02.js/1.1/Sun Oct 12 03:49:43 2008//
+/regress-458679.js/1.1/Wed Jan 14 16:13:11 2009//
+/regress-469234.js/1.1/Fri Mar 6 01:38:54 2009//
+/regress-469405-01.js/1.1/Mon Feb 22 18:53:45 2010//
+/regress-469405-02.js/1.1/Mon Feb 22 18:53:45 2010//
+/regress-470176.js/1.1/Sat Jan 24 13:07:13 2009//
+/regress-470300-01.js/1.1/Sat Jan 24 13:07:13 2009//
+/regress-470300-02.js/1.1/Sat Jan 24 13:07:14 2009//
+/regress-473282.js/1.1/Mon Feb 22 18:53:45 2010//
+/regress-474771-01.js/1.1/Fri Mar 6 01:38:54 2009//
+/regress-474771-02.js/1.1/Fri Mar 6 01:38:54 2009//
+/regress-476257.js/1.1/Mon Feb 22 18:53:45 2010//
+/regress-477048.js/1.1/Sat Feb 21 01:30:14 2009//
+/shell.js/1.2/Sat May 26 00:19:42 2007//
+D
diff --git a/testsrc/tests/js1_7/extensions/CVS/Repository b/testsrc/tests/js1_7/extensions/CVS/Repository
new file mode 100644
index 00000000..5b962ad8
--- /dev/null
+++ b/testsrc/tests/js1_7/extensions/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_7/extensions
diff --git a/testsrc/tests/js1_7/extensions/CVS/Root b/testsrc/tests/js1_7/extensions/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_7/extensions/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_7/geniter/CVS/Entries b/testsrc/tests/js1_7/geniter/CVS/Entries
new file mode 100644
index 00000000..2bcca656
--- /dev/null
+++ b/testsrc/tests/js1_7/geniter/CVS/Entries
@@ -0,0 +1,51 @@
+/326466-01.js/1.2/Sat May 26 00:19:42 2007//
+/browser.js/1.1/Wed Jun 14 18:16:46 2006//
+/builtin-Iterator-function.js/1.2/Sat May 26 00:19:42 2007//
+/evens.js/1.1/Sat Sep 8 14:04:01 2007//
+/fibonacci-matrix-generator.js/1.2/Sat May 26 00:19:42 2007//
+/iterator-toString.js/1.2/Sat May 26 00:19:42 2007//
+/message-value-passing.js/1.2/Sat May 26 00:19:42 2007//
+/multiple-close.js/1.2/Sat May 26 00:19:42 2007//
+/nested-yield.js/1.2/Sat May 26 00:19:42 2007//
+/pi-generator.js/1.2/Sat May 26 00:19:42 2007//
+/regress-345736.js/1.3/Sat May 26 00:19:42 2007//
+/regress-345855.js/1.6/Tue Feb 19 20:11:22 2008//
+/regress-345879-01.js/1.2/Sat May 26 00:19:42 2007//
+/regress-345879-02.js/1.2/Sat May 26 00:19:42 2007//
+/regress-347593.js/1.3/Sat May 26 00:19:42 2007//
+/regress-347739.js/1.2/Sat May 26 00:19:42 2007//
+/regress-349012-01.js/1.4/Sat May 26 00:19:42 2007//
+/regress-349012-02.js/1.2/Sat May 26 00:19:42 2007//
+/regress-349012-03.js/1.4/Sat May 26 00:19:42 2007//
+/regress-349012-04.js/1.4/Sat May 26 00:19:42 2007//
+/regress-349012-05.js/1.5/Tue Jun 5 18:31:53 2007//
+/regress-349023-01.js/1.3/Sat May 26 00:19:42 2007//
+/regress-349023-02.js/1.2/Sat May 26 00:19:42 2007//
+/regress-349023-03.js/1.2/Sat May 26 00:19:42 2007//
+/regress-349331.js/1.3/Sat May 26 00:19:42 2007//
+/regress-349362.js/1.2/Sat May 26 00:19:42 2007//
+/regress-349851.js/1.2/Sat May 26 00:19:42 2007//
+/regress-350621.js/1.3/Sat May 26 00:19:42 2007//
+/regress-350809.js/1.3/Thu Jul 12 17:49:32 2007//
+/regress-351120.js/1.3/Tue Jun 5 18:31:53 2007//
+/regress-351514.js/1.3/Tue Jun 5 18:31:53 2007//
+/regress-352197.js/1.4/Tue Jun 5 18:31:53 2007//
+/regress-352605.js/1.4/Wed Feb 13 23:34:49 2008//
+/regress-352876.js/1.2/Sat May 26 00:19:42 2007//
+/regress-355834.js/1.2/Sat May 26 00:19:42 2007//
+/regress-359062.js/1.2/Sat May 26 00:19:42 2007//
+/regress-366941.js/1.2/Wed Aug 15 12:00:05 2007//
+/regress-382335.js/1.1/Thu May 31 06:37:52 2007//
+/regress-387871.js/1.1/Sun Aug 5 10:09:52 2007//
+/regress-390918.js/1.1/Sun Aug 5 09:59:42 2007//
+/regress-392310.js/1.2/Wed Jun 25 14:45:47 2008//
+/regress-466206.js/1.1/Tue Aug 18 08:48:57 2009//
+/send-no-rhs.js/1.2/Sat May 26 00:19:42 2007//
+/sequential-yields.js/1.2/Sat May 26 00:19:42 2007//
+/shell.js/1.2/Sat May 26 00:19:42 2007//
+/simple-fib.js/1.2/Sat May 26 00:19:42 2007//
+/throw-after-close.js/1.2/Sat May 26 00:19:42 2007//
+/throw-forever.js/1.2/Sat May 26 00:19:42 2007//
+/unreachable-yield.js/1.2/Sat May 26 00:19:42 2007//
+/yield-undefined.js/1.2/Sat May 26 00:19:42 2007//
+D
diff --git a/testsrc/tests/js1_7/geniter/CVS/Repository b/testsrc/tests/js1_7/geniter/CVS/Repository
new file mode 100644
index 00000000..534552c2
--- /dev/null
+++ b/testsrc/tests/js1_7/geniter/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_7/geniter
diff --git a/testsrc/tests/js1_7/geniter/CVS/Root b/testsrc/tests/js1_7/geniter/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_7/geniter/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_7/iterable/CVS/Entries b/testsrc/tests/js1_7/iterable/CVS/Entries
new file mode 100644
index 00000000..1042dca8
--- /dev/null
+++ b/testsrc/tests/js1_7/iterable/CVS/Entries
@@ -0,0 +1,17 @@
+/browser.js/1.1/Wed Jun 14 18:16:46 2006//
+/regress-340526-01.js/1.3/Sat May 26 00:19:42 2007//
+/regress-340526-02.js/1.3/Sat May 26 00:19:42 2007//
+/regress-341496.js/1.2/Sat May 26 00:19:42 2007//
+/regress-341499.js/1.3/Sat May 26 00:19:42 2007//
+/regress-341510.js/1.2/Sat May 26 00:19:42 2007//
+/regress-341815.js/1.7/Wed Feb 6 20:06:40 2008//
+/regress-341821.js/1.5/Sat May 26 00:19:42 2007//
+/regress-354750-01.js/1.2/Sat May 26 00:19:42 2007//
+/regress-355025.js/1.2/Sat May 26 00:19:42 2007//
+/regress-355075-01.js/1.3/Sat May 26 00:19:42 2007//
+/regress-355075-02.js/1.3/Sat May 26 00:19:42 2007//
+/regress-355090.js/1.3/Sat Feb 21 01:30:16 2009//
+/regress-412467.js/1.1/Wed Jan 16 04:47:31 2008//
+/regress-415922.js/1.1/Mon Feb 18 10:48:27 2008//
+/shell.js/1.2/Sat May 26 00:19:42 2007//
+D
diff --git a/testsrc/tests/js1_7/iterable/CVS/Repository b/testsrc/tests/js1_7/iterable/CVS/Repository
new file mode 100644
index 00000000..8ec4e7c6
--- /dev/null
+++ b/testsrc/tests/js1_7/iterable/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_7/iterable
diff --git a/testsrc/tests/js1_7/iterable/CVS/Root b/testsrc/tests/js1_7/iterable/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_7/iterable/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_7/lexical/CVS/Entries b/testsrc/tests/js1_7/lexical/CVS/Entries
new file mode 100644
index 00000000..2fe3a15b
--- /dev/null
+++ b/testsrc/tests/js1_7/lexical/CVS/Entries
@@ -0,0 +1,7 @@
+/browser.js/1.1/Mon Jul 10 00:11:25 2006//
+/regress-336376-01.js/1.3/Sat May 26 00:19:43 2007//
+/regress-346642-03.js/1.3/Mon Nov 19 17:23:06 2007//
+/regress-346642-04.js/1.4/Sat May 26 00:19:43 2007//
+/regress-351515.js/1.3/Thu May 31 21:58:36 2007//
+/shell.js/1.2/Sat May 26 00:19:43 2007//
+D
diff --git a/testsrc/tests/js1_7/lexical/CVS/Repository b/testsrc/tests/js1_7/lexical/CVS/Repository
new file mode 100644
index 00000000..c80c9f45
--- /dev/null
+++ b/testsrc/tests/js1_7/lexical/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_7/lexical
diff --git a/testsrc/tests/js1_7/lexical/CVS/Root b/testsrc/tests/js1_7/lexical/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_7/lexical/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_7/regexp/CVS/Entries b/testsrc/tests/js1_7/regexp/CVS/Entries
new file mode 100644
index 00000000..9f915b74
--- /dev/null
+++ b/testsrc/tests/js1_7/regexp/CVS/Entries
@@ -0,0 +1,4 @@
+/browser.js/1.1/Tue Mar 20 08:17:48 2007//
+/shell.js/1.2/Sat May 26 00:19:43 2007//
+/yflag.js/1.2/Sat May 26 00:19:43 2007//
+D
diff --git a/testsrc/tests/js1_7/regexp/CVS/Repository b/testsrc/tests/js1_7/regexp/CVS/Repository
new file mode 100644
index 00000000..6ec98670
--- /dev/null
+++ b/testsrc/tests/js1_7/regexp/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_7/regexp
diff --git a/testsrc/tests/js1_7/regexp/CVS/Root b/testsrc/tests/js1_7/regexp/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_7/regexp/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_7/regress/CVS/Entries b/testsrc/tests/js1_7/regress/CVS/Entries
new file mode 100644
index 00000000..570287d9
--- /dev/null
+++ b/testsrc/tests/js1_7/regress/CVS/Entries
@@ -0,0 +1,70 @@
+/browser.js/1.1/Tue Sep 19 11:35:27 2006//
+/regress-350387.js/1.3/Thu Oct 2 16:59:18 2008//
+/regress-351503-01.js/1.2/Sat May 26 00:19:43 2007//
+/regress-351503-02.js/1.3/Sat May 26 00:19:43 2007//
+/regress-352640-01.js/1.1/Thu Feb 7 13:50:24 2008//
+/regress-352640-02.js/1.1/Thu Feb 7 13:50:24 2008//
+/regress-352640-03.js/1.1/Thu Feb 7 13:50:24 2008//
+/regress-352640-04.js/1.1/Thu Feb 7 13:50:24 2008//
+/regress-352797-02.js/1.5/Fri Jan 11 17:38:09 2008//
+/regress-352870-01.js/1.2/Sat May 26 00:19:43 2007//
+/regress-352870-02.js/1.3/Mon Nov 19 17:23:06 2007//
+/regress-352870-03.js/1.3/Fri Jan 11 17:38:09 2008//
+/regress-353079.js/1.2/Sat May 26 00:19:43 2007//
+/regress-355023.js/1.2/Sat May 26 00:19:43 2007//
+/regress-355832-01.js/1.3/Sat Feb 21 01:30:16 2009//
+/regress-355832-02.js/1.3/Sat Feb 21 01:30:16 2009//
+/regress-361566.js/1.3/Thu Jul 12 17:49:32 2007//
+/regress-363040-01.js/1.2/Sat May 26 00:19:43 2007//
+/regress-363040-02.js/1.2/Sat May 26 00:19:43 2007//
+/regress-369666-01.js/1.1/Thu Jun 14 22:43:09 2007//
+/regress-369666-02.js/1.1/Thu Jun 14 22:43:09 2007//
+/regress-372331.js/1.3/Sat Feb 21 01:30:16 2009//
+/regress-373827-01.js/1.3/Thu Jul 12 17:49:32 2007//
+/regress-373827-02.js/1.3/Thu Jul 12 17:49:32 2007//
+/regress-373828.js/1.1/Thu Feb 7 13:53:08 2008//
+/regress-375695.js/1.3/Thu Jul 12 17:49:32 2007//
+/regress-379442.js/1.3/Sat May 26 00:19:43 2007//
+/regress-379483.js/1.3/Thu Jul 12 17:49:32 2007//
+/regress-385133-01.js/1.1/Fri Feb 22 01:31:45 2008//
+/regress-385133-02.js/1.2/Wed Jun 25 14:45:47 2008//
+/regress-385393-05.js/1.1/Fri Aug 10 21:41:59 2007//
+/regress-387951.js/1.1/Wed Apr 16 12:02:58 2008//
+/regress-406477.js/1.1/Thu Dec 13 23:11:38 2007//
+/regress-407727-01.js/1.1/Thu Dec 27 20:23:00 2007//
+/regress-407727-02.js/1.1/Thu Dec 27 20:23:00 2007//
+/regress-407957.js/1.2/Sat Feb 21 01:30:16 2009//
+/regress-410649.js/1.1/Tue Feb 26 18:40:56 2008//
+/regress-414553.js/1.1/Fri Feb 1 20:48:02 2008//
+/regress-416601.js/1.1/Mon Feb 18 10:12:46 2008//
+/regress-416705.js/1.1/Sat Mar 29 23:11:17 2008//
+/regress-418641.js/1.1/Sun Mar 9 21:04:14 2008//
+/regress-419803.js/1.1/Thu Feb 28 16:24:13 2008//
+/regress-420399.js/1.1/Sun Mar 9 20:32:33 2008//
+/regress-428706.js/1.1/Sat Apr 26 01:08:59 2008//
+/regress-428708.js/1.1/Wed Apr 16 12:10:36 2008//
+/regress-452703.js/1.1/Thu Sep 18 07:14:24 2008//
+/regress-452960.js/1.1/Thu Sep 18 06:25:40 2008//
+/regress-453049.js/1.1/Wed Sep 17 14:10:17 2008//
+/regress-453051.js/1.1/Wed Sep 17 14:13:38 2008//
+/regress-453411.js/1.1/Thu Sep 18 05:50:57 2008//
+/regress-461235.js/1.1/Tue Nov 11 21:04:39 2008//
+/regress-461945.js/1.1/Tue Nov 11 21:04:39 2008//
+/regress-462071.js/1.1/Tue Nov 11 21:04:39 2008//
+/regress-462282.js/1.1/Tue Nov 11 21:04:40 2008//
+/regress-462388.js/1.1/Tue Nov 11 21:04:40 2008//
+/regress-462407.js/1.1/Tue Nov 11 21:04:40 2008//
+/regress-464403.js/1.1/Thu Dec 4 13:01:56 2008//
+/regress-465236.js/1.1/Wed Jan 28 16:54:28 2009//
+/regress-465424.js/1.1/Thu Nov 27 11:22:50 2008//
+/regress-465484.js/1.1/Wed Jan 28 16:54:28 2009//
+/regress-465686.js/1.1/Mon Feb 22 18:53:45 2010//
+/regress-469239-01.js/1.1/Fri Mar 6 01:38:55 2009//
+/regress-469239-02.js/1.1/Fri Mar 6 01:38:55 2009//
+/regress-470223.js/1.1/Wed Jan 28 16:54:28 2009//
+/regress-470388-01.js/1.1/Sat Jan 24 13:07:17 2009//
+/regress-470388-02.js/1.1/Sat Jan 24 13:07:18 2009//
+/regress-470388-03.js/1.1/Sat Jan 24 13:07:19 2009//
+/regress-474771.js/1.1/Fri Mar 6 01:38:55 2009//
+/shell.js/1.2/Sat May 26 00:19:43 2007//
+D
diff --git a/testsrc/tests/js1_7/regress/CVS/Repository b/testsrc/tests/js1_7/regress/CVS/Repository
new file mode 100644
index 00000000..4ad61317
--- /dev/null
+++ b/testsrc/tests/js1_7/regress/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_7/regress
diff --git a/testsrc/tests/js1_7/regress/CVS/Root b/testsrc/tests/js1_7/regress/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_7/regress/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_8/CVS/Entries b/testsrc/tests/js1_8/CVS/Entries
new file mode 100644
index 00000000..dca1f78b
--- /dev/null
+++ b/testsrc/tests/js1_8/CVS/Entries
@@ -0,0 +1,5 @@
+/README/1.1/Wed May 2 16:43:32 2007//
+/browser.js/1.2/Sat May 19 20:05:08 2007//
+/shell.js/1.5/Wed Aug 13 12:16:59 2008//
+/template.js/1.3/Wed Aug 13 12:10:56 2008//
+D
diff --git a/testsrc/tests/js1_8/CVS/Entries.Log b/testsrc/tests/js1_8/CVS/Entries.Log
new file mode 100644
index 00000000..c6f2aa90
--- /dev/null
+++ b/testsrc/tests/js1_8/CVS/Entries.Log
@@ -0,0 +1,4 @@
+A D/decompilation////
+A D/extensions////
+A D/genexps////
+A D/regress////
diff --git a/testsrc/tests/js1_8/CVS/Repository b/testsrc/tests/js1_8/CVS/Repository
new file mode 100644
index 00000000..447ab534
--- /dev/null
+++ b/testsrc/tests/js1_8/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_8
diff --git a/testsrc/tests/js1_8/CVS/Root b/testsrc/tests/js1_8/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_8/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_8/decompilation/CVS/Entries b/testsrc/tests/js1_8/decompilation/CVS/Entries
new file mode 100644
index 00000000..5e52b2e6
--- /dev/null
+++ b/testsrc/tests/js1_8/decompilation/CVS/Entries
@@ -0,0 +1,14 @@
+/browser.js/1.1/Wed May 2 16:43:32 2007//
+/regress-260106.js/1.1/Sat Mar 29 23:14:23 2008//
+/regress-346749.js/1.1/Fri Mar 6 01:38:56 2009//
+/regress-381372.js/1.1/Sat May 26 01:40:22 2007//
+/regress-381504.js/1.1/Sat May 26 01:20:26 2007//
+/regress-381963-01.js/1.1/Fri Mar 6 01:38:57 2009//
+/regress-381963-02.js/1.1/Fri Mar 6 01:38:57 2009//
+/regress-382981.js/1.1/Fri Jul 13 17:08:03 2007//
+/regress-443074.js/1.1/Mon Oct 20 15:46:08 2008//
+/regress-460504.js/1.1/Sat Mar 14 23:13:16 2009//
+/regress-461233.js/1.1/Tue Nov 11 21:04:43 2008//
+/regress-469625-01.js/1.1/Sat Jan 24 13:07:21 2009//
+/shell.js/1.2/Sat May 26 00:19:43 2007//
+D
diff --git a/testsrc/tests/js1_8/decompilation/CVS/Repository b/testsrc/tests/js1_8/decompilation/CVS/Repository
new file mode 100644
index 00000000..637e9ece
--- /dev/null
+++ b/testsrc/tests/js1_8/decompilation/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_8/decompilation
diff --git a/testsrc/tests/js1_8/decompilation/CVS/Root b/testsrc/tests/js1_8/decompilation/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_8/decompilation/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_8/extensions/CVS/Entries b/testsrc/tests/js1_8/extensions/CVS/Entries
new file mode 100644
index 00000000..51dd9802
--- /dev/null
+++ b/testsrc/tests/js1_8/extensions/CVS/Entries
@@ -0,0 +1,46 @@
+/browser.js/1.1/Wed May 2 16:43:32 2007//
+/dekker.js/1.1/Wed Feb 20 11:27:41 2008//
+/for-in.js/1.1/Wed Feb 20 11:27:41 2008//
+/lamport.js/1.1/Wed Feb 20 11:27:41 2008//
+/peterson.js/1.1/Wed Feb 20 11:27:41 2008//
+/regress-353116.js/1.1/Sun Dec 9 00:28:59 2007//
+/regress-378789.js/1.2/Sat May 26 00:19:44 2007//
+/regress-385393-01.js/1.1/Fri Aug 10 21:41:59 2007//
+/regress-385393-10.js/1.1/Fri Aug 10 21:41:59 2007//
+/regress-385393-11.js/1.2/Wed Jun 25 14:45:47 2008//
+/regress-385729.js/1.1/Fri Jul 13 01:49:58 2007//
+/regress-394709.js/1.1/Tue Sep 11 18:03:23 2007//
+/regress-415721.js/1.1/Wed Feb 20 11:27:41 2008//
+/regress-417131.js/1.1/Wed Jan 14 16:13:12 2009//
+/regress-417817.js/1.1/Fri Oct 17 21:14:40 2008//
+/regress-419091.js/1.1/Fri Oct 17 21:14:40 2008//
+/regress-422269.js/1.1/Wed Aug 6 09:24:15 2008//
+/regress-445818.js/1.1/Fri Oct 17 21:14:40 2008//
+/regress-446169-01.js/1.1/Thu Aug 7 02:58:16 2008//
+/regress-446169-02.js/1.1/Thu Aug 7 02:58:16 2008//
+/regress-452476.js/1.1/Sun Oct 12 03:49:45 2008//
+/regress-452913.js/1.1/Sat Mar 14 22:48:22 2009//
+/regress-454744.js/1.1/Thu Sep 18 20:08:18 2008//
+/regress-455973.js/1.1/Thu Dec 4 13:01:58 2008//
+/regress-465337.js/1.1/Thu Nov 27 11:26:45 2008//
+/regress-465453.js/1.1/Thu Nov 27 11:21:00 2008//
+/regress-469625.js/1.1/Fri Mar 6 01:38:58 2009//
+/regress-471197.js/1.1/Wed Jan 28 16:55:06 2009//
+/regress-472450-03.js/1.1/Fri Mar 6 01:38:58 2009//
+/regress-472450-04.js/1.1/Fri Mar 6 01:38:58 2009//
+/regress-473040.js/1.1/Tue Aug 18 08:50:48 2009//
+/regress-475971.js/1.1/Fri Aug 7 23:47:56 2009//
+/regress-476414-01.js/1.1/Sat Feb 21 01:30:17 2009//
+/regress-476414-02.js/1.1/Sat Feb 21 01:30:17 2009//
+/regress-476427.js/1.1/Sat Feb 21 01:30:17 2009//
+/regress-476653.js/1.1/Mon Feb 22 18:53:46 2010//
+/regress-476869.js/1.1/Sat Feb 21 01:30:17 2009//
+/regress-476871-01.js/1.1/Mon Feb 22 18:53:46 2010//
+/regress-476871-02.js/1.1/Mon Feb 22 18:53:46 2010//
+/regress-479252.js/1.1/Fri Mar 20 05:01:02 2009//
+/regress-479381.js/1.1/Fri Mar 20 05:01:02 2009//
+/regress-481989.js/1.1/Sat Mar 14 22:48:22 2009//
+/regress-482263.js/1.1/Sat Mar 14 22:48:22 2009//
+/shell.js/1.2/Sat May 26 00:19:44 2007//
+/simple-tree.js/1.1/Wed Feb 20 11:27:41 2008//
+D
diff --git a/testsrc/tests/js1_8/extensions/CVS/Repository b/testsrc/tests/js1_8/extensions/CVS/Repository
new file mode 100644
index 00000000..0942b11d
--- /dev/null
+++ b/testsrc/tests/js1_8/extensions/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_8/extensions
diff --git a/testsrc/tests/js1_8/extensions/CVS/Root b/testsrc/tests/js1_8/extensions/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_8/extensions/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_8/genexps/CVS/Entries b/testsrc/tests/js1_8/genexps/CVS/Entries
new file mode 100644
index 00000000..34be8681
--- /dev/null
+++ b/testsrc/tests/js1_8/genexps/CVS/Entries
@@ -0,0 +1,12 @@
+/browser.js/1.1/Sat May 26 16:10:20 2007//
+/regress-347739.js/1.1/Sun Aug 5 09:31:32 2007//
+/regress-349012-01.js/1.1/Sun Aug 5 10:22:16 2007//
+/regress-349326.js/1.1/Fri Jul 13 17:23:49 2007//
+/regress-349331.js/1.1/Sun Aug 5 10:22:16 2007//
+/regress-380237-01.js/1.3/Fri Mar 6 01:38:59 2009//
+/regress-380237-02.js/1.1/Sat May 26 16:10:20 2007//
+/regress-380237-03.js/1.3/Thu May 31 19:46:36 2007//
+/regress-380237-04.js/1.3/Thu Oct 30 22:13:41 2008//
+/regress-384991.js/1.1/Tue Mar 25 11:51:04 2008//
+/shell.js/1.1/Sat May 26 16:10:20 2007//
+D
diff --git a/testsrc/tests/js1_8/genexps/CVS/Repository b/testsrc/tests/js1_8/genexps/CVS/Repository
new file mode 100644
index 00000000..755bdaf7
--- /dev/null
+++ b/testsrc/tests/js1_8/genexps/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_8/genexps
diff --git a/testsrc/tests/js1_8/genexps/CVS/Root b/testsrc/tests/js1_8/genexps/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_8/genexps/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_8/regress/CVS/Entries b/testsrc/tests/js1_8/regress/CVS/Entries
new file mode 100644
index 00000000..60644efd
--- /dev/null
+++ b/testsrc/tests/js1_8/regress/CVS/Entries
@@ -0,0 +1,86 @@
+/browser.js/1.1/Wed May 2 16:43:32 2007//
+/regress-366941.js/1.1/Sun May 27 20:13:35 2007//
+/regress-384412.js/1.1/Sat Apr 5 08:12:31 2008//
+/regress-384758.js/1.1/Fri Mar 6 01:38:59 2009//
+/regress-404734.js/1.1/Fri Feb 22 01:00:36 2008//
+/regress-427798.js/1.1/Wed Aug 6 09:37:58 2008//
+/regress-433279-01.js/1.1/Wed Aug 6 17:47:54 2008//
+/regress-433279-02.js/1.1/Wed Aug 6 17:47:54 2008//
+/regress-433279-03.js/1.1/Wed Aug 6 17:47:54 2008//
+/regress-442333-01.js/1.1/Thu Aug 7 12:00:08 2008//
+/regress-452491.js/1.1/Thu Sep 18 20:16:25 2008//
+/regress-453492.js/1.1/Fri Aug 7 21:17:12 2009//
+/regress-455981-01.js/1.1/Fri Aug 7 21:20:59 2009//
+/regress-455981-02.js/1.1/Fri Aug 7 21:20:59 2009//
+/regress-457065-01.js/1.1/Fri Mar 20 05:00:41 2009//
+/regress-457065-02.js/1.1/Fri Mar 20 05:00:41 2009//
+/regress-458076.js/1.1/Sun Oct 12 03:49:46 2008//
+/regress-459185.js/1.2/Sat Feb 21 01:30:27 2009//
+/regress-459186.js/1.1/Sun Oct 12 03:49:46 2008//
+/regress-459389.js/1.1/Mon Oct 20 15:46:09 2008//
+/regress-461930.js/1.1/Thu Dec 4 13:02:00 2008//
+/regress-461932.js/1.1/Thu Dec 4 13:02:00 2008//
+/regress-463334-01.js/1.1/Thu Dec 4 13:02:00 2008//
+/regress-463334-02.js/1.1/Thu Dec 4 13:02:00 2008//
+/regress-463783.js/1.1/Wed Jan 28 16:55:45 2009//
+/regress-464092-01.js/1.1/Fri Mar 6 01:39:00 2009//
+/regress-464092-02.js/1.1/Fri Mar 6 01:39:00 2009//
+/regress-464096.js/1.1/Fri Mar 6 01:39:00 2009//
+/regress-464418.js/1.1/Thu Dec 4 13:02:00 2008//
+/regress-464978.js/1.1/Thu Dec 4 13:02:00 2008//
+/regress-465220.js/1.1/Thu Dec 4 13:02:00 2008//
+/regress-465234.js/1.1/Thu Dec 4 13:02:00 2008//
+/regress-465239.js/1.1/Thu Dec 4 13:02:00 2008//
+/regress-465241.js/1.1/Thu Dec 4 13:02:00 2008//
+/regress-465249.js/1.1/Thu Dec 4 13:02:00 2008//
+/regress-465261.js/1.1/Thu Dec 4 13:02:00 2008//
+/regress-465308.js/1.1/Thu Nov 27 11:28:26 2008//
+/regress-465454.js/1.1/Sat Feb 21 01:30:27 2009//
+/regress-465460-01.js/1.1/Sat Jan 24 13:07:23 2009//
+/regress-465460-02.js/1.1/Sat Jan 24 13:07:23 2009//
+/regress-465460-03.js/1.1/Sat Jan 24 13:07:23 2009//
+/regress-465460-04.js/1.1/Sat Jan 24 13:07:23 2009//
+/regress-465460-05.js/1.1/Sat Jan 24 13:07:23 2009//
+/regress-465460-06.js/1.1/Sat Jan 24 13:07:23 2009//
+/regress-465460-07.js/1.1/Sat Jan 24 13:07:24 2009//
+/regress-465460-08.js/1.1/Sat Jan 24 13:07:24 2009//
+/regress-465460-09.js/1.1/Sat Jan 24 13:07:24 2009//
+/regress-465460-10.js/1.1/Sat Jan 24 13:07:24 2009//
+/regress-465460-11.js/1.1/Sat Jan 24 13:07:24 2009//
+/regress-465460-12.js/1.1/Sat Jan 24 13:07:24 2009//
+/regress-465483.js/1.1/Thu Nov 27 11:19:06 2008//
+/regress-465567-01.js/1.1/Fri Mar 6 01:39:00 2009//
+/regress-465567-02.js/1.2/Fri Aug 7 21:09:04 2009//
+/regress-465688.js/1.1/Thu Nov 27 11:17:12 2008//
+/regress-466128.js/1.1/Thu Nov 27 11:15:00 2008//
+/regress-466787.js/1.1/Sat Feb 21 01:30:27 2009//
+/regress-467495-01.js/1.1/Fri Mar 6 01:39:00 2009//
+/regress-467495-02.js/1.1/Fri Mar 6 01:39:00 2009//
+/regress-467495-03.js/1.1/Fri Mar 6 01:39:00 2009//
+/regress-467495-04.js/1.1/Fri Mar 6 01:39:00 2009//
+/regress-467495-05.js/1.1/Fri Mar 6 01:39:00 2009//
+/regress-467495-06.js/1.1/Fri Mar 6 01:39:00 2009//
+/regress-468711.js/1.1/Fri Mar 6 01:39:00 2009//
+/regress-469547.js/1.1/Mon Feb 22 18:53:46 2010//
+/regress-469625-02.js/1.1/Sat Jan 24 13:07:24 2009//
+/regress-469625-03.js/1.1/Sat Jan 24 13:07:24 2009//
+/regress-471373.js/1.1/Fri Mar 20 05:00:41 2009//
+/regress-471660.js/1.1/Fri Mar 20 05:00:41 2009//
+/regress-472450-01.js/1.1/Fri Mar 6 01:39:00 2009//
+/regress-472450-02.js/1.1/Fri Mar 6 01:39:00 2009//
+/regress-472528-01.js/1.1/Fri Mar 20 05:00:41 2009//
+/regress-472528-02.js/1.1/Fri Mar 20 05:00:41 2009//
+/regress-472703.js/1.1/Fri Mar 20 05:00:41 2009//
+/regress-474769.js/1.1/Wed Jan 28 16:55:45 2009//
+/regress-474771.js/1.1/Sat Feb 21 01:30:27 2009//
+/regress-474935.js/1.1/Wed Jan 28 16:55:45 2009//
+/regress-476655.js/1.1/Fri Mar 20 05:00:41 2009//
+/regress-477234.js/1.1/Sat Feb 21 01:30:27 2009//
+/regress-477581.js/1.1/Sat Feb 21 01:30:27 2009//
+/regress-478205.js/1.1/Sat Feb 21 01:30:27 2009//
+/regress-479353.js/1.1/Fri Mar 6 01:39:00 2009//
+/regress-479740.js/1.1/Sat Mar 14 22:48:21 2009//
+/regress-481800.js/1.1/Sat Mar 14 22:48:21 2009//
+/regress-483749.js/1.1/Fri Mar 20 05:00:41 2009//
+/shell.js/1.2/Sat May 26 00:19:44 2007//
+D
diff --git a/testsrc/tests/js1_8/regress/CVS/Repository b/testsrc/tests/js1_8/regress/CVS/Repository
new file mode 100644
index 00000000..945f68a6
--- /dev/null
+++ b/testsrc/tests/js1_8/regress/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_8/regress
diff --git a/testsrc/tests/js1_8/regress/CVS/Root b/testsrc/tests/js1_8/regress/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_8/regress/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_8_1/CVS/Entries b/testsrc/tests/js1_8_1/CVS/Entries
new file mode 100644
index 00000000..a5177cf6
--- /dev/null
+++ b/testsrc/tests/js1_8_1/CVS/Entries
@@ -0,0 +1,5 @@
+/README/1.1/Wed Aug 13 10:25:15 2008//
+/browser.js/1.1/Wed Aug 13 10:25:15 2008//
+/shell.js/1.1/Wed Aug 13 10:25:15 2008//
+/template.js/1.1/Wed Aug 13 10:25:15 2008//
+D
diff --git a/testsrc/tests/js1_8_1/CVS/Entries.Log b/testsrc/tests/js1_8_1/CVS/Entries.Log
new file mode 100644
index 00000000..abfdf2f2
--- /dev/null
+++ b/testsrc/tests/js1_8_1/CVS/Entries.Log
@@ -0,0 +1,6 @@
+A D/JSON////
+A D/String////
+A D/decompilation////
+A D/extensions////
+A D/regress////
+A D/trace////
diff --git a/testsrc/tests/js1_8_1/CVS/Repository b/testsrc/tests/js1_8_1/CVS/Repository
new file mode 100644
index 00000000..cd53db86
--- /dev/null
+++ b/testsrc/tests/js1_8_1/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_8_1
diff --git a/testsrc/tests/js1_8_1/CVS/Root b/testsrc/tests/js1_8_1/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_8_1/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_8_1/JSON/CVS/Entries b/testsrc/tests/js1_8_1/JSON/CVS/Entries
new file mode 100644
index 00000000..b32608e7
--- /dev/null
+++ b/testsrc/tests/js1_8_1/JSON/CVS/Entries
@@ -0,0 +1,5 @@
+/browser.js/1.1/Sun Oct 12 03:49:47 2008//
+/regress-458959.js/1.1/Sun Oct 12 03:49:47 2008//
+/regress-459293.js/1.1/Mon Oct 20 15:46:11 2008//
+/shell.js/1.1/Sun Oct 12 03:49:47 2008//
+D
diff --git a/testsrc/tests/js1_8_1/JSON/CVS/Repository b/testsrc/tests/js1_8_1/JSON/CVS/Repository
new file mode 100644
index 00000000..3540ea39
--- /dev/null
+++ b/testsrc/tests/js1_8_1/JSON/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_8_1/JSON
diff --git a/testsrc/tests/js1_8_1/JSON/CVS/Root b/testsrc/tests/js1_8_1/JSON/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_8_1/JSON/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_8_1/String/CVS/Entries b/testsrc/tests/js1_8_1/String/CVS/Entries
new file mode 100644
index 00000000..78961e9c
--- /dev/null
+++ b/testsrc/tests/js1_8_1/String/CVS/Entries
@@ -0,0 +1,4 @@
+/browser.js/1.1/Wed Aug 13 10:25:16 2008//
+/regress-305064.js/1.2/Wed Aug 13 12:01:08 2008//
+/shell.js/1.1/Wed Aug 13 10:25:16 2008//
+D
diff --git a/testsrc/tests/js1_8_1/String/CVS/Repository b/testsrc/tests/js1_8_1/String/CVS/Repository
new file mode 100644
index 00000000..7857d535
--- /dev/null
+++ b/testsrc/tests/js1_8_1/String/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_8_1/String
diff --git a/testsrc/tests/js1_8_1/String/CVS/Root b/testsrc/tests/js1_8_1/String/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_8_1/String/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_8_1/decompilation/CVS/Entries b/testsrc/tests/js1_8_1/decompilation/CVS/Entries
new file mode 100644
index 00000000..ee3c6c40
--- /dev/null
+++ b/testsrc/tests/js1_8_1/decompilation/CVS/Entries
@@ -0,0 +1,22 @@
+/browser.js/1.1/Fri Oct 17 21:14:41 2008//
+/regress-346642-01.js/1.2/Thu Oct 30 22:13:41 2008//
+/regress-349605.js/1.3/Thu Nov 27 11:38:06 2008//
+/regress-349634.js/1.1/Tue Aug 18 07:46:08 2009//
+/regress-350991.js/1.2/Thu Dec 4 13:02:01 2008//
+/regress-351070-01.js/1.1/Thu Oct 30 22:13:41 2008//
+/regress-351336.js/1.1/Fri Oct 17 21:14:41 2008//
+/regress-351626.js/1.2/Thu Oct 30 22:13:42 2008//
+/regress-352011.js/1.1/Thu Nov 27 11:38:06 2008//
+/regress-352022.js/1.1/Thu Nov 27 11:38:06 2008//
+/regress-352026.js/1.4/Fri Aug 7 23:51:47 2009//
+/regress-352609.js/1.1/Thu Nov 27 11:38:06 2008//
+/regress-353249.js/1.1/Thu Nov 27 11:38:06 2008//
+/regress-354878.js/1.1/Fri Oct 17 21:14:41 2008//
+/regress-371802.js/1.1/Wed Jan 14 16:13:14 2009//
+/regress-373678-01.js/1.1/Fri Oct 17 21:14:41 2008//
+/regress-380237-03.js/1.2/Thu Nov 27 12:41:08 2008//
+/regress-380237-04.js/1.1/Thu Oct 30 22:13:42 2008//
+/regress-443074.js/1.2/Thu Oct 30 22:13:42 2008//
+/regress-466905-03.js/1.1/Sat Feb 21 01:30:29 2009//
+/shell.js/1.1/Fri Oct 17 21:14:41 2008//
+D
diff --git a/testsrc/tests/js1_8_1/decompilation/CVS/Repository b/testsrc/tests/js1_8_1/decompilation/CVS/Repository
new file mode 100644
index 00000000..62fa8ae7
--- /dev/null
+++ b/testsrc/tests/js1_8_1/decompilation/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_8_1/decompilation
diff --git a/testsrc/tests/js1_8_1/decompilation/CVS/Root b/testsrc/tests/js1_8_1/decompilation/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_8_1/decompilation/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_8_1/extensions/CVS/Entries b/testsrc/tests/js1_8_1/extensions/CVS/Entries
new file mode 100644
index 00000000..8cb202b3
--- /dev/null
+++ b/testsrc/tests/js1_8_1/extensions/CVS/Entries
@@ -0,0 +1,14 @@
+/browser.js/1.1/Fri Oct 17 21:14:43 2008//
+/regress-352281.js/1.2/Thu Oct 30 22:13:43 2008//
+/regress-353214-02.js/1.1/Tue Aug 18 07:46:09 2009//
+/regress-437288-01.js/1.1/Thu Oct 30 22:13:43 2008//
+/regress-452498-162.js/1.1/Fri Aug 7 21:09:05 2009//
+/regress-452498-193.js/1.1/Fri Aug 7 21:09:05 2009//
+/regress-452498-196.js/1.1/Fri Aug 7 21:09:05 2009//
+/regress-452498-224.js/1.1/Fri Aug 7 21:09:05 2009//
+/regress-466905-04.js/1.1/Sat Feb 21 01:30:47 2009//
+/regress-466905-05.js/1.1/Sat Feb 21 01:30:47 2009//
+/regress-477158.js/1.1/Sat Feb 21 01:30:47 2009//
+/regress-477187.js/1.2/Wed Feb 25 19:35:35 2009//
+/shell.js/1.1/Fri Oct 17 21:14:43 2008//
+D
diff --git a/testsrc/tests/js1_8_1/extensions/CVS/Repository b/testsrc/tests/js1_8_1/extensions/CVS/Repository
new file mode 100644
index 00000000..a0a1bf2d
--- /dev/null
+++ b/testsrc/tests/js1_8_1/extensions/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_8_1/extensions
diff --git a/testsrc/tests/js1_8_1/extensions/CVS/Root b/testsrc/tests/js1_8_1/extensions/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_8_1/extensions/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_8_1/regress/CVS/Entries b/testsrc/tests/js1_8_1/regress/CVS/Entries
new file mode 100644
index 00000000..240ff403
--- /dev/null
+++ b/testsrc/tests/js1_8_1/regress/CVS/Entries
@@ -0,0 +1,78 @@
+/browser.js/1.1/Thu Nov 27 11:38:03 2008//
+/regress-420399.js/1.1/Thu Nov 27 11:38:03 2008//
+/regress-452498-006.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-027.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-030.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-038.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-039.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-040.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-050.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-051.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-052-a.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-052.js/1.2/Fri Aug 7 21:09:06 2009//
+/regress-452498-053.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-054.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-058.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-062.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-063.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-068.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-071.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-072.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-073.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-074.js/1.2/Fri Apr 10 19:44:02 2009//
+/regress-452498-075.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-076.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-077.js/1.2/Fri Apr 10 19:44:02 2009//
+/regress-452498-079.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-082.js/1.2/Fri Aug 7 21:09:06 2009//
+/regress-452498-091.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-092.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-098.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-099-a.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-099.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-101.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-102.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-103.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-104.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-107.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-108.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-110.js/1.2/Fri Aug 7 21:09:06 2009//
+/regress-452498-111.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-112.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-114-a.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-114.js/1.2/Mon Mar 23 17:59:24 2009//
+/regress-452498-116.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-117.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-118.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-119.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-121.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-123.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-129.js/1.2/Fri Apr 10 19:44:02 2009//
+/regress-452498-130.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-131.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-135-a.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-135.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-138.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-139.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-155.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-452498-160.js/1.1/Fri Aug 7 21:09:06 2009//
+/regress-452498-168-1.js/1.1/Fri Aug 7 21:09:06 2009//
+/regress-452498-168-2.js/1.1/Fri Aug 7 21:09:06 2009//
+/regress-452498-176.js/1.1/Fri Aug 7 21:09:06 2009//
+/regress-452498-178.js/1.1/Fri Aug 7 21:09:06 2009//
+/regress-452498-181.js/1.1/Fri Aug 7 21:09:06 2009//
+/regress-452498-184.js/1.1/Fri Aug 7 21:09:06 2009//
+/regress-452498-185.js/1.1/Fri Aug 7 21:09:06 2009//
+/regress-452498-187.js/1.1/Fri Aug 7 21:09:06 2009//
+/regress-452498-191.js/1.1/Fri Aug 7 21:09:06 2009//
+/regress-452498-192.js/1.1/Fri Aug 7 21:09:06 2009//
+/regress-466905-01.js/1.1/Sat Feb 21 01:30:48 2009//
+/regress-466905-02.js/1.1/Sat Feb 21 01:30:48 2009//
+/regress-479430-01.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-479430-02.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-479430-03.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-479430-04.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-479430-05.js/1.1/Fri Mar 20 05:00:18 2009//
+/regress-495907.js/1.1/Fri Aug 7 23:57:59 2009//
+/shell.js/1.1/Thu Nov 27 11:38:03 2008//
+D
diff --git a/testsrc/tests/js1_8_1/regress/CVS/Repository b/testsrc/tests/js1_8_1/regress/CVS/Repository
new file mode 100644
index 00000000..fd3d830f
--- /dev/null
+++ b/testsrc/tests/js1_8_1/regress/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_8_1/regress
diff --git a/testsrc/tests/js1_8_1/regress/CVS/Root b/testsrc/tests/js1_8_1/regress/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_8_1/regress/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/js1_8_1/trace/CVS/Entries b/testsrc/tests/js1_8_1/trace/CVS/Entries
new file mode 100644
index 00000000..8577c4aa
--- /dev/null
+++ b/testsrc/tests/js1_8_1/trace/CVS/Entries
@@ -0,0 +1,26 @@
+/browser.js/1.1/Thu Aug 14 06:51:39 2008//
+/math-trace-tests.js/1.2/Fri Aug 7 23:42:17 2009//
+/regress-451673.js/1.1/Fri Mar 6 01:39:01 2009//
+/regress-451974-01.js/1.2/Sat Feb 21 01:30:52 2009//
+/regress-451974-02.js/1.2/Sat Feb 21 01:30:52 2009//
+/regress-452498-01.js/1.1/Fri Mar 20 05:00:21 2009//
+/regress-458838.js/1.1/Wed Jan 28 16:55:46 2009//
+/regress-462459-01.js/1.1/Sat Feb 21 01:30:52 2009//
+/regress-462459-02.js/1.1/Sat Feb 21 01:30:52 2009//
+/regress-462459-03.js/1.1/Sat Feb 21 01:30:52 2009//
+/regress-462459-04.js/1.1/Sat Feb 21 01:30:52 2009//
+/regress-462459-05.js/1.1/Sat Feb 21 01:30:52 2009//
+/regress-462459-06.js/1.1/Sat Feb 21 01:30:52 2009//
+/regress-462459-07.js/1.1/Sat Feb 21 01:30:52 2009//
+/regress-462459-08.js/1.1/Sat Feb 21 01:30:52 2009//
+/regress-462459-09.js/1.1/Sat Feb 21 01:30:52 2009//
+/regress-462459-10.js/1.1/Sat Feb 21 01:30:52 2009//
+/regress-462459-11.js/1.1/Sat Feb 21 01:30:52 2009//
+/regress-462459-12.js/1.1/Sat Feb 21 01:30:52 2009//
+/regress-469927.js/1.2/Sat Feb 21 01:30:52 2009//
+/regress-470739.js/1.2/Sat Feb 21 01:30:52 2009//
+/regress-471635.js/1.1/Wed Jan 28 16:55:46 2009//
+/regress-489682.js/1.1/Mon Feb 22 18:53:47 2010//
+/shell.js/1.1/Thu Aug 14 06:51:39 2008//
+/trace-test.js/1.14/Fri Aug 7 21:33:30 2009//
+D
diff --git a/testsrc/tests/js1_8_1/trace/CVS/Repository b/testsrc/tests/js1_8_1/trace/CVS/Repository
new file mode 100644
index 00000000..b0f18431
--- /dev/null
+++ b/testsrc/tests/js1_8_1/trace/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/js1_8_1/trace
diff --git a/testsrc/tests/js1_8_1/trace/CVS/Root b/testsrc/tests/js1_8_1/trace/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/js1_8_1/trace/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc2/Arrays/CVS/Entries b/testsrc/tests/lc2/Arrays/CVS/Entries
new file mode 100644
index 00000000..8a9c2846
--- /dev/null
+++ b/testsrc/tests/lc2/Arrays/CVS/Entries
@@ -0,0 +1,11 @@
+/array-001.js/1.5/Sat May 26 00:19:44 2007//
+/array-002.js/1.5/Sat May 26 00:19:44 2007//
+/array-003.js/1.5/Sat May 26 00:19:44 2007//
+/array-004.js/1.5/Sat May 26 00:19:44 2007//
+/array-005.js/1.5/Sat May 26 00:19:44 2007//
+/array-006-n.js/1.5/Sat May 26 00:19:44 2007//
+/array-007-n.js/1.5/Sat May 26 00:19:44 2007//
+/array-008-n.js/1.5/Sat May 26 00:19:44 2007//
+/browser.js/1.1/Wed Aug 31 04:47:22 2005//
+/shell.js/1.2/Sat May 26 00:19:44 2007//
+D
diff --git a/testsrc/tests/lc2/Arrays/CVS/Repository b/testsrc/tests/lc2/Arrays/CVS/Repository
new file mode 100644
index 00000000..12beedab
--- /dev/null
+++ b/testsrc/tests/lc2/Arrays/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc2/Arrays
diff --git a/testsrc/tests/lc2/Arrays/CVS/Root b/testsrc/tests/lc2/Arrays/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc2/Arrays/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc2/CVS/Entries b/testsrc/tests/lc2/CVS/Entries
new file mode 100644
index 00000000..dd23ad82
--- /dev/null
+++ b/testsrc/tests/lc2/CVS/Entries
@@ -0,0 +1,5 @@
+/README/1.1/Wed Aug 31 04:47:21 2005//
+/browser.js/1.17/Sat May 26 00:19:44 2007//
+/jsref.js/1.2/Mon Oct 30 16:48:37 2006//
+/shell.js/1.16/Sat May 26 00:19:44 2007//
+D
diff --git a/testsrc/tests/lc2/CVS/Entries.Log b/testsrc/tests/lc2/CVS/Entries.Log
new file mode 100644
index 00000000..86421109
--- /dev/null
+++ b/testsrc/tests/lc2/CVS/Entries.Log
@@ -0,0 +1,9 @@
+A D/Arrays////
+A D/Classes////
+A D/JSToJava////
+A D/JavaToJS////
+A D/Methods////
+A D/Objects////
+A D/Packages////
+A D/Protected////
+A D/misc////
diff --git a/testsrc/tests/lc2/CVS/Repository b/testsrc/tests/lc2/CVS/Repository
new file mode 100644
index 00000000..cbbc17e0
--- /dev/null
+++ b/testsrc/tests/lc2/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc2
diff --git a/testsrc/tests/lc2/CVS/Root b/testsrc/tests/lc2/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc2/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc2/Classes/CVS/Entries b/testsrc/tests/lc2/Classes/CVS/Entries
new file mode 100644
index 00000000..1f4bd9a7
--- /dev/null
+++ b/testsrc/tests/lc2/Classes/CVS/Entries
@@ -0,0 +1,5 @@
+/browser.js/1.1/Wed Aug 31 04:47:23 2005//
+/class-001.js/1.6/Sat May 26 00:19:44 2007//
+/class-002.js/1.6/Sat May 26 00:19:44 2007//
+/shell.js/1.2/Sat May 26 00:19:44 2007//
+D
diff --git a/testsrc/tests/lc2/Classes/CVS/Repository b/testsrc/tests/lc2/Classes/CVS/Repository
new file mode 100644
index 00000000..31659ac6
--- /dev/null
+++ b/testsrc/tests/lc2/Classes/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc2/Classes
diff --git a/testsrc/tests/lc2/Classes/CVS/Root b/testsrc/tests/lc2/Classes/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc2/Classes/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc2/JSToJava/CVS/Entries b/testsrc/tests/lc2/JSToJava/CVS/Entries
new file mode 100644
index 00000000..2fb99aff
--- /dev/null
+++ b/testsrc/tests/lc2/JSToJava/CVS/Entries
@@ -0,0 +1,16 @@
+/browser.js/1.1/Wed Aug 31 04:47:24 2005//
+/character-001.js/1.5/Sat May 26 00:19:44 2007//
+/double-001.js/1.5/Sat May 26 00:19:44 2007//
+/double-002.js/1.5/Sat May 26 00:19:44 2007//
+/float-001.js/1.5/Sat May 26 00:19:44 2007//
+/float-002.js/1.5/Sat May 26 00:19:44 2007//
+/integer-001.js/1.5/Sat May 26 00:19:44 2007//
+/integer-002.js/1.5/Sat May 26 00:19:44 2007//
+/long-001.js/1.5/Sat May 26 00:19:44 2007//
+/long-002.js/1.5/Sat May 26 00:19:44 2007//
+/long-003-n.js/1.5/Sat May 26 00:19:44 2007//
+/shell.js/1.2/Sat May 26 00:19:44 2007//
+/short-001.js/1.5/Sat May 26 00:19:44 2007//
+/short-002.js/1.5/Sat May 26 00:19:44 2007//
+/short-003-n.js/1.5/Sat May 26 00:19:44 2007//
+D
diff --git a/testsrc/tests/lc2/JSToJava/CVS/Repository b/testsrc/tests/lc2/JSToJava/CVS/Repository
new file mode 100644
index 00000000..75bf7bd9
--- /dev/null
+++ b/testsrc/tests/lc2/JSToJava/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc2/JSToJava
diff --git a/testsrc/tests/lc2/JSToJava/CVS/Root b/testsrc/tests/lc2/JSToJava/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc2/JSToJava/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc2/JavaToJS/CVS/Entries b/testsrc/tests/lc2/JavaToJS/CVS/Entries
new file mode 100644
index 00000000..1372b79b
--- /dev/null
+++ b/testsrc/tests/lc2/JavaToJS/CVS/Entries
@@ -0,0 +1,15 @@
+/String-001.js/1.5/Sat May 26 00:19:45 2007//
+/boolean-001.js/1.5/Sat May 26 00:19:45 2007//
+/boolean-003.js/1.5/Sat May 26 00:19:45 2007//
+/boolean-004.js/1.5/Sat May 26 00:19:45 2007//
+/boolean-005.js/1.6/Sat May 26 00:19:45 2007//
+/browser.js/1.1/Wed Aug 31 04:47:24 2005//
+/char-001.js/1.5/Sat May 26 00:19:45 2007//
+/char-002.js/1.5/Sat May 26 00:19:45 2007//
+/enum-001.js/1.5/Sat May 26 00:19:45 2007//
+/enum-002.js/1.5/Sat May 26 00:19:45 2007//
+/null-001.js/1.6/Sat May 26 00:19:45 2007//
+/number-001.js/1.6/Wed May 30 12:55:17 2007//
+/number-002.js/1.5/Sat May 26 00:19:45 2007//
+/shell.js/1.2/Sat May 26 00:19:45 2007//
+D
diff --git a/testsrc/tests/lc2/JavaToJS/CVS/Repository b/testsrc/tests/lc2/JavaToJS/CVS/Repository
new file mode 100644
index 00000000..7e01f681
--- /dev/null
+++ b/testsrc/tests/lc2/JavaToJS/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc2/JavaToJS
diff --git a/testsrc/tests/lc2/JavaToJS/CVS/Root b/testsrc/tests/lc2/JavaToJS/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc2/JavaToJS/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc2/Methods/CVS/Entries b/testsrc/tests/lc2/Methods/CVS/Entries
new file mode 100644
index 00000000..10c116ee
--- /dev/null
+++ b/testsrc/tests/lc2/Methods/CVS/Entries
@@ -0,0 +1,10 @@
+/browser.js/1.1/Wed Aug 31 04:47:31 2005//
+/method-001.js/1.5/Sat May 26 00:19:45 2007//
+/method-002.js/1.5/Sat May 26 00:19:45 2007//
+/method-003.js/1.5/Sat May 26 00:19:45 2007//
+/method-004-n.js/1.5/Sat May 26 00:19:45 2007//
+/method-005.js/1.5/Sat May 26 00:19:45 2007//
+/method-006-n.js/1.5/Sat May 26 00:19:45 2007//
+/println-001.js/1.5/Sat May 26 00:19:45 2007//
+/shell.js/1.2/Sat May 26 00:19:45 2007//
+D
diff --git a/testsrc/tests/lc2/Methods/CVS/Repository b/testsrc/tests/lc2/Methods/CVS/Repository
new file mode 100644
index 00000000..64c2db27
--- /dev/null
+++ b/testsrc/tests/lc2/Methods/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc2/Methods
diff --git a/testsrc/tests/lc2/Methods/CVS/Root b/testsrc/tests/lc2/Methods/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc2/Methods/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc2/Objects/CVS/Entries b/testsrc/tests/lc2/Objects/CVS/Entries
new file mode 100644
index 00000000..25ea11c3
--- /dev/null
+++ b/testsrc/tests/lc2/Objects/CVS/Entries
@@ -0,0 +1,9 @@
+/browser.js/1.1/Wed Aug 31 04:47:32 2005//
+/object-001.js/1.5/Sat May 26 00:19:45 2007//
+/object-002.js/1.5/Sat May 26 00:19:45 2007//
+/object-003.js/1.5/Sat May 26 00:19:45 2007//
+/object-004.js/1.5/Sat May 26 00:19:45 2007//
+/object-005.js/1.5/Sat May 26 00:19:45 2007//
+/object-006.js/1.5/Sat May 26 00:19:45 2007//
+/shell.js/1.2/Sat May 26 00:19:45 2007//
+D
diff --git a/testsrc/tests/lc2/Objects/CVS/Repository b/testsrc/tests/lc2/Objects/CVS/Repository
new file mode 100644
index 00000000..0ffbf5e8
--- /dev/null
+++ b/testsrc/tests/lc2/Objects/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc2/Objects
diff --git a/testsrc/tests/lc2/Objects/CVS/Root b/testsrc/tests/lc2/Objects/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc2/Objects/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc2/Packages/CVS/Entries b/testsrc/tests/lc2/Packages/CVS/Entries
new file mode 100644
index 00000000..e8e3d635
--- /dev/null
+++ b/testsrc/tests/lc2/Packages/CVS/Entries
@@ -0,0 +1,11 @@
+/browser.js/1.1/Wed Aug 31 04:47:32 2005//
+/package-001.js/1.5/Sat May 26 00:19:45 2007//
+/package-002.js/1.5/Sat May 26 00:19:45 2007//
+/package-003.js/1.5/Sat May 26 00:19:45 2007//
+/package-004.js/1.5/Sat May 26 00:19:45 2007//
+/package-005.js/1.5/Sat May 26 00:19:45 2007//
+/package-006.js/1.5/Sat May 26 00:19:45 2007//
+/package-007-n.js/1.5/Sat May 26 00:19:45 2007//
+/package-008-n.js/1.5/Sat May 26 00:19:45 2007//
+/shell.js/1.2/Sat May 26 00:19:45 2007//
+D
diff --git a/testsrc/tests/lc2/Packages/CVS/Repository b/testsrc/tests/lc2/Packages/CVS/Repository
new file mode 100644
index 00000000..eef5c0d7
--- /dev/null
+++ b/testsrc/tests/lc2/Packages/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc2/Packages
diff --git a/testsrc/tests/lc2/Packages/CVS/Root b/testsrc/tests/lc2/Packages/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc2/Packages/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc2/Protected/CVS/Entries b/testsrc/tests/lc2/Protected/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/testsrc/tests/lc2/Protected/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/testsrc/tests/lc2/Protected/CVS/Repository b/testsrc/tests/lc2/Protected/CVS/Repository
new file mode 100644
index 00000000..f7bcbdad
--- /dev/null
+++ b/testsrc/tests/lc2/Protected/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc2/Protected
diff --git a/testsrc/tests/lc2/Protected/CVS/Root b/testsrc/tests/lc2/Protected/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc2/Protected/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc2/misc/CVS/Entries b/testsrc/tests/lc2/misc/CVS/Entries
new file mode 100644
index 00000000..06539195
--- /dev/null
+++ b/testsrc/tests/lc2/misc/CVS/Entries
@@ -0,0 +1,5 @@
+/browser.js/1.1/Wed Aug 31 04:47:33 2005//
+/constructor.js/1.5/Sat May 26 00:19:45 2007//
+/shell.js/1.2/Sat May 26 00:19:45 2007//
+/wrapUnwrap.js/1.5/Sat May 26 00:19:45 2007//
+D
diff --git a/testsrc/tests/lc2/misc/CVS/Repository b/testsrc/tests/lc2/misc/CVS/Repository
new file mode 100644
index 00000000..26a54cb2
--- /dev/null
+++ b/testsrc/tests/lc2/misc/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc2/misc
diff --git a/testsrc/tests/lc2/misc/CVS/Root b/testsrc/tests/lc2/misc/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc2/misc/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc3/ArrayMethods/CVS/Entries b/testsrc/tests/lc3/ArrayMethods/CVS/Entries
new file mode 100644
index 00000000..342a7aee
--- /dev/null
+++ b/testsrc/tests/lc3/ArrayMethods/CVS/Entries
@@ -0,0 +1,6 @@
+/browser.js/1.1/Wed Aug 31 04:51:58 2005//
+/byte-001.js/1.7/Sat May 26 00:19:46 2007//
+/byte-002.js/1.5/Sat May 26 00:19:46 2007//
+/object-001.js/1.5/Sat May 26 00:19:46 2007//
+/shell.js/1.2/Sat May 26 00:19:46 2007//
+D
diff --git a/testsrc/tests/lc3/ArrayMethods/CVS/Repository b/testsrc/tests/lc3/ArrayMethods/CVS/Repository
new file mode 100644
index 00000000..c386c461
--- /dev/null
+++ b/testsrc/tests/lc3/ArrayMethods/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc3/ArrayMethods
diff --git a/testsrc/tests/lc3/ArrayMethods/CVS/Root b/testsrc/tests/lc3/ArrayMethods/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc3/ArrayMethods/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc3/CVS/Entries b/testsrc/tests/lc3/CVS/Entries
new file mode 100644
index 00000000..cff26e77
--- /dev/null
+++ b/testsrc/tests/lc3/CVS/Entries
@@ -0,0 +1,6 @@
+/README/1.1/Wed Aug 31 04:51:57 2005//
+/browser.js/1.16/Sat May 26 00:19:45 2007//
+/jsref.js/1.4/Mon Oct 30 16:48:37 2006//
+/shell.js/1.18/Sat May 26 00:19:45 2007//
+/template.js/1.7/Wed Aug 13 12:10:56 2008//
+D
diff --git a/testsrc/tests/lc3/CVS/Entries.Log b/testsrc/tests/lc3/CVS/Entries.Log
new file mode 100644
index 00000000..e6a562f1
--- /dev/null
+++ b/testsrc/tests/lc3/CVS/Entries.Log
@@ -0,0 +1,21 @@
+A D/ArrayMethods////
+A D/CallStatic////
+A D/Constructors////
+A D/ConvertBoolean////
+A D/ConvertJSObject////
+A D/ConvertNull////
+A D/ConvertNumber////
+A D/ConvertString////
+A D/ConvertUndefined////
+A D/Exceptions////
+A D/JSBoolean////
+A D/JSNull////
+A D/JSNumber////
+A D/JSObject////
+A D/JSUndefined////
+A D/JavaArray////
+A D/JavaClass////
+A D/JavaObject////
+A D/StringMethods////
+A D/forin////
+A D/instanceof////
diff --git a/testsrc/tests/lc3/CVS/Repository b/testsrc/tests/lc3/CVS/Repository
new file mode 100644
index 00000000..78cdd1a4
--- /dev/null
+++ b/testsrc/tests/lc3/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc3
diff --git a/testsrc/tests/lc3/CVS/Root b/testsrc/tests/lc3/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc3/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc3/CallStatic/CVS/Entries b/testsrc/tests/lc3/CallStatic/CVS/Entries
new file mode 100644
index 00000000..c2707e38
--- /dev/null
+++ b/testsrc/tests/lc3/CallStatic/CVS/Entries
@@ -0,0 +1,6 @@
+/boolean-001.js/1.5/Sat May 26 00:19:46 2007//
+/browser.js/1.1/Wed Aug 31 04:51:58 2005//
+/number-001.js/1.5/Sat May 26 00:19:46 2007//
+/object-001.js/1.5/Sat May 26 00:19:46 2007//
+/shell.js/1.2/Sat May 26 00:19:46 2007//
+D
diff --git a/testsrc/tests/lc3/CallStatic/CVS/Repository b/testsrc/tests/lc3/CallStatic/CVS/Repository
new file mode 100644
index 00000000..6d763a0f
--- /dev/null
+++ b/testsrc/tests/lc3/CallStatic/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc3/CallStatic
diff --git a/testsrc/tests/lc3/CallStatic/CVS/Root b/testsrc/tests/lc3/CallStatic/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc3/CallStatic/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc3/Constructors/CVS/Entries b/testsrc/tests/lc3/Constructors/CVS/Entries
new file mode 100644
index 00000000..b570a695
--- /dev/null
+++ b/testsrc/tests/lc3/Constructors/CVS/Entries
@@ -0,0 +1,4 @@
+/browser.js/1.1/Wed Aug 31 04:51:59 2005//
+/construct-001.js/1.6/Sat May 26 00:19:46 2007//
+/shell.js/1.2/Sat May 26 00:19:46 2007//
+D
diff --git a/testsrc/tests/lc3/Constructors/CVS/Repository b/testsrc/tests/lc3/Constructors/CVS/Repository
new file mode 100644
index 00000000..f5b0a472
--- /dev/null
+++ b/testsrc/tests/lc3/Constructors/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc3/Constructors
diff --git a/testsrc/tests/lc3/Constructors/CVS/Root b/testsrc/tests/lc3/Constructors/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc3/Constructors/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc3/ConvertBoolean/CVS/Entries b/testsrc/tests/lc3/ConvertBoolean/CVS/Entries
new file mode 100644
index 00000000..2ce44fa6
--- /dev/null
+++ b/testsrc/tests/lc3/ConvertBoolean/CVS/Entries
@@ -0,0 +1,17 @@
+/boolean-001.js/1.5/Sat May 26 00:19:46 2007//
+/boolean-002.js/1.5/Sat May 26 00:19:46 2007//
+/boolean-003.js/1.5/Sat May 26 00:19:46 2007//
+/boolean-004.js/1.5/Sat May 26 00:19:46 2007//
+/boolean-005-n.js/1.5/Sat May 26 00:19:46 2007//
+/boolean-006-n.js/1.5/Sat May 26 00:19:46 2007//
+/boolean-007-n.js/1.5/Sat May 26 00:19:46 2007//
+/boolean-008-n.js/1.5/Sat May 26 00:19:46 2007//
+/boolean-009-n.js/1.5/Sat May 26 00:19:46 2007//
+/boolean-010-n.js/1.5/Sat May 26 00:19:46 2007//
+/boolean-011-n.js/1.5/Sat May 26 00:19:46 2007//
+/boolean-012-n.js/1.5/Sat May 26 00:19:46 2007//
+/boolean-013-n.js/1.5/Sat May 26 00:19:46 2007//
+/boolean-014.js/1.5/Sat May 26 00:19:46 2007//
+/browser.js/1.1/Wed Aug 31 04:51:59 2005//
+/shell.js/1.2/Sat May 26 00:19:46 2007//
+D
diff --git a/testsrc/tests/lc3/ConvertBoolean/CVS/Repository b/testsrc/tests/lc3/ConvertBoolean/CVS/Repository
new file mode 100644
index 00000000..467cad09
--- /dev/null
+++ b/testsrc/tests/lc3/ConvertBoolean/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc3/ConvertBoolean
diff --git a/testsrc/tests/lc3/ConvertBoolean/CVS/Root b/testsrc/tests/lc3/ConvertBoolean/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc3/ConvertBoolean/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc3/ConvertJSObject/CVS/Entries b/testsrc/tests/lc3/ConvertJSObject/CVS/Entries
new file mode 100644
index 00000000..a9ba5171
--- /dev/null
+++ b/testsrc/tests/lc3/ConvertJSObject/CVS/Entries
@@ -0,0 +1,19 @@
+/ToBoolean-001.js/1.7/Sat May 26 00:19:46 2007//
+/ToByte-001.js/1.6/Sat May 26 00:19:46 2007//
+/ToByte-002.js/1.5/Sat May 26 00:19:46 2007//
+/ToChar-001.js/1.6/Sat May 26 00:19:46 2007//
+/ToChar-002.js/1.5/Sat May 26 00:19:46 2007//
+/ToDouble-001.js/1.6/Sat May 26 00:19:46 2007//
+/ToFloat-001.js/1.6/Sat May 26 00:19:46 2007//
+/ToInt-001.js/1.6/Sat May 26 00:19:46 2007//
+/ToInt-002.js/1.5/Sat May 26 00:19:46 2007//
+/ToJSObject-001.js/1.5/Sat May 26 00:19:46 2007//
+/ToLong-001.js/1.6/Sat May 26 00:19:46 2007//
+/ToLong-002.js/1.5/Sat May 26 00:19:46 2007//
+/ToObject-001.js/1.5/Sat May 26 00:19:46 2007//
+/ToShort-001.js/1.6/Sat May 26 00:19:46 2007//
+/ToShort-002.js/1.5/Sat May 26 00:19:46 2007//
+/ToString-001.js/1.5/Sat May 26 00:19:46 2007//
+/browser.js/1.1/Wed Aug 31 04:52:02 2005//
+/shell.js/1.2/Sat May 26 00:19:46 2007//
+D
diff --git a/testsrc/tests/lc3/ConvertJSObject/CVS/Repository b/testsrc/tests/lc3/ConvertJSObject/CVS/Repository
new file mode 100644
index 00000000..af4bf11d
--- /dev/null
+++ b/testsrc/tests/lc3/ConvertJSObject/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc3/ConvertJSObject
diff --git a/testsrc/tests/lc3/ConvertJSObject/CVS/Root b/testsrc/tests/lc3/ConvertJSObject/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc3/ConvertJSObject/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc3/ConvertNull/CVS/Entries b/testsrc/tests/lc3/ConvertNull/CVS/Entries
new file mode 100644
index 00000000..4c538871
--- /dev/null
+++ b/testsrc/tests/lc3/ConvertNull/CVS/Entries
@@ -0,0 +1,9 @@
+/browser.js/1.1/Wed Aug 31 04:52:03 2005//
+/null-001.js/1.5/Sat May 26 00:19:46 2007//
+/null-002.js/1.5/Sat May 26 00:19:46 2007//
+/null-003-n.js/1.5/Sat May 26 00:19:46 2007//
+/null-004-n.js/1.5/Sat May 26 00:19:46 2007//
+/null-005.js/1.5/Sat May 26 00:19:46 2007//
+/null-006-n.js/1.5/Sat May 26 00:19:46 2007//
+/shell.js/1.2/Sat May 26 00:19:46 2007//
+D
diff --git a/testsrc/tests/lc3/ConvertNull/CVS/Repository b/testsrc/tests/lc3/ConvertNull/CVS/Repository
new file mode 100644
index 00000000..eb7b7d76
--- /dev/null
+++ b/testsrc/tests/lc3/ConvertNull/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc3/ConvertNull
diff --git a/testsrc/tests/lc3/ConvertNull/CVS/Root b/testsrc/tests/lc3/ConvertNull/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc3/ConvertNull/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc3/ConvertNumber/CVS/Entries b/testsrc/tests/lc3/ConvertNumber/CVS/Entries
new file mode 100644
index 00000000..f51ad354
--- /dev/null
+++ b/testsrc/tests/lc3/ConvertNumber/CVS/Entries
@@ -0,0 +1,14 @@
+/browser.js/1.1/Wed Aug 31 04:52:03 2005//
+/number-001.js/1.5/Sat May 26 00:19:47 2007//
+/number-002.js/1.5/Sat May 26 00:19:47 2007//
+/number-003.js/1.5/Sat May 26 00:19:47 2007//
+/number-004.js/1.5/Sat May 26 00:19:47 2007//
+/number-005.js/1.5/Sat May 26 00:19:47 2007//
+/number-006.js/1.5/Sat May 26 00:19:47 2007//
+/number-007.js/1.5/Sat May 26 00:19:47 2007//
+/number-008.js/1.5/Sat May 26 00:19:47 2007//
+/number-009.js/1.5/Sat May 26 00:19:47 2007//
+/number-010.js/1.5/Sat May 26 00:19:47 2007//
+/number-011.js/1.5/Sat May 26 00:19:47 2007//
+/shell.js/1.2/Sat May 26 00:19:47 2007//
+D
diff --git a/testsrc/tests/lc3/ConvertNumber/CVS/Repository b/testsrc/tests/lc3/ConvertNumber/CVS/Repository
new file mode 100644
index 00000000..f923790c
--- /dev/null
+++ b/testsrc/tests/lc3/ConvertNumber/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc3/ConvertNumber
diff --git a/testsrc/tests/lc3/ConvertNumber/CVS/Root b/testsrc/tests/lc3/ConvertNumber/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc3/ConvertNumber/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc3/ConvertString/CVS/Entries b/testsrc/tests/lc3/ConvertString/CVS/Entries
new file mode 100644
index 00000000..ffe47bc6
--- /dev/null
+++ b/testsrc/tests/lc3/ConvertString/CVS/Entries
@@ -0,0 +1,10 @@
+/browser.js/1.1/Wed Aug 31 04:52:04 2005//
+/shell.js/1.2/Sat May 26 00:19:47 2007//
+/string-001.js/1.5/Sat May 26 00:19:47 2007//
+/string-002.js/1.5/Sat May 26 00:19:47 2007//
+/string-003.js/1.5/Sat May 26 00:19:47 2007//
+/string-004-n.js/1.5/Sat May 26 00:19:47 2007//
+/string-005-n.js/1.5/Sat May 26 00:19:47 2007//
+/string-006.js/1.5/Sat May 26 00:19:47 2007//
+/string-007-n.js/1.5/Sat May 26 00:19:47 2007//
+D
diff --git a/testsrc/tests/lc3/ConvertString/CVS/Repository b/testsrc/tests/lc3/ConvertString/CVS/Repository
new file mode 100644
index 00000000..d423e1a0
--- /dev/null
+++ b/testsrc/tests/lc3/ConvertString/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc3/ConvertString
diff --git a/testsrc/tests/lc3/ConvertString/CVS/Root b/testsrc/tests/lc3/ConvertString/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc3/ConvertString/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc3/ConvertUndefined/CVS/Entries b/testsrc/tests/lc3/ConvertUndefined/CVS/Entries
new file mode 100644
index 00000000..79c333c3
--- /dev/null
+++ b/testsrc/tests/lc3/ConvertUndefined/CVS/Entries
@@ -0,0 +1,6 @@
+/browser.js/1.1/Wed Aug 31 04:52:04 2005//
+/shell.js/1.2/Sat May 26 00:19:47 2007//
+/undefined-001-n.js/1.5/Sat May 26 00:19:47 2007//
+/undefined-002.js/1.5/Sat May 26 00:19:47 2007//
+/undefined-003.js/1.5/Sat May 26 00:19:47 2007//
+D
diff --git a/testsrc/tests/lc3/ConvertUndefined/CVS/Repository b/testsrc/tests/lc3/ConvertUndefined/CVS/Repository
new file mode 100644
index 00000000..586586ee
--- /dev/null
+++ b/testsrc/tests/lc3/ConvertUndefined/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc3/ConvertUndefined
diff --git a/testsrc/tests/lc3/ConvertUndefined/CVS/Root b/testsrc/tests/lc3/ConvertUndefined/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc3/ConvertUndefined/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc3/Exceptions/CVS/Entries b/testsrc/tests/lc3/Exceptions/CVS/Entries
new file mode 100644
index 00000000..943d6010
--- /dev/null
+++ b/testsrc/tests/lc3/Exceptions/CVS/Entries
@@ -0,0 +1,4 @@
+/browser.js/1.1/Wed Aug 31 04:52:05 2005//
+/shell.js/1.2/Sat May 26 00:19:47 2007//
+/throw_js_types.js/1.5/Sat May 26 00:19:47 2007//
+D
diff --git a/testsrc/tests/lc3/Exceptions/CVS/Repository b/testsrc/tests/lc3/Exceptions/CVS/Repository
new file mode 100644
index 00000000..f8fcad33
--- /dev/null
+++ b/testsrc/tests/lc3/Exceptions/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc3/Exceptions
diff --git a/testsrc/tests/lc3/Exceptions/CVS/Root b/testsrc/tests/lc3/Exceptions/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc3/Exceptions/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc3/JSBoolean/CVS/Entries b/testsrc/tests/lc3/JSBoolean/CVS/Entries
new file mode 100644
index 00000000..4bb7d401
--- /dev/null
+++ b/testsrc/tests/lc3/JSBoolean/CVS/Entries
@@ -0,0 +1,11 @@
+/boolean-001.js/1.6/Sat May 26 00:19:47 2007//
+/boolean-002-n.js/1.6/Sat May 26 00:19:47 2007//
+/boolean-003-n.js/1.6/Sat May 26 00:19:47 2007//
+/boolean-004-n.js/1.6/Sat May 26 00:19:47 2007//
+/boolean-005-n.js/1.6/Sat May 26 00:19:47 2007//
+/boolean-006-n.js/1.6/Sat May 26 00:19:47 2007//
+/boolean-007-n.js/1.6/Sat May 26 00:19:47 2007//
+/boolean-008-n.js/1.6/Sat May 26 00:19:47 2007//
+/browser.js/1.1/Wed Aug 31 04:52:11 2005//
+/shell.js/1.2/Sat May 26 00:19:47 2007//
+D
diff --git a/testsrc/tests/lc3/JSBoolean/CVS/Repository b/testsrc/tests/lc3/JSBoolean/CVS/Repository
new file mode 100644
index 00000000..dc1b8c9c
--- /dev/null
+++ b/testsrc/tests/lc3/JSBoolean/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc3/JSBoolean
diff --git a/testsrc/tests/lc3/JSBoolean/CVS/Root b/testsrc/tests/lc3/JSBoolean/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc3/JSBoolean/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc3/JSNull/CVS/Entries b/testsrc/tests/lc3/JSNull/CVS/Entries
new file mode 100644
index 00000000..7513b165
--- /dev/null
+++ b/testsrc/tests/lc3/JSNull/CVS/Entries
@@ -0,0 +1,8 @@
+/ToBoolean-001-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToFloat-001-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToLong-001-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToNumber-001-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToObject-001.js/1.6/Sat May 26 00:19:48 2007//
+/browser.js/1.1/Wed Aug 31 04:52:12 2005//
+/shell.js/1.2/Sat May 26 00:19:48 2007//
+D
diff --git a/testsrc/tests/lc3/JSNull/CVS/Repository b/testsrc/tests/lc3/JSNull/CVS/Repository
new file mode 100644
index 00000000..8792923c
--- /dev/null
+++ b/testsrc/tests/lc3/JSNull/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc3/JSNull
diff --git a/testsrc/tests/lc3/JSNull/CVS/Root b/testsrc/tests/lc3/JSNull/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc3/JSNull/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc3/JSNumber/CVS/Entries b/testsrc/tests/lc3/JSNumber/CVS/Entries
new file mode 100644
index 00000000..253b79ac
--- /dev/null
+++ b/testsrc/tests/lc3/JSNumber/CVS/Entries
@@ -0,0 +1,38 @@
+/ToByte-001.js/1.6/Sat May 26 00:19:48 2007//
+/ToByte-002-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToByte-003-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToByte-004.js/1.6/Sat May 26 00:19:48 2007//
+/ToByte-005-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToChar-001.js/1.6/Sat May 26 00:19:48 2007//
+/ToChar-002-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToChar-003-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToChar-004.js/1.6/Sat May 26 00:19:48 2007//
+/ToChar-005-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToChar-006-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToDouble-001.js/1.6/Sat May 26 00:19:48 2007//
+/ToDouble-002.js/1.6/Sat May 26 00:19:48 2007//
+/ToDouble-003.js/1.6/Sat May 26 00:19:48 2007//
+/ToInt-001.js/1.6/Sat May 26 00:19:48 2007//
+/ToInt-002-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToInt-003-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToInt-004.js/1.6/Sat May 26 00:19:48 2007//
+/ToInt-005-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToLong-001.js/1.6/Sat May 26 00:19:48 2007//
+/ToLong-002-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToLong-003-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToLong-004-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToLong-005-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToLong-006-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToLong-007-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToLong-008-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToLong-009-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToLong-010-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToLong-011-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToShort-001.js/1.6/Sat May 26 00:19:48 2007//
+/ToShort-002-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToShort-003-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToShort-004.js/1.6/Sat May 26 00:19:48 2007//
+/ToShort-005-n.js/1.6/Sat May 26 00:19:48 2007//
+/browser.js/1.1/Wed Aug 31 04:52:12 2005//
+/shell.js/1.2/Sat May 26 00:19:48 2007//
+D
diff --git a/testsrc/tests/lc3/JSNumber/CVS/Repository b/testsrc/tests/lc3/JSNumber/CVS/Repository
new file mode 100644
index 00000000..2999afe9
--- /dev/null
+++ b/testsrc/tests/lc3/JSNumber/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc3/JSNumber
diff --git a/testsrc/tests/lc3/JSNumber/CVS/Root b/testsrc/tests/lc3/JSNumber/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc3/JSNumber/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc3/JSObject/CVS/Entries b/testsrc/tests/lc3/JSObject/CVS/Entries
new file mode 100644
index 00000000..29e5ab6b
--- /dev/null
+++ b/testsrc/tests/lc3/JSObject/CVS/Entries
@@ -0,0 +1,18 @@
+/ToByte-001.js/1.6/Sat May 26 00:19:48 2007//
+/ToChar-001.js/1.6/Sat May 26 00:19:48 2007//
+/ToDouble-001.js/1.7/Sat May 26 00:19:48 2007//
+/ToDouble-002-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToDouble-003-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToFloat-001.js/1.7/Sat May 26 00:19:48 2007//
+/ToFloat-002-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToFloat-003-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToInt-001.js/1.6/Sat May 26 00:19:48 2007//
+/ToInt-002.js/1.6/Sat May 26 00:19:48 2007//
+/ToJSObject-001.js/1.7/Sat May 26 00:19:48 2007//
+/ToLong-001.js/1.6/Sat May 26 00:19:48 2007//
+/ToObject-001.js/1.6/Sat May 26 00:19:48 2007//
+/ToShort-001.js/1.6/Sat May 26 00:19:48 2007//
+/ToString-001.js/1.6/Sat May 26 00:19:48 2007//
+/browser.js/1.1/Wed Aug 31 04:52:19 2005//
+/shell.js/1.2/Sat May 26 00:19:48 2007//
+D
diff --git a/testsrc/tests/lc3/JSObject/CVS/Repository b/testsrc/tests/lc3/JSObject/CVS/Repository
new file mode 100644
index 00000000..5bfe547e
--- /dev/null
+++ b/testsrc/tests/lc3/JSObject/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc3/JSObject
diff --git a/testsrc/tests/lc3/JSObject/CVS/Root b/testsrc/tests/lc3/JSObject/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc3/JSObject/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc3/JSUndefined/CVS/Entries b/testsrc/tests/lc3/JSUndefined/CVS/Entries
new file mode 100644
index 00000000..0dd7bdd3
--- /dev/null
+++ b/testsrc/tests/lc3/JSUndefined/CVS/Entries
@@ -0,0 +1,13 @@
+/browser.js/1.1/Wed Aug 31 04:52:20 2005//
+/shell.js/1.2/Sat May 26 00:19:48 2007//
+/undefined-001.js/1.6/Sat May 26 00:19:48 2007//
+/undefined-002-n.js/1.6/Sat May 26 00:19:48 2007//
+/undefined-003-n.js/1.6/Sat May 26 00:19:48 2007//
+/undefined-004-n.js/1.6/Sat May 26 00:19:48 2007//
+/undefined-005-n.js/1.6/Sat May 26 00:19:48 2007//
+/undefined-006-n.js/1.6/Sat May 26 00:19:48 2007//
+/undefined-007-n.js/1.6/Sat May 26 00:19:48 2007//
+/undefined-008-n.js/1.6/Sat May 26 00:19:48 2007//
+/undefined-009-n.js/1.6/Sat May 26 00:19:48 2007//
+/undefined-010-n.js/1.6/Sat May 26 00:19:48 2007//
+D
diff --git a/testsrc/tests/lc3/JSUndefined/CVS/Repository b/testsrc/tests/lc3/JSUndefined/CVS/Repository
new file mode 100644
index 00000000..0448142b
--- /dev/null
+++ b/testsrc/tests/lc3/JSUndefined/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc3/JSUndefined
diff --git a/testsrc/tests/lc3/JSUndefined/CVS/Root b/testsrc/tests/lc3/JSUndefined/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc3/JSUndefined/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc3/JavaArray/CVS/Entries b/testsrc/tests/lc3/JavaArray/CVS/Entries
new file mode 100644
index 00000000..8095f16d
--- /dev/null
+++ b/testsrc/tests/lc3/JavaArray/CVS/Entries
@@ -0,0 +1,7 @@
+/ToArray-001.js/1.6/Sat May 26 00:19:48 2007//
+/ToArray-002-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToBoolean-001-n.js/1.6/Sat May 26 00:19:48 2007//
+/ToString-001.js/1.6/Sat May 26 00:19:48 2007//
+/browser.js/1.1/Wed Aug 31 04:52:20 2005//
+/shell.js/1.2/Sat May 26 00:19:48 2007//
+D
diff --git a/testsrc/tests/lc3/JavaArray/CVS/Repository b/testsrc/tests/lc3/JavaArray/CVS/Repository
new file mode 100644
index 00000000..d06076c9
--- /dev/null
+++ b/testsrc/tests/lc3/JavaArray/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc3/JavaArray
diff --git a/testsrc/tests/lc3/JavaArray/CVS/Root b/testsrc/tests/lc3/JavaArray/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc3/JavaArray/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc3/JavaClass/CVS/Entries b/testsrc/tests/lc3/JavaClass/CVS/Entries
new file mode 100644
index 00000000..32e80b4f
--- /dev/null
+++ b/testsrc/tests/lc3/JavaClass/CVS/Entries
@@ -0,0 +1,7 @@
+/ToClass-001.js/1.6/Sat May 26 00:19:48 2007//
+/ToJSObject-001.js/1.6/Sat May 26 00:19:48 2007//
+/ToObject-001.js/1.6/Sat May 26 00:19:48 2007//
+/ToString-001.js/1.6/Sat May 26 00:19:48 2007//
+/browser.js/1.1/Wed Aug 31 04:52:21 2005//
+/shell.js/1.2/Sat May 26 00:19:48 2007//
+D
diff --git a/testsrc/tests/lc3/JavaClass/CVS/Repository b/testsrc/tests/lc3/JavaClass/CVS/Repository
new file mode 100644
index 00000000..ee503385
--- /dev/null
+++ b/testsrc/tests/lc3/JavaClass/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc3/JavaClass
diff --git a/testsrc/tests/lc3/JavaClass/CVS/Root b/testsrc/tests/lc3/JavaClass/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc3/JavaClass/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc3/JavaObject/CVS/Entries b/testsrc/tests/lc3/JavaObject/CVS/Entries
new file mode 100644
index 00000000..d344e82d
--- /dev/null
+++ b/testsrc/tests/lc3/JavaObject/CVS/Entries
@@ -0,0 +1,40 @@
+/JavaObjectBeanProps-001.js/1.5/Sat May 26 00:19:49 2007//
+/JavaObjectFieldOrMethod-001.js/1.5/Sat May 26 00:19:49 2007//
+/JavaObjectToBoolean-001-n.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToBoolean-002-n.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToByte-001.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToByte-002-n.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToByte-003-n.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToByte-004-n.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToByte-005.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToByte-006.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToByte-007-n.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToByte-008-n.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToChar-001.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToChar-002.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToChar-003-n.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToChar-004.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToChar-005-n.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToChar-006-n.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToDouble-001.js/1.8/Sat May 26 00:19:49 2007//
+/JavaObjectToFloat-001.js/1.7/Sat May 26 00:19:49 2007//
+/JavaObjectToInt-001.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToInt-002-n.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToInt-003-n.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToInt-004-n.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToLong-001.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToLong-002-n.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToLong-003-n.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToLong-004-n.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToLong-005.js/1.8/Sat May 26 00:19:49 2007//
+/JavaObjectToLong-006-n.js/1.5/Sat May 26 00:19:49 2007//
+/JavaObjectToShort-001.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToShort-002-n.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToShort-003-n.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToShort-004-n.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToShort-005.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToShort-006.js/1.6/Sat May 26 00:19:49 2007//
+/JavaObjectToString-001.js/1.6/Sat May 26 00:19:49 2007//
+/browser.js/1.1/Wed Aug 31 04:52:28 2005//
+/shell.js/1.2/Sat May 26 00:19:49 2007//
+D
diff --git a/testsrc/tests/lc3/JavaObject/CVS/Repository b/testsrc/tests/lc3/JavaObject/CVS/Repository
new file mode 100644
index 00000000..375ea2bb
--- /dev/null
+++ b/testsrc/tests/lc3/JavaObject/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc3/JavaObject
diff --git a/testsrc/tests/lc3/JavaObject/CVS/Root b/testsrc/tests/lc3/JavaObject/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc3/JavaObject/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc3/StringMethods/CVS/Entries b/testsrc/tests/lc3/StringMethods/CVS/Entries
new file mode 100644
index 00000000..0aa4a9e0
--- /dev/null
+++ b/testsrc/tests/lc3/StringMethods/CVS/Entries
@@ -0,0 +1,4 @@
+/browser.js/1.1/Wed Aug 31 04:52:29 2005//
+/shell.js/1.2/Sat May 26 00:19:49 2007//
+/string-001.js/1.6/Sat May 26 00:19:49 2007//
+D
diff --git a/testsrc/tests/lc3/StringMethods/CVS/Repository b/testsrc/tests/lc3/StringMethods/CVS/Repository
new file mode 100644
index 00000000..9159e77a
--- /dev/null
+++ b/testsrc/tests/lc3/StringMethods/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc3/StringMethods
diff --git a/testsrc/tests/lc3/StringMethods/CVS/Root b/testsrc/tests/lc3/StringMethods/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc3/StringMethods/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc3/forin/CVS/Entries b/testsrc/tests/lc3/forin/CVS/Entries
new file mode 100644
index 00000000..3cb27d65
--- /dev/null
+++ b/testsrc/tests/lc3/forin/CVS/Entries
@@ -0,0 +1,5 @@
+/array-001.js/1.6/Sat May 26 00:19:49 2007//
+/browser.js/1.1/Wed Aug 31 04:52:29 2005//
+/object-001.js/1.7/Sat May 26 00:19:49 2007//
+/shell.js/1.2/Sat May 26 00:19:49 2007//
+D
diff --git a/testsrc/tests/lc3/forin/CVS/Repository b/testsrc/tests/lc3/forin/CVS/Repository
new file mode 100644
index 00000000..3f486891
--- /dev/null
+++ b/testsrc/tests/lc3/forin/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc3/forin
diff --git a/testsrc/tests/lc3/forin/CVS/Root b/testsrc/tests/lc3/forin/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc3/forin/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/lc3/instanceof/CVS/Entries b/testsrc/tests/lc3/instanceof/CVS/Entries
new file mode 100644
index 00000000..203a4e68
--- /dev/null
+++ b/testsrc/tests/lc3/instanceof/CVS/Entries
@@ -0,0 +1,4 @@
+/browser.js/1.1/Wed Aug 31 04:52:30 2005//
+/instanceof-001.js/1.5/Sat May 26 00:19:49 2007//
+/shell.js/1.2/Sat May 26 00:19:49 2007//
+D
diff --git a/testsrc/tests/lc3/instanceof/CVS/Repository b/testsrc/tests/lc3/instanceof/CVS/Repository
new file mode 100644
index 00000000..119e633f
--- /dev/null
+++ b/testsrc/tests/lc3/instanceof/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/lc3/instanceof
diff --git a/testsrc/tests/lc3/instanceof/CVS/Root b/testsrc/tests/lc3/instanceof/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/lc3/instanceof/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/src/CVS/Entries b/testsrc/tests/src/CVS/Entries
new file mode 100644
index 00000000..c270441b
--- /dev/null
+++ b/testsrc/tests/src/CVS/Entries
@@ -0,0 +1,2 @@
+/jstests.jar/1.4/Thu Feb 3 00:48:49 2000/-kb/
+D
diff --git a/testsrc/tests/src/CVS/Entries.Log b/testsrc/tests/src/CVS/Entries.Log
new file mode 100644
index 00000000..ce2e88cc
--- /dev/null
+++ b/testsrc/tests/src/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/com////
diff --git a/testsrc/tests/src/CVS/Repository b/testsrc/tests/src/CVS/Repository
new file mode 100644
index 00000000..d7d574c7
--- /dev/null
+++ b/testsrc/tests/src/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/src
diff --git a/testsrc/tests/src/CVS/Root b/testsrc/tests/src/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/src/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/src/com/CVS/Entries b/testsrc/tests/src/com/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/testsrc/tests/src/com/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/testsrc/tests/src/com/CVS/Entries.Log b/testsrc/tests/src/com/CVS/Entries.Log
new file mode 100644
index 00000000..e2190d64
--- /dev/null
+++ b/testsrc/tests/src/com/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/netscape////
diff --git a/testsrc/tests/src/com/CVS/Repository b/testsrc/tests/src/com/CVS/Repository
new file mode 100644
index 00000000..61164fbf
--- /dev/null
+++ b/testsrc/tests/src/com/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/src/com
diff --git a/testsrc/tests/src/com/CVS/Root b/testsrc/tests/src/com/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/src/com/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/src/com/netscape/CVS/Entries b/testsrc/tests/src/com/netscape/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/testsrc/tests/src/com/netscape/CVS/Entries.Log b/testsrc/tests/src/com/netscape/CVS/Entries.Log
new file mode 100644
index 00000000..af3dfdea
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/javascript////
diff --git a/testsrc/tests/src/com/netscape/CVS/Repository b/testsrc/tests/src/com/netscape/CVS/Repository
new file mode 100644
index 00000000..5f18fbba
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/src/com/netscape
diff --git a/testsrc/tests/src/com/netscape/CVS/Root b/testsrc/tests/src/com/netscape/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/src/com/netscape/javascript/CVS/Entries b/testsrc/tests/src/com/netscape/javascript/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/testsrc/tests/src/com/netscape/javascript/CVS/Entries.Log b/testsrc/tests/src/com/netscape/javascript/CVS/Entries.Log
new file mode 100644
index 00000000..ffcd76c3
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/qa////
diff --git a/testsrc/tests/src/com/netscape/javascript/CVS/Repository b/testsrc/tests/src/com/netscape/javascript/CVS/Repository
new file mode 100644
index 00000000..6c4bc978
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/src/com/netscape/javascript
diff --git a/testsrc/tests/src/com/netscape/javascript/CVS/Root b/testsrc/tests/src/com/netscape/javascript/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/CVS/Entries b/testsrc/tests/src/com/netscape/javascript/qa/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/CVS/Entries.Log b/testsrc/tests/src/com/netscape/javascript/qa/CVS/Entries.Log
new file mode 100644
index 00000000..d0aa7da6
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/CVS/Entries.Log
@@ -0,0 +1,3 @@
+A D/drivers////
+A D/lc3////
+A D/liveconnect////
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/CVS/Repository b/testsrc/tests/src/com/netscape/javascript/qa/CVS/Repository
new file mode 100644
index 00000000..5af742fa
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/src/com/netscape/javascript/qa
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/CVS/Root b/testsrc/tests/src/com/netscape/javascript/qa/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/drivers/CVS/Entries b/testsrc/tests/src/com/netscape/javascript/qa/drivers/CVS/Entries
new file mode 100644
index 00000000..624bb44d
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/drivers/CVS/Entries
@@ -0,0 +1,20 @@
+/LiveConnectDrv.java/1.1/Wed Feb 2 00:22:03 2000//
+/LiveConnectEnv.java/1.2/Mon Oct 27 01:49:27 2003//
+/LiveNavDrv.java/1.1/Wed Feb 2 00:22:04 2000//
+/LiveNavEnv.java/1.2/Mon Oct 27 01:49:27 2003//
+/MacRefDrv.java/1.2/Mon Oct 27 01:49:27 2003//
+/MacRefEnv.java/1.2/Mon Oct 27 01:49:27 2003//
+/NavDrv.java/1.1/Wed Feb 2 00:22:08 2000//
+/NavEnv.java/1.2/Mon Oct 27 01:49:27 2003//
+/ObservedTask.java/1.1/Wed Feb 2 00:22:12 2000//
+/RefDrv.java/1.2/Mon Oct 27 01:49:27 2003//
+/RefEnv.java/1.2/Mon Oct 27 01:49:27 2003//
+/RhinoDrv.java/1.2/Mon Oct 27 01:49:27 2003//
+/RhinoEnv.java/1.2/Wed Feb 2 00:57:01 2000//
+/TestCase.java/1.2/Mon Oct 27 01:49:27 2003//
+/TestDriver.java/1.2/Mon Oct 27 01:49:27 2003//
+/TestEnvironment.java/1.2/Mon Oct 27 01:49:27 2003//
+/TestFile.java/1.2/Mon Oct 27 01:49:27 2003//
+/TestLog.java/1.2/Mon Oct 27 01:49:27 2003//
+/TestSuite.java/1.2/Mon Oct 27 01:49:27 2003//
+D
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/drivers/CVS/Repository b/testsrc/tests/src/com/netscape/javascript/qa/drivers/CVS/Repository
new file mode 100644
index 00000000..d4c988bd
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/drivers/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/src/com/netscape/javascript/qa/drivers
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/drivers/CVS/Root b/testsrc/tests/src/com/netscape/javascript/qa/drivers/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/drivers/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/lc3/CVS/Entries b/testsrc/tests/src/com/netscape/javascript/qa/lc3/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/lc3/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/lc3/CVS/Entries.Log b/testsrc/tests/src/com/netscape/javascript/qa/lc3/CVS/Entries.Log
new file mode 100644
index 00000000..c1fde0df
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/lc3/CVS/Entries.Log
@@ -0,0 +1,6 @@
+A D/bool////
+A D/jsnull////
+A D/jsobject////
+A D/number////
+A D/string////
+A D/undefined////
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/lc3/CVS/Repository b/testsrc/tests/src/com/netscape/javascript/qa/lc3/CVS/Repository
new file mode 100644
index 00000000..40b842df
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/lc3/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/src/com/netscape/javascript/qa/lc3
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/lc3/CVS/Root b/testsrc/tests/src/com/netscape/javascript/qa/lc3/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/lc3/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/lc3/bool/CVS/Entries b/testsrc/tests/src/com/netscape/javascript/qa/lc3/bool/CVS/Entries
new file mode 100644
index 00000000..d6c3ee22
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/lc3/bool/CVS/Entries
@@ -0,0 +1,12 @@
+/Boolean_001.java/1.1/Wed May 26 22:06:41 1999//
+/Boolean_002.java/1.1/Wed May 26 22:06:41 1999//
+/Boolean_003.java/1.1/Wed May 26 22:06:41 1999//
+/Boolean_004.java/1.1/Wed May 26 22:06:42 1999//
+/Boolean_005.java/1.1/Wed May 26 22:06:42 1999//
+/Boolean_006.java/1.1/Wed May 26 22:06:42 1999//
+/Boolean_007.java/1.1/Wed May 26 22:06:43 1999//
+/Boolean_008.java/1.1/Wed May 26 22:06:43 1999//
+/Boolean_009.java/1.1/Wed May 26 22:06:43 1999//
+/Boolean_010.java/1.1/Wed May 26 22:06:43 1999//
+/Boolean_011.java/1.1/Wed May 26 22:06:44 1999//
+D
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/lc3/bool/CVS/Repository b/testsrc/tests/src/com/netscape/javascript/qa/lc3/bool/CVS/Repository
new file mode 100644
index 00000000..539ad827
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/lc3/bool/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/src/com/netscape/javascript/qa/lc3/bool
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/lc3/bool/CVS/Root b/testsrc/tests/src/com/netscape/javascript/qa/lc3/bool/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/lc3/bool/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/lc3/jsnull/CVS/Entries b/testsrc/tests/src/com/netscape/javascript/qa/lc3/jsnull/CVS/Entries
new file mode 100644
index 00000000..821f14ce
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/lc3/jsnull/CVS/Entries
@@ -0,0 +1,2 @@
+/Null_001.java/1.1/Wed May 26 22:06:46 1999//
+D
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/lc3/jsnull/CVS/Repository b/testsrc/tests/src/com/netscape/javascript/qa/lc3/jsnull/CVS/Repository
new file mode 100644
index 00000000..906223c1
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/lc3/jsnull/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/src/com/netscape/javascript/qa/lc3/jsnull
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/lc3/jsnull/CVS/Root b/testsrc/tests/src/com/netscape/javascript/qa/lc3/jsnull/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/lc3/jsnull/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/lc3/jsobject/CVS/Entries b/testsrc/tests/src/com/netscape/javascript/qa/lc3/jsobject/CVS/Entries
new file mode 100644
index 00000000..26dee427
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/lc3/jsobject/CVS/Entries
@@ -0,0 +1,11 @@
+/JSObject_001.java/1.1/Wed May 26 22:06:47 1999//
+/JSObject_002.java/1.1/Wed May 26 22:06:47 1999//
+/JSObject_003.java/1.1/Wed May 26 22:06:48 1999//
+/JSObject_004.java/1.1/Wed May 26 22:06:48 1999//
+/JSObject_005.java/1.1/Wed May 26 22:06:49 1999//
+/JSObject_006.java/1.1/Wed May 26 22:06:49 1999//
+/JSObject_007.java/1.1/Wed May 26 22:06:49 1999//
+/JSObject_008.java/1.1/Wed May 26 22:06:50 1999//
+/JSObject_009.java/1.1/Wed May 26 22:06:50 1999//
+/JSObject_010.java/1.1/Wed May 26 22:06:50 1999//
+D
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/lc3/jsobject/CVS/Repository b/testsrc/tests/src/com/netscape/javascript/qa/lc3/jsobject/CVS/Repository
new file mode 100644
index 00000000..39a90c0e
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/lc3/jsobject/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/src/com/netscape/javascript/qa/lc3/jsobject
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/lc3/jsobject/CVS/Root b/testsrc/tests/src/com/netscape/javascript/qa/lc3/jsobject/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/lc3/jsobject/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/lc3/number/CVS/Entries b/testsrc/tests/src/com/netscape/javascript/qa/lc3/number/CVS/Entries
new file mode 100644
index 00000000..46474c6c
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/lc3/number/CVS/Entries
@@ -0,0 +1,11 @@
+/Number_001.java/1.1/Wed May 26 22:06:53 1999//
+/Number_002.java/1.1/Wed May 26 22:06:53 1999//
+/Number_003.java/1.1/Wed May 26 22:06:53 1999//
+/Number_004.java/1.1/Wed May 26 22:06:54 1999//
+/Number_005.java/1.1/Wed May 26 22:06:54 1999//
+/Number_006.java/1.1/Wed May 26 22:06:55 1999//
+/Number_007.java/1.1/Wed May 26 22:06:55 1999//
+/Number_008.java/1.1/Wed May 26 22:06:55 1999//
+/Number_009.java/1.1/Wed May 26 22:06:56 1999//
+/Number_010.java/1.1/Wed May 26 22:06:56 1999//
+D
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/lc3/number/CVS/Repository b/testsrc/tests/src/com/netscape/javascript/qa/lc3/number/CVS/Repository
new file mode 100644
index 00000000..7772be46
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/lc3/number/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/src/com/netscape/javascript/qa/lc3/number
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/lc3/number/CVS/Root b/testsrc/tests/src/com/netscape/javascript/qa/lc3/number/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/lc3/number/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/lc3/string/CVS/Entries b/testsrc/tests/src/com/netscape/javascript/qa/lc3/string/CVS/Entries
new file mode 100644
index 00000000..604a8889
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/lc3/string/CVS/Entries
@@ -0,0 +1,6 @@
+/String_001.java/1.1/Wed May 26 22:06:58 1999//
+/String_002.java/1.1/Wed May 26 22:06:58 1999//
+/String_003.java/1.1/Wed May 26 22:06:58 1999//
+/String_004.java/1.1/Wed May 26 22:06:59 1999//
+/String_005.java/1.1/Wed May 26 22:06:59 1999//
+D
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/lc3/string/CVS/Repository b/testsrc/tests/src/com/netscape/javascript/qa/lc3/string/CVS/Repository
new file mode 100644
index 00000000..e9412f1f
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/lc3/string/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/src/com/netscape/javascript/qa/lc3/string
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/lc3/string/CVS/Root b/testsrc/tests/src/com/netscape/javascript/qa/lc3/string/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/lc3/string/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/lc3/undefined/CVS/Entries b/testsrc/tests/src/com/netscape/javascript/qa/lc3/undefined/CVS/Entries
new file mode 100644
index 00000000..a333bc9a
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/lc3/undefined/CVS/Entries
@@ -0,0 +1,2 @@
+/Undefined_001.java/1.1/Wed May 26 22:07:01 1999//
+D
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/lc3/undefined/CVS/Repository b/testsrc/tests/src/com/netscape/javascript/qa/lc3/undefined/CVS/Repository
new file mode 100644
index 00000000..f46e8ef7
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/lc3/undefined/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/src/com/netscape/javascript/qa/lc3/undefined
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/lc3/undefined/CVS/Root b/testsrc/tests/src/com/netscape/javascript/qa/lc3/undefined/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/lc3/undefined/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/CVS/Entries b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/CVS/Entries
new file mode 100644
index 00000000..d2b33465
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/CVS/Entries
@@ -0,0 +1,5 @@
+/DataTypeClass.java/1.4/Mon Oct 27 01:49:27 2003//
+/JSObjectConversion.java/1.2/Mon Oct 27 01:49:27 2003//
+/JSObjectEval.java/1.1/Wed May 26 22:14:26 1999//
+/LiveConnectTest.java/1.3/Fri Nov 25 21:56:49 2005//
+D
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/CVS/Entries.Log b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/CVS/Entries.Log
new file mode 100644
index 00000000..96202662
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/CVS/Entries.Log
@@ -0,0 +1,7 @@
+A D/call////
+A D/datatypes////
+A D/exception////
+A D/jsobject////
+A D/member////
+A D/slot////
+A D/tostring////
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/CVS/Repository b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/CVS/Repository
new file mode 100644
index 00000000..b6a866d7
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/src/com/netscape/javascript/qa/liveconnect
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/CVS/Root b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/call/CVS/Entries b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/call/CVS/Entries
new file mode 100644
index 00000000..f11f8079
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/call/CVS/Entries
@@ -0,0 +1,2 @@
+/Call_001.java/1.1/Wed May 26 22:14:29 1999//
+D
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/call/CVS/Repository b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/call/CVS/Repository
new file mode 100644
index 00000000..b2e11297
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/call/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/src/com/netscape/javascript/qa/liveconnect/call
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/call/CVS/Root b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/call/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/call/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/datatypes/CVS/Entries b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/datatypes/CVS/Entries
new file mode 100644
index 00000000..cb3e7aa4
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/datatypes/CVS/Entries
@@ -0,0 +1,20 @@
+/DataTypes_001.java/1.2/Mon Oct 27 01:49:27 2003//
+/DataTypes_002.java/1.1/Wed May 26 22:14:32 1999//
+/DataTypes_003.java/1.1/Wed May 26 22:14:32 1999//
+/DataTypes_004.java/1.1/Wed May 26 22:14:33 1999//
+/DataTypes_005.java/1.1/Wed May 26 22:14:33 1999//
+/DataTypes_006.java/1.1/Wed May 26 22:14:34 1999//
+/DataTypes_007.java/1.1/Wed May 26 22:14:34 1999//
+/DataTypes_008.java/1.1/Wed May 26 22:14:35 1999//
+/DataTypes_009.java/1.1/Wed May 26 22:14:35 1999//
+/DataTypes_010.java/1.1/Wed May 26 22:14:36 1999//
+/DataTypes_011.java/1.1/Wed May 26 22:14:36 1999//
+/DataTypes_012.java/1.1/Wed May 26 22:14:36 1999//
+/DataTypes_013.java/1.1/Wed May 26 22:14:37 1999//
+/DataTypes_014.java/1.1/Wed May 26 22:14:37 1999//
+/DataTypes_015.java/1.1/Wed May 26 22:14:38 1999//
+/DataTypes_016.java/1.1/Wed May 26 22:14:38 1999//
+/DataTypes_017.java/1.2/Wed Feb 2 00:57:03 2000//
+/DataTypes_018.java/1.1/Wed May 26 22:14:39 1999//
+/DataTypes_019.java/1.1/Wed May 26 22:14:39 1999//
+D
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/datatypes/CVS/Repository b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/datatypes/CVS/Repository
new file mode 100644
index 00000000..1af1aebe
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/datatypes/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/src/com/netscape/javascript/qa/liveconnect/datatypes
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/datatypes/CVS/Root b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/datatypes/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/datatypes/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/exception/CVS/Entries b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/exception/CVS/Entries
new file mode 100644
index 00000000..9cf28011
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/exception/CVS/Entries
@@ -0,0 +1,2 @@
+/Exception_001.java/1.1/Wed May 26 22:14:42 1999//
+D
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/exception/CVS/Repository b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/exception/CVS/Repository
new file mode 100644
index 00000000..79db5a00
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/exception/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/src/com/netscape/javascript/qa/liveconnect/exception
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/exception/CVS/Root b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/exception/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/exception/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/jsobject/CVS/Entries b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/jsobject/CVS/Entries
new file mode 100644
index 00000000..fb9961ac
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/jsobject/CVS/Entries
@@ -0,0 +1,2 @@
+/JSObject_001.java/1.1/Wed May 26 22:14:43 1999//
+D
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/jsobject/CVS/Repository b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/jsobject/CVS/Repository
new file mode 100644
index 00000000..b35a446c
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/jsobject/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/src/com/netscape/javascript/qa/liveconnect/jsobject
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/jsobject/CVS/Root b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/jsobject/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/jsobject/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/member/CVS/Entries b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/member/CVS/Entries
new file mode 100644
index 00000000..00918622
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/member/CVS/Entries
@@ -0,0 +1,3 @@
+/Member_001.java/1.1/Wed May 26 22:14:45 1999//
+/Member_002.java/1.1/Wed May 26 22:14:45 1999//
+D
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/member/CVS/Repository b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/member/CVS/Repository
new file mode 100644
index 00000000..01142f51
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/member/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/src/com/netscape/javascript/qa/liveconnect/member
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/member/CVS/Root b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/member/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/member/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/slot/CVS/Entries b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/slot/CVS/Entries
new file mode 100644
index 00000000..d1155ad1
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/slot/CVS/Entries
@@ -0,0 +1,7 @@
+/Slot_001.java/1.1/Wed May 26 22:14:47 1999//
+/Slot_002.java/1.1/Wed May 26 22:14:48 1999//
+/Slot_003.java/1.1/Wed May 26 22:14:48 1999//
+/Slot_004.java/1.1/Wed May 26 22:14:49 1999//
+/Slot_005.java/1.1/Wed May 26 22:14:49 1999//
+/Slot_006.java/1.1/Wed May 26 22:14:49 1999//
+D
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/slot/CVS/Repository b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/slot/CVS/Repository
new file mode 100644
index 00000000..cc731342
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/slot/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/src/com/netscape/javascript/qa/liveconnect/slot
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/slot/CVS/Root b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/slot/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/slot/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/tostring/CVS/Entries b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/tostring/CVS/Entries
new file mode 100644
index 00000000..139ab577
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/tostring/CVS/Entries
@@ -0,0 +1,2 @@
+/ToString_001.java/1.1/Wed May 26 22:14:51 1999//
+D
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/tostring/CVS/Repository b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/tostring/CVS/Repository
new file mode 100644
index 00000000..18635b58
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/tostring/CVS/Repository
@@ -0,0 +1 @@
+mozilla/js/tests/src/com/netscape/javascript/qa/liveconnect/tostring
diff --git a/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/tostring/CVS/Root b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/tostring/CVS/Root
new file mode 100644
index 00000000..cdb6f4a0
--- /dev/null
+++ b/testsrc/tests/src/com/netscape/javascript/qa/liveconnect/tostring/CVS/Root
@@ -0,0 +1 @@
+:pserver:[email protected] :/cvsroot
diff --git a/tools/ci/linux/release.sh b/tools/ci/linux/release.sh
deleted file mode 100755
index 26f319d9..00000000
--- a/tools/ci/linux/release.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-BUILDROOT=${BUILDROOT:-github/rhino}
-
-(cd $BUILDROOT; ./gradlew clean jar sourceJar rhinoJavadocJar distZip)
-testStatus=$?
-exit ${testStatus}
diff --git a/tools/ci/linux/rhino_continuous.cfg b/tools/ci/linux/rhino_continuous.cfg
new file mode 100644
index 00000000..d5de0352
--- /dev/null
+++ b/tools/ci/linux/rhino_continuous.cfg
@@ -0,0 +1,8 @@
+build_file: "rhino/tools/ci/linux/test.sh"
+timeout_mins: 60
+
+action {
+ define_artifacts {
+ regex: "**/test-results/*.xml"
+ }
+}
\ No newline at end of file
diff --git a/tools/ci/linux/test.sh b/tools/ci/linux/test.sh
index d3c683f8..0f043cd3 100755
--- a/tools/ci/linux/test.sh
+++ b/tools/ci/linux/test.sh
@@ -3,14 +3,10 @@
BUILDROOT=${BUILDROOT:-github/rhino}
(cd $BUILDROOT; git submodule init; git submodule update)
-(cd $BUILDROOT; ./gradlew clean check)
-testStatus=$?
+(cd $BUILDROOT; ./gradlew clean test)
for n in ${BUILDROOT}/buildGradle/test-results/*.xml
do
bn=`basename $n .xml`
mv $n ${BUILDROOT}/buildGradle/test-results/${bn}_sponge_log.xml
done
-
-exit ${testStatus}
-
diff --git a/toolsrc/org/mozilla/javascript/tools/debugger/SwingGui.java b/toolsrc/org/mozilla/javascript/tools/debugger/SwingGui.java
index a0328d12..9fcc1bd7 100644
--- a/toolsrc/org/mozilla/javascript/tools/debugger/SwingGui.java
+++ b/toolsrc/org/mozilla/javascript/tools/debugger/SwingGui.java
@@ -41,6 +41,7 @@ import java.util.EventObject;
import java.util.Map;
import java.util.HashMap;
import java.util.Properties;
+import java.util.TreeMap;
import java.io.*;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.TreePath;
@@ -122,7 +123,7 @@ public class SwingGui extends JFrame implements GuiCallback {
* Hash table of script URLs to their internal frames.
*/
private final Map fileWindows =
- Collections.synchronizedMap(new HashMap());
+ Collections.synchronizedMap(new TreeMap());
/**
@@ -449,7 +450,19 @@ public class SwingGui extends JFrame implements GuiCallback {
* @param lineNumber the line number to select, or -1
*/
protected void showFileWindow(String sourceUrl, int lineNumber) {
- FileWindow w = getFileWindow(sourceUrl);
+ FileWindow w;
+ if (sourceUrl != null) {
+ w = getFileWindow(sourceUrl);
+ }
+ else {
+ JInternalFrame f = getSelectedFrame();
+ if (f != null && f instanceof FileWindow) {
+ w = (FileWindow) f;
+ }
+ else {
+ w = currentWindow;
+ }
+ }
if (w == null) {
Dim.SourceInfo si = dim.sourceInfo(sourceUrl);
createFileWindow(si, -1);
@@ -458,6 +471,9 @@ public class SwingGui extends JFrame implements GuiCallback {
if (lineNumber > -1) {
int start = w.getPosition(lineNumber-1);
int end = w.getPosition(lineNumber)-1;
+ if (start <= 0) {
+ return;
+ }
w.textArea.select(start);
w.textArea.setCaretPosition(start);
w.textArea.moveCaretPosition(end);
@@ -860,6 +876,26 @@ public class SwingGui extends JFrame implements GuiCallback {
FindFunction dlg = new FindFunction(this, "Go to function",
"Function");
dlg.showDialog(this);
+ } else if (cmd.equals("Go to line...")) {
+ final String s = (String) JOptionPane.showInputDialog(
+ this,
+ "Line number",
+ "Go to line...",
+ JOptionPane.QUESTION_MESSAGE,
+ null,
+ null,
+ null);
+ if (s == null) {
+ return;
+ }
+ try {
+ final int line = Integer.parseInt(s);
+ showFileWindow(null, line);
+ }
+ catch (final NumberFormatException nfe) {
+ // ignore
+ }
+
} else if (cmd.equals("Tile")) {
JInternalFrame[] frames = desk.getAllFrames();
int count = frames.length;
@@ -3219,8 +3255,9 @@ class Menubar extends JMenuBar implements ActionListener {
KeyEvent.VK_N,
0,
KeyEvent.VK_Q};
- String[] editItems = {"Cut", "Copy", "Paste", "Go to function..."};
- char[] editShortCuts = {'T', 'C', 'P', 'F'};
+ String[] editItems = {"Cut", "Copy", "Paste", "Go to function...", "Go to line..."};
+ char[] editShortCuts = {'T', 'C', 'P', 'F', 'L'};
+ int[] editAccelerators = {0, 0, 0, 0, KeyEvent.VK_L };
String[] debugItems = {"Break", "Go", "Step Into", "Step Over", "Step Out"};
char[] debugShortCuts = {'B', 'G', 'I', 'O', 'T'};
String[] plafItems = {"Metal", "Windows", "Motif"};
@@ -3262,6 +3299,10 @@ class Menubar extends JMenuBar implements ActionListener {
editShortCuts[i]);
item.addActionListener(this);
editMenu.add(item);
+ if (editAccelerators[i] != 0) {
+ KeyStroke k = KeyStroke.getKeyStroke(editAccelerators[i], Event.CTRL_MASK);
+ item.setAccelerator(k);
+ }
}
for (int i = 0; i < plafItems.length; ++i) {
JMenuItem item = new JMenuItem(plafItems[i],
diff --git a/toolsrc/org/mozilla/javascript/tools/shell/Global.java b/toolsrc/org/mozilla/javascript/tools/shell/Global.java
index f6a25210..3d732bdf 100644
--- a/toolsrc/org/mozilla/javascript/tools/shell/Global.java
+++ b/toolsrc/org/mozilla/javascript/tools/shell/Global.java
@@ -417,18 +417,20 @@ public class Global extends ImporterTopLevel
* (since 2 tests were executed).
*/
public static Object doctest(Context cx, Scriptable thisObj,
- Object[] args, Function funObj) {
- if (args.length == 0) {
- return Boolean.FALSE;
- }
- String session = Context.toString(args[0]);
+ Object[] args, Function funObj)
+ {
+ if (args.length == 0) {
+ return Boolean.FALSE;
+ }
+ String session = Context.toString(args[0]);
Global global = getInstance(funObj);
return new Integer(global.runDoctest(cx, global, session, null, 0));
}
public int runDoctest(Context cx, Scriptable scope, String session,
- String sourceName, int lineNumber) {
- doctestCanonicalizations = new HashMap();
+ String sourceName, int lineNumber)
+ {
+ doctestCanonicalizations = new HashMap();
String[] lines = session.split("\r\n?|\n");
String prompt0 = this.prompts[0].trim();
String prompt1 = this.prompts[1].trim();
@@ -437,61 +439,62 @@ public class Global extends ImporterTopLevel
while (i < lines.length && !lines[i].trim().startsWith(prompt0)) {
i++; // skip lines that don't look like shell sessions
}
- while (i < lines.length) {
- String inputString = lines[i].trim().substring(prompt0.length());
+ while (i < lines.length) {
+ String inputString = lines[i].trim().substring(prompt0.length());
inputString += "\n";
- i++;
- while (i < lines.length && lines[i].trim().startsWith(prompt1)) {
- inputString += lines[i].trim().substring(prompt1.length());
- inputString += "\n";
- i++;
- }
+ i++;
+ while (i < lines.length && lines[i].trim().startsWith(prompt1)) {
+ inputString += lines[i].trim().substring(prompt1.length());
+ inputString += "\n";
+ i++;
+ }
String expectedString = "";
while (i < lines.length &&
- !lines[i].trim().startsWith(prompt0)) {
+ !lines[i].trim().startsWith(prompt0))
+ {
expectedString += lines[i] + "\n";
i++;
}
- PrintStream savedOut = this.getOut();
- PrintStream savedErr = this.getErr();
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- ByteArrayOutputStream err = new ByteArrayOutputStream();
- this.setOut(new PrintStream(out));
- this.setErr(new PrintStream(err));
- String resultString = "";
- ErrorReporter savedErrorReporter = cx.getErrorReporter();
- cx.setErrorReporter(new ToolErrorReporter(false, this.getErr()));
- try {
- testCount++;
- Object result = cx.evaluateString(scope, inputString,
- "doctest input", 1, null);
- if (result != Context.getUndefinedValue() &&
- !(result instanceof Function &&
- inputString.trim().startsWith("function"))) {
- resultString = Context.toString(result);
- }
- } catch (RhinoException e) {
+ PrintStream savedOut = this.getOut();
+ PrintStream savedErr = this.getErr();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ ByteArrayOutputStream err = new ByteArrayOutputStream();
+ this.setOut(new PrintStream(out));
+ this.setErr(new PrintStream(err));
+ String resultString = "";
+ ErrorReporter savedErrorReporter = cx.getErrorReporter();
+ cx.setErrorReporter(new ToolErrorReporter(false, this.getErr()));
+ try {
+ testCount++;
+ Object result = cx.evaluateString(scope, inputString,
+ "doctest input", 1, null);
+ if (result != Context.getUndefinedValue() &&
+ !(result instanceof Function &&
+ inputString.trim().startsWith("function")))
+ {
+ resultString = Context.toString(result);
+ }
+ } catch (RhinoException e) {
ToolErrorReporter.reportException(cx.getErrorReporter(), e);
- } finally {
- this.setOut(savedOut);
- this.setErr(savedErr);
- cx.setErrorReporter(savedErrorReporter);
- resultString += err.toString() + out.toString();
- }
- if (!doctestOutputMatches(expectedString, resultString)) {
- String message = "doctest failure running:\n" +
+ } finally {
+ this.setOut(savedOut);
+ this.setErr(savedErr);
+ cx.setErrorReporter(savedErrorReporter);
+ resultString += err.toString() + out.toString();
+ }
+ if (!doctestOutputMatches(expectedString, resultString)) {
+ String message = "doctest failure running:\n" +
inputString +
"expected: " + expectedString +
"actual: " + resultString + "\n";
- if (sourceName != null) {
+ if (sourceName != null)
throw Context.reportRuntimeError(message, sourceName,
- lineNumber + i - 1, null, 0);
- } else {
+ lineNumber+i-1, null, 0);
+ else
throw Context.reportRuntimeError(message);
- }
- }
- }
- return testCount;
+ }
+ }
+ return testCount;
}
/**
diff --git a/toolsrc/org/mozilla/javascript/tools/shell/ShellLine.java b/toolsrc/org/mozilla/javascript/tools/shell/ShellLine.java
index 91d21907..51fcae4e 100644
--- a/toolsrc/org/mozilla/javascript/tools/shell/ShellLine.java
+++ b/toolsrc/org/mozilla/javascript/tools/shell/ShellLine.java
@@ -10,6 +10,7 @@ import java.io.InputStream;
import java.nio.charset.Charset;
import org.mozilla.javascript.Scriptable;
+import org.mozilla.javascript.tools.shell.ShellConsole;
/**
* Provides a specialized input stream for consoles to handle line
diff --git a/xmlimplsrc/org/mozilla/javascript/xmlimpl/XML.java b/xmlimplsrc/org/mozilla/javascript/xmlimpl/XML.java
index c32ad69f..224cf611 100644
--- a/xmlimplsrc/org/mozilla/javascript/xmlimpl/XML.java
+++ b/xmlimplsrc/org/mozilla/javascript/xmlimpl/XML.java
@@ -33,7 +33,7 @@ class XML extends XMLObjectImpl {
// We use the underlying document structure if the node is not
// "standalone," but we need to just replace the XmlNode instance
// otherwise
- if (this.node.parent() != null) {
+ if (this.node.parent() != null || false) {
this.node.replaceWith(value.node);
} else {
this.initialize(value.node);