33
44using Jint ;
55using IOriginalPrimitiveInstance = Jint . Native . IPrimitiveInstance ;
6- using OriginalCancellationConstraint = Jint . Constraints . CancellationConstraint ;
76using OriginalDebuggerEventHandler = Jint . Runtime . Debugger . DebugHandler . DebugEventHandler ;
87using OriginalDebuggerStatementHandlingMode = Jint . Runtime . Debugger . DebuggerStatementHandling ;
98using OriginalEngine = Jint . Engine ;
1312using OriginalMemoryLimitExceededException = Jint . Runtime . MemoryLimitExceededException ;
1413using OriginalObjectInstance = Jint . Native . Object . ObjectInstance ;
1514using OriginalParsedScript = Esprima . Ast . Script ;
16- using OriginalParser = Esprima . JavaScriptParser ;
1715using OriginalParserException = Esprima . ParserException ;
18- using OriginalParserOptions = Esprima . ParserOptions ;
1916using OriginalRecursionDepthOverflowException = Jint . Runtime . RecursionDepthOverflowException ;
2017using OriginalRuntimeException = Jint . Runtime . JintException ;
2118using OriginalStatementsCountOverflowException = Jint . Runtime . StatementsCountOverflowException ;
@@ -52,19 +49,13 @@ public sealed class JintJsEngine : JsEngineBase
5249 /// <summary>
5350 /// Version of original JS engine
5451 /// </summary>
55- private const string EngineVersion = "3.0.0 Beta 2040 " ;
52+ private const string EngineVersion = "3.0.0 Beta 2041 " ;
5653
5754 /// <summary>
5855 /// Jint JS engine
5956 /// </summary>
6057 private OriginalEngine _jsEngine ;
6158
62- /// <summary>
63- /// Esprima .NET JS parser
64- /// </summary>
65- /// <remarks>Used for pre-compilation of scripts.</remarks>
66- private OriginalParser _jsParser ;
67-
6859 /// <summary>
6960 /// Token source for canceling of script execution
7061 /// </summary>
@@ -73,7 +64,7 @@ public sealed class JintJsEngine : JsEngineBase
7364 /// <summary>
7465 /// Constraint for canceling of script execution
7566 /// </summary>
76- private OriginalCancellationConstraint _cancellationConstraint ;
67+ private CustomCancellationConstraint _cancellationConstraint ;
7768
7869 /// <summary>
7970 /// Debugger break callback
@@ -90,11 +81,6 @@ public sealed class JintJsEngine : JsEngineBase
9081 /// </summary>
9182 private readonly object _executionSynchronizer = new object ( ) ;
9283
93- /// <summary>
94- /// Synchronizer of script pre-compilation
95- /// </summary>
96- private readonly object _precompilationSynchronizer = new object ( ) ;
97-
9884 /// <summary>
9985 /// Unique document name manager
10086 /// </summary>
@@ -116,7 +102,7 @@ public JintJsEngine()
116102 public JintJsEngine ( JintSettings settings )
117103 {
118104 _cancellationTokenSource = new CancellationTokenSource ( ) ;
119- _cancellationConstraint = new OriginalCancellationConstraint ( _cancellationTokenSource . Token ) ;
105+ _cancellationConstraint = new CustomCancellationConstraint ( _cancellationTokenSource . Token ) ;
120106
121107 JintSettings jintSettings = settings ?? new JintSettings ( ) ;
122108 _debuggerBreakCallback = jintSettings . DebuggerBreakCallback ;
@@ -128,7 +114,7 @@ public JintJsEngine(JintSettings settings)
128114 {
129115 _jsEngine = new OriginalEngine ( options => {
130116 options
131- . WithoutConstraint ( c => c is OriginalCancellationConstraint )
117+ . WithoutConstraint ( c => c is CustomCancellationConstraint )
132118 . Constraint ( _cancellationConstraint )
133119 . DebuggerStatementHandling ( debuggerStatementHandlingMode )
134120 . DebugMode ( jintSettings . EnableDebugging )
@@ -206,7 +192,7 @@ private static WrapperCompilationException WrapParserException(OriginalParserExc
206192 {
207193 string description = originalParserException . Description ;
208194 string type = JsErrorType . Syntax ;
209- string documentName = originalParserException . SourceText ;
195+ string documentName = originalParserException . SourceLocation ?? string . Empty ;
210196 int lineNumber = originalParserException . LineNumber ;
211197 int columnNumber = originalParserException . Column ;
212198 string message = JsErrorHelpers . GenerateScriptErrorMessage ( type , description , documentName , lineNumber ,
@@ -363,21 +349,13 @@ protected override IPrecompiledScript InnerPrecompile(string code, string docume
363349 OriginalParsedScript parsedScript ;
364350 string uniqueDocumentName = _documentNameManager . GetUniqueName ( documentName ) ;
365351
366- lock ( _precompilationSynchronizer )
352+ try
367353 {
368- if ( _jsParser == null )
369- {
370- _jsParser = new OriginalParser ( OriginalParserOptions . Default ) ;
371- }
372-
373- try
374- {
375- parsedScript = _jsParser . ParseScript ( code , uniqueDocumentName ) ;
376- }
377- catch ( OriginalParserException e )
378- {
379- throw WrapParserException ( e ) ;
380- }
354+ parsedScript = OriginalEngine . PrepareScript ( code , uniqueDocumentName ) ;
355+ }
356+ catch ( OriginalParserException e )
357+ {
358+ throw WrapParserException ( e ) ;
381359 }
382360
383361 return new JintPrecompiledScript ( parsedScript ) ;
@@ -725,7 +703,6 @@ public override void Dispose()
725703 _jsEngine = null ;
726704 }
727705
728- _jsParser = null ;
729706 _debuggerStepCallback = null ;
730707 _debuggerBreakCallback = null ;
731708 _cancellationConstraint = null ;
0 commit comments