diff --git a/rhino/src/main/java/org/mozilla/javascript/LazilyLoadedCtor.java b/rhino/src/main/java/org/mozilla/javascript/LazilyLoadedCtor.java index b069bcfafc..602e953b32 100644 --- a/rhino/src/main/java/org/mozilla/javascript/LazilyLoadedCtor.java +++ b/rhino/src/main/java/org/mozilla/javascript/LazilyLoadedCtor.java @@ -35,7 +35,7 @@ public LazilyLoadedCtor( this(scope, propertyName, className, sealed, false); } - LazilyLoadedCtor( + public LazilyLoadedCtor( ScriptableObject scope, String propertyName, String className, diff --git a/rhino/src/main/java/org/mozilla/javascript/RegExpProxy.java b/rhino/src/main/java/org/mozilla/javascript/RegExpProxy.java index 092a93f136..c9abe50779 100644 --- a/rhino/src/main/java/org/mozilla/javascript/RegExpProxy.java +++ b/rhino/src/main/java/org/mozilla/javascript/RegExpProxy.java @@ -18,6 +18,8 @@ public interface RegExpProxy { public static final int RA_REPLACE_ALL = 3; public static final int RA_SEARCH = 4; + public void register(ScriptableObject scope, boolean sealed); + public boolean isRegExp(Scriptable obj); public Object compileRegExp(Context cx, String source, String flags); diff --git a/rhino/src/main/java/org/mozilla/javascript/ScriptRuntime.java b/rhino/src/main/java/org/mozilla/javascript/ScriptRuntime.java index ccf5d091cd..4f7c2fb09c 100644 --- a/rhino/src/main/java/org/mozilla/javascript/ScriptRuntime.java +++ b/rhino/src/main/java/org/mozilla/javascript/ScriptRuntime.java @@ -19,7 +19,6 @@ import java.util.ResourceBundle; import java.util.function.BiConsumer; import org.mozilla.javascript.ast.FunctionNode; -import org.mozilla.javascript.regexp.NativeRegExpStringIterator; import org.mozilla.javascript.v8dtoa.DoubleConversion; import org.mozilla.javascript.v8dtoa.FastDtoa; import org.mozilla.javascript.xml.XMLLib; @@ -189,7 +188,7 @@ public static ScriptableObject initSafeStandardObjects( NativeArrayIterator.init(scope, sealed); NativeStringIterator.init(scope, sealed); - NativeRegExpStringIterator.init(scope, sealed); + getRegExpProxy(cx).register(scope, sealed); NativeJavaObject.init(scope, sealed); NativeJavaMap.init(scope, sealed); @@ -198,8 +197,6 @@ public static ScriptableObject initSafeStandardObjects( cx.hasFeature(Context.FEATURE_E4X) && cx.getE4xImplementationFactory() != null; // define lazy-loaded properties using their class name - new LazilyLoadedCtor( - scope, "RegExp", "org.mozilla.javascript.regexp.NativeRegExp", sealed, true); new LazilyLoadedCtor( scope, "Continuation", "org.mozilla.javascript.NativeContinuation", sealed, true); diff --git a/rhino/src/main/java/org/mozilla/javascript/regexp/RegExpImpl.java b/rhino/src/main/java/org/mozilla/javascript/regexp/RegExpImpl.java index f0910fd9ff..ef6ab3560f 100644 --- a/rhino/src/main/java/org/mozilla/javascript/regexp/RegExpImpl.java +++ b/rhino/src/main/java/org/mozilla/javascript/regexp/RegExpImpl.java @@ -9,6 +9,7 @@ import org.mozilla.javascript.Context; import org.mozilla.javascript.Function; import org.mozilla.javascript.Kit; +import org.mozilla.javascript.LazilyLoadedCtor; import org.mozilla.javascript.RegExpProxy; import org.mozilla.javascript.ScriptRuntime; import org.mozilla.javascript.Scriptable; @@ -18,6 +19,13 @@ /** */ public class RegExpImpl implements RegExpProxy { + @Override + public void register(ScriptableObject scope, boolean sealed) { + NativeRegExpStringIterator.init(scope, sealed); + new LazilyLoadedCtor( + scope, "RegExp", "org.mozilla.javascript.regexp.NativeRegExp", sealed, true); + } + @Override public boolean isRegExp(Scriptable obj) { return obj instanceof NativeRegExp;