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 (https://github.com/mozilla/rhino/releases/tag/Rhino1_7_6_RELEASE) April 15, 2015
  Rhino 1.7.7 (https://github.com/mozilla/rhino/releases/tag/Rhino1_7_7_RELEASE) June 17, 2015
  Rhino 1.7.7.1 (https://github.com/mozilla/rhino/releases/tag/Rhino1_7_7_1_RELEASE) February 2, 2016
- Rhino 1.7.7.2 (https://github.com/mozilla/rhino/releases/tag/Rhino1_7_7_2_Release) 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
+
+
+ Java 6 +  
+    
+   (http://ci.apigee.io/job/Mozilla%20Rhino%20Java%206)
+ Java 7 +  
+    
+   (http://ci.apigee.io/job/Mozilla%20Rhino)
+ Java 8 +  
+    
+   (http://ci.apigee.io/job/Mozilla%20Rhino%20Java%208)
+
+
 ### 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 @@
-<?xml version="1.0"?>
-<!DOCTYPE module PUBLIC
-          "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
-          "http://checkstyle.sourceforge.net/dtds/configuration_1_3.dtd">
-
-
-
-<module name="Checker">
-    
-
-    
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    <module name="FileTabCharacter"/>
-
-    
-    
-    
-
-    
-    
-    
-    
-    
-    
-
-    <module name="TreeWalker">
-
-        
-        
-        
-
-        
-        
-        
-
-        
-        
-        
-        
-        <module name="IllegalImport"/>
-        
-        <module name="RedundantImport"/>
-        <module name="UnusedImports">
-            <property name="processJavadoc" value="true"/>
-        </module>
-        
-        
-        
-
-        
-        
-        
-
-        
-        
-        
-
-        
-        
-        
-
-        
-        
-        
-        <module name="CovariantEquals"/>
-        <module name="EmptyStatement"/>
-        <module name="EqualsHashCode"/>
-        <module name="FallThrough"/>
-        
-        <module name="IllegalInstantiation"/>
-        <module name="NoClone"/>
-        <module name="NoFinalizer"/>
-        
-        <module name="SimplifyBooleanExpression"/>
-        <module name="SimplifyBooleanReturn"/>
-        <module name="StringLiteralEquality"/>
-        <module name="SuperClone"/>
-
-        
-        
-        
-
-        
-        
-        
-        
-        
-        
-        <module name="UpperEll"/>
-        
-
-    </module>
-
-</module>
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
 
   <available property="jdk15"
              classname="java.lang.reflect.ParameterizedType" />
-  <available property="jdk18"
-             classname="java.util.stream.Stream" />
 
-  <target name="compile" depends="compile-most,compile-jdk15,compile-jdk18">
+  <target name="compile" depends="compile-most,compile-jdk15">
   </target>
 
   <target name="shell" depends="compile">
@@ -32,15 +30,13 @@ Requires Ant version 1.2
     <javac srcdir="src"
            destdir="${classes}"
            includes="org/**/*.java"
+           excludes="org/**/jdk15/*.java"
            deprecation="on"
            debug="${debug}"
            includeAntRuntime="false"
            encoding="UTF-8"
            target="${target-jvm}"
-           source="${source-level}">
-      <exclude name="org/**/jdk15/*.java"/>
-      <exclude name="org/**/jdk18/*.java"/>
-    </javac>
+           source="${source-level}" />
     <copy todir="${classes}">
       <fileset dir="src" includes="org/**/*.properties" />
       <filterset>
@@ -54,19 +50,6 @@ Requires Ant version 1.2
     <javac srcdir="src"
            destdir="${classes}"
            includes="org/**/jdk15/*.java"
-           excludes="org/**/jdk18/*.java"
-           deprecation="on"
-           debug="${debug}"
-           includeAntRuntime="false"
-           encoding="UTF-8"
-           target="${target-jvm}"
-           source="${source-level}" />
-  </target>
-
-  <target name="compile-jdk18" if="jdk18">
-    <javac srcdir="src"
-           destdir="${classes}"
-           includes="org/**/jdk18/*.java"
            deprecation="on"
            debug="${debug}"
            includeAntRuntime="false"
diff --git a/src/manifest b/src/manifest
index badaac68..8c5cbdcb 100644
--- a/src/manifest
+++ b/src/manifest
@@ -1,6 +1,6 @@
 Manifest-Version: 1.0
 Main-Class: org.mozilla.javascript.tools.shell.Main
 Implementation-Version: 1.7.8-SNAPSHOT
-Implementation-Title: Mozilla Rhino 1.7.8 SNAPSHOT
+Implementation-Title: Mozilla Rhino 1.7.8
 Implementation-Vendor: Mozilla Foundation
 Implementation-URL: http://www.mozilla.org/rhino
diff --git a/src/org/mozilla/classfile/ClassFileWriter.java b/src/org/mozilla/classfile/ClassFileWriter.java
index 5fb19137..52d07e8d 100644
--- a/src/org/mozilla/classfile/ClassFileWriter.java
+++ b/src/org/mozilla/classfile/ClassFileWriter.java
@@ -6,13 +6,11 @@
 
 package org.mozilla.classfile;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
 import org.mozilla.javascript.ObjToIntMap;
 import org.mozilla.javascript.ObjArray;
 import org.mozilla.javascript.UintMap;
 
+import java.io.*;
 import java.util.Arrays;
 
 /**
@@ -1885,7 +1883,6 @@ public class ClassFileWriter {
                 case ByteCode.CASTORE:
                 case ByteCode.SASTORE:
                     pop();
-                    // fallthru
                 case ByteCode.PUTFIELD: // pop; pop
                 case ByteCode.IF_ICMPEQ:
                 case ByteCode.IF_ICMPNE:
@@ -1896,7 +1893,6 @@ public class ClassFileWriter {
                 case ByteCode.IF_ACMPEQ:
                 case ByteCode.IF_ACMPNE:
                     pop();
-                    // fallthru
                 case ByteCode.IFEQ: // pop
                 case ByteCode.IFNE:
                 case ByteCode.IFLT:
@@ -1938,7 +1934,6 @@ public class ClassFileWriter {
                 case ByteCode.DCMPL:
                 case ByteCode.DCMPG:
                     pop();
-                    // fallthru
                 case ByteCode.INEG: // pop; push(INTEGER)
                 case ByteCode.L2I:
                 case ByteCode.F2I:
@@ -1949,7 +1944,6 @@ public class ClassFileWriter {
                 case ByteCode.ARRAYLENGTH:
                 case ByteCode.INSTANCEOF:
                     pop();
-                    // fallthru
                 case ByteCode.ICONST_M1: // push(INTEGER)
                 case ByteCode.ICONST_0:
                 case ByteCode.ICONST_1:
@@ -1979,13 +1973,11 @@ public class ClassFileWriter {
                 case ByteCode.LOR:
                 case ByteCode.LXOR:
                     pop();
-                    // fallthru
                 case ByteCode.LNEG: // pop; push(LONG)
                 case ByteCode.I2L:
                 case ByteCode.F2L:
                 case ByteCode.D2L:
                     pop();
-                    // fallthru
                 case ByteCode.LCONST_0: // push(LONG)
                 case ByteCode.LCONST_1:
                 case ByteCode.LLOAD:
@@ -2002,13 +1994,11 @@ public class ClassFileWriter {
                 case ByteCode.FDIV:
                 case ByteCode.FREM:
                     pop();
-                    // fallthru
                 case ByteCode.FNEG: // pop; push(FLOAT)
                 case ByteCode.I2F:
                 case ByteCode.L2F:
                 case ByteCode.D2F:
                     pop();
-                    // fallthru
                 case ByteCode.FCONST_0: // push(FLOAT)
                 case ByteCode.FCONST_1:
                 case ByteCode.FCONST_2:
@@ -2026,13 +2016,11 @@ public class ClassFileWriter {
                 case ByteCode.DDIV:
                 case ByteCode.DREM:
                     pop();
-                    // fallthru
                 case ByteCode.DNEG: // pop; push(DOUBLE)
                 case ByteCode.I2D:
                 case ByteCode.L2D:
                 case ByteCode.F2D:
                     pop();
-                    // fallthru
                 case ByteCode.DCONST_0: // push(DOUBLE)
                 case ByteCode.DCONST_1:
                 case ByteCode.DLOAD:
@@ -2199,7 +2187,6 @@ public class ClassFileWriter {
                     break;
                 case ByteCode.GETFIELD:
                     pop();
-                    // fallthru
                 case ByteCode.GETSTATIC:
                     index = getOperand(bci + 1, 2);
                     FieldOrMethodRef f = (FieldOrMethodRef)
@@ -2882,7 +2869,7 @@ public class ClassFileWriter {
                     case 'J' :
                     case 'D' :
                         --stackDiff;
-                        // fallthru
+                        // fall thru
                     case 'B' :
                     case 'S' :
                     case 'C' :
@@ -2917,9 +2904,9 @@ public class ClassFileWriter {
                                 ++index;
                                 continue;
                             case 'L':
-                                // fallthru
+                                // fall thru
                         }
-                          // fallthru
+                          // fall thru
                     case 'L' : {
                         --stackDiff;
                         ++count;
@@ -2944,7 +2931,7 @@ public class ClassFileWriter {
                     case 'J' :
                     case 'D' :
                         ++stackDiff;
-                        // fallthru
+                        // fall thru
                     case 'B' :
                     case 'S' :
                     case 'C' :
@@ -2954,7 +2941,7 @@ public class ClassFileWriter {
                     case 'L' :
                     case '[' :
                         ++stackDiff;
-                        // fallthru
+                        // fall thru
                     case 'V' :
                         break;
                 }
diff --git a/src/org/mozilla/javascript/Arguments.java b/src/org/mozilla/javascript/Arguments.java
index 6ece5809..776935fa 100644
--- a/src/org/mozilla/javascript/Arguments.java
+++ b/src/org/mozilla/javascript/Arguments.java
@@ -14,7 +14,7 @@ package org.mozilla.javascript;
  * @see org.mozilla.javascript.NativeCall
  * @author Norris Boyd
  */
-final class Arguments extends IdScriptableObject
+class Arguments extends IdScriptableObject
 {
     static final long serialVersionUID = 4275508002492040609L;
 
@@ -43,9 +43,23 @@ final class Arguments extends IdScriptableObject
             callerObj = NOT_FOUND;
         }
 
-        defineProperty(SymbolKey.ITERATOR, iteratorMethod, ScriptableObject.DONTENUM);
+        defineProperty(NativeSymbol.ITERATOR_PROPERTY, iteratorMethod, ScriptableObject.DONTENUM);
     }
 
+    public Arguments(final Arguments original) {
+        this.activation = original.activation;
+
+        setParentScope(original.getParentScope());
+        setPrototype(original.getPrototype());
+
+        args = original.args;
+        lengthObj = original.lengthObj;
+        calleeObj = original.calleeObj;
+
+        callerObj = original.callerObj;
+    }
+    
+    
     @Override
     public String getClassName()
     {
@@ -74,7 +88,7 @@ final class Arguments extends IdScriptableObject
         putIntoActivation(index, value);
       }
       synchronized (this) {
-        if (args == activation.originalArgs) {
+        if (activation != null && args == activation.originalArgs) {
           args = args.clone();
         }
         args[index] = value;
@@ -124,6 +138,8 @@ final class Arguments extends IdScriptableObject
         if (cx.isStrictMode()) {
             return false;
         }
+        if (activation == null) return false;
+
         NativeFunction f = activation.function;
         int definedCount = f.getParamCount();
         if (index < definedCount) {
@@ -284,9 +300,9 @@ final class Arguments extends IdScriptableObject
     }
 
     @Override
-    Object[] getIds(boolean getNonEnumerable, boolean getSymbols)
+    Object[] getIds(boolean getAll)
     {
-        Object[] ids = super.getIds(getNonEnumerable, getSymbols);
+        Object[] ids = super.getIds(getAll);
         if (args.length != 0) {
             boolean[] present = new boolean[args.length];
             int extraCount = args.length;
@@ -302,7 +318,7 @@ final class Arguments extends IdScriptableObject
                     }
                 }
             }
-            if (!getNonEnumerable) { // avoid adding args which were redefined to non-enumerable
+            if (!getAll) { // avoid adding args which were redefined to non-enumerable
               for (int i = 0; i < present.length; i++) {
                 if (!present[i] && super.has(i, this)) {
                   present[i] = true;
@@ -329,9 +345,6 @@ final class Arguments extends IdScriptableObject
 
     @Override
     protected ScriptableObject getOwnPropertyDescriptor(Context cx, Object id) {
-        if (id instanceof Scriptable) {
-           return super.getOwnPropertyDescriptor(cx, id);
-        }
       double d = ScriptRuntime.toNumber(id);
       int index = (int) d;
       if (d != index) {
@@ -404,6 +417,11 @@ final class Arguments extends IdScriptableObject
         calleeObj = null;
     }
 
+    @Override
+    public Object getDefaultValue(Class<?> 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 <class-name>.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;
  * <p> 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<args.length; ++i) {
+        	if (args[i] instanceof Delegator) {
+        		args[i] = ((Delegator) args[i]).getDelegee();
+        	}
+        }
+        
         try {
             try {
                 return method.invoke(target, args);
@@ -145,7 +202,22 @@ final class MemberBox implements Serializable
             } while ((e instanceof InvocationTargetException));
             if (e instanceof ContinuationPending)
                 throw (ContinuationPending) e;
-            throw Context.throwAsScriptRuntimeEx(e);
+
+            if (e instanceof RhinoException)
+                throw Context.throwAsScriptRuntimeEx(e);            
+            else
+            	throw new RuntimeException("Exception invoking " + method.getName(), e);
+        } catch (IllegalArgumentException iae) {
+            StringBuilder builder = new StringBuilder();
+            for (Object arg : args) {
+                String type = arg == null ? "null" : arg.getClass().getSimpleName();
+                if (builder.length() != 0) {
+                    builder.append(", ");
+                }
+                builder.append(type);
+            }
+            throw new IllegalArgumentException("Exception invoking " + method.getDeclaringClass().getSimpleName()
+                    + '.' +  method.getName() + "() with arguments [" + builder + "]", iae);
         } catch (Exception ex) {
             throw Context.throwAsScriptRuntimeEx(ex);
         }
diff --git a/src/org/mozilla/javascript/NativeArray.java b/src/org/mozilla/javascript/NativeArray.java
index 66bd960c..78b0aaa1 100644
--- a/src/org/mozilla/javascript/NativeArray.java
+++ b/src/org/mozilla/javascript/NativeArray.java
@@ -7,15 +7,20 @@
 package org.mozilla.javascript;
 
 import org.mozilla.javascript.regexp.NativeRegExp;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
 
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Comparator;
 import java.util.Iterator;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.ListIterator;
 import java.util.NoSuchElementException;
+import java.util.Set;
 
+import static org.mozilla.javascript.NativeSymbol.ITERATOR_PROPERTY;
 import static org.mozilla.javascript.ScriptRuntimeES6.requireObjectCoercible;
 
 /**
@@ -25,6 +30,24 @@ import static org.mozilla.javascript.ScriptRuntimeES6.requireObjectCoercible;
  */
 public class NativeArray extends IdScriptableObject implements List
 {
+    static {
+        try {
+            // A workaround to change the default sort logic, to allow non-conformant comparison method
+            // this starts to be observed since Java 7
+            Class<?> 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<Object> allIds = new LinkedHashSet<Object>(
+            Arrays.asList(this.getIds()));
+      allIds.addAll(Arrays.asList(super.getAllIds()));
+      return allIds.toArray();
+    }
+
     public Integer[] getIndexIds() {
       Object[] ids = getIds();
       java.util.List<Integer> indices = new java.util.ArrayList<Integer>(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<Object>() {
-                  public int compare(final Object x, final Object y) {
-                    // This comparator is invoked only for non-undefined objects
+            comparator = new Comparator<Object>() {
+                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<Object>() {
+                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<Object> STRING_COMPARATOR = new StringLikeComparator();
-    private static final Comparator<Object> DEFAULT_COMPARATOR = new ElementComparator();
-
-    public static final class StringLikeComparator
-      implements Comparator<Object> {
-
-      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<Object> {
-
-      private final Comparator<Object> child;
-
-      public ElementComparator() {
-        child = STRING_COMPARATOR;
-      }
-
-      public ElementComparator(Comparator<Object> 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<Object> syms = new ArrayList<Object>();
-                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<String, NativeSymbol> 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<String, NativeSymbol> table = getGlobalMap();
-        for (Map.Entry<String, NativeSymbol> 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<String, NativeSymbol> getGlobalMap() {
-        ScriptableObject top = (ScriptableObject)getTopLevelScope(this);
-        Map<String, NativeSymbol> map = (Map<String, NativeSymbol>)top.getAssociatedValue(GLOBAL_TABLE_KEY);
-        if (map == null) {
-            map = new HashMap<String, NativeSymbol>();
-            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 ' ': // <SP>
-            case '\n': // <LF>
-            case '\r': // <CR>
-            case '\t': // <TAB>
-            case '\u00A0': // <NBSP>
-            case '\u000C': // <FF>
-            case '\u000B': // <VT>
-            case '\u2028': // <LS>
-            case '\u2029': // <PS>
-            case '\uFEFF': // <BOM>
-                return true;
-            default:
-                return Character.getType(c) == Character.SPACE_SEPARATOR;
-        }
+    	switch (c) {
+    		case ' ': // <SP>
+    		case '\n': // <LF>
+    		case '\r': // <CR>
+    		case '\t': // <TAB>
+    		case '\u00A0': // <NBSP>
+    		case '\u000C': // <FF>
+    		case '\u000B': // <VT>
+    		case '\u2028': // <LS>
+    		case '\u2029': // <PS>
+        case '\uFEFF': // <BOM>
+    			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<Integer> integers = new TreeSet<Integer>();
+            List<Object> others = new ArrayList<Object>();
+            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.
      * <p>
@@ -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.
      * <p>
@@ -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<Object> 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<Object>
     {
         @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<Object> cmp)
-    {
-        insertionSort(a, 0, a.length - 1, cmp);
-    }
-
-    public static void insertionSort(Object[] a, int start, int end, Comparator<Object> 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<Object> cmp)
-    {
-        hybridSort(a, 0, a.length - 1, cmp, log2(a.length) * 2);
-    }
-
-    private static void hybridSort(Object[] a, int start, int end, Comparator<Object> 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<Object> 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<Object[]> contextLocal = new ThreadLocal<Object[]>();
+
+    @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<Object[]> contextLocal = new ThreadLocal<Object[]>();
-
-    @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, <min>, <max>, <parencount>,
-                            // <parenindex>, <next> ... <ENDCHILD>
-                            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, <min>, <max>, <parencount>,
+                        // <parenindex>, <next> ... <ENDCHILD>
+                        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<T>
                 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<T>
     @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<T>
                 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<T>
         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<T>
         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<String, Script> scripts = new HashMap<String, Script>();
-
-        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<String, Double> results = new HashMap<String, Double>();
-
-    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<Object>
-    {
-        @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<String, Object> 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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/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<String,FileWindow> fileWindows =
-        Collections.synchronizedMap(new HashMap<String,FileWindow>());
+        Collections.synchronizedMap(new TreeMap<String,FileWindow>());
 
 
     /**
@@ -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, String>();
+                          String sourceName, int lineNumber)
+    {
+        doctestCanonicalizations = new HashMap<String,String>();
         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);
