3
3
4
4
using Jint ;
5
5
using IOriginalPrimitiveInstance = Jint . Native . IPrimitiveInstance ;
6
- using OriginalCancellationConstraint = Jint . Constraints . CancellationConstraint ;
7
6
using OriginalDebuggerEventHandler = Jint . Runtime . Debugger . DebugHandler . DebugEventHandler ;
8
7
using OriginalDebuggerStatementHandlingMode = Jint . Runtime . Debugger . DebuggerStatementHandling ;
9
8
using OriginalEngine = Jint . Engine ;
13
12
using OriginalMemoryLimitExceededException = Jint . Runtime . MemoryLimitExceededException ;
14
13
using OriginalObjectInstance = Jint . Native . Object . ObjectInstance ;
15
14
using OriginalParsedScript = Esprima . Ast . Script ;
16
- using OriginalParser = Esprima . JavaScriptParser ;
17
15
using OriginalParserException = Esprima . ParserException ;
18
- using OriginalParserOptions = Esprima . ParserOptions ;
19
16
using OriginalRecursionDepthOverflowException = Jint . Runtime . RecursionDepthOverflowException ;
20
17
using OriginalRuntimeException = Jint . Runtime . JintException ;
21
18
using OriginalStatementsCountOverflowException = Jint . Runtime . StatementsCountOverflowException ;
@@ -52,19 +49,13 @@ public sealed class JintJsEngine : JsEngineBase
52
49
/// <summary>
53
50
/// Version of original JS engine
54
51
/// </summary>
55
- private const string EngineVersion = "3.0.0 Beta 2040 " ;
52
+ private const string EngineVersion = "3.0.0 Beta 2041 " ;
56
53
57
54
/// <summary>
58
55
/// Jint JS engine
59
56
/// </summary>
60
57
private OriginalEngine _jsEngine ;
61
58
62
- /// <summary>
63
- /// Esprima .NET JS parser
64
- /// </summary>
65
- /// <remarks>Used for pre-compilation of scripts.</remarks>
66
- private OriginalParser _jsParser ;
67
-
68
59
/// <summary>
69
60
/// Token source for canceling of script execution
70
61
/// </summary>
@@ -73,7 +64,7 @@ public sealed class JintJsEngine : JsEngineBase
73
64
/// <summary>
74
65
/// Constraint for canceling of script execution
75
66
/// </summary>
76
- private OriginalCancellationConstraint _cancellationConstraint ;
67
+ private CustomCancellationConstraint _cancellationConstraint ;
77
68
78
69
/// <summary>
79
70
/// Debugger break callback
@@ -90,11 +81,6 @@ public sealed class JintJsEngine : JsEngineBase
90
81
/// </summary>
91
82
private readonly object _executionSynchronizer = new object ( ) ;
92
83
93
- /// <summary>
94
- /// Synchronizer of script pre-compilation
95
- /// </summary>
96
- private readonly object _precompilationSynchronizer = new object ( ) ;
97
-
98
84
/// <summary>
99
85
/// Unique document name manager
100
86
/// </summary>
@@ -116,7 +102,7 @@ public JintJsEngine()
116
102
public JintJsEngine ( JintSettings settings )
117
103
{
118
104
_cancellationTokenSource = new CancellationTokenSource ( ) ;
119
- _cancellationConstraint = new OriginalCancellationConstraint ( _cancellationTokenSource . Token ) ;
105
+ _cancellationConstraint = new CustomCancellationConstraint ( _cancellationTokenSource . Token ) ;
120
106
121
107
JintSettings jintSettings = settings ?? new JintSettings ( ) ;
122
108
_debuggerBreakCallback = jintSettings . DebuggerBreakCallback ;
@@ -128,7 +114,7 @@ public JintJsEngine(JintSettings settings)
128
114
{
129
115
_jsEngine = new OriginalEngine ( options => {
130
116
options
131
- . WithoutConstraint ( c => c is OriginalCancellationConstraint )
117
+ . WithoutConstraint ( c => c is CustomCancellationConstraint )
132
118
. Constraint ( _cancellationConstraint )
133
119
. DebuggerStatementHandling ( debuggerStatementHandlingMode )
134
120
. DebugMode ( jintSettings . EnableDebugging )
@@ -206,7 +192,7 @@ private static WrapperCompilationException WrapParserException(OriginalParserExc
206
192
{
207
193
string description = originalParserException . Description ;
208
194
string type = JsErrorType . Syntax ;
209
- string documentName = originalParserException . SourceText ;
195
+ string documentName = originalParserException . SourceLocation ?? string . Empty ;
210
196
int lineNumber = originalParserException . LineNumber ;
211
197
int columnNumber = originalParserException . Column ;
212
198
string message = JsErrorHelpers . GenerateScriptErrorMessage ( type , description , documentName , lineNumber ,
@@ -363,21 +349,13 @@ protected override IPrecompiledScript InnerPrecompile(string code, string docume
363
349
OriginalParsedScript parsedScript ;
364
350
string uniqueDocumentName = _documentNameManager . GetUniqueName ( documentName ) ;
365
351
366
- lock ( _precompilationSynchronizer )
352
+ try
367
353
{
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 ) ;
381
359
}
382
360
383
361
return new JintPrecompiledScript ( parsedScript ) ;
@@ -725,7 +703,6 @@ public override void Dispose()
725
703
_jsEngine = null ;
726
704
}
727
705
728
- _jsParser = null ;
729
706
_debuggerStepCallback = null ;
730
707
_debuggerBreakCallback = null ;
731
708
_cancellationConstraint = null ;
0 commit comments