@tracecode/harness 0.6.6 → 0.7.0-beta8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +48 -0
- package/README.md +134 -15
- package/THIRD_PARTY_NOTICES.md +170 -0
- package/dist/browser.cjs +2361 -1033
- package/dist/browser.cjs.map +1 -1
- package/dist/browser.d.cts +33 -3
- package/dist/browser.d.ts +33 -3
- package/dist/browser.js +2357 -1033
- package/dist/browser.js.map +1 -1
- package/dist/cli.cjs +160 -23
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +161 -24
- package/dist/cli.js.map +1 -1
- package/dist/core.cjs +748 -867
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +21 -85
- package/dist/core.d.ts +21 -85
- package/dist/core.js +734 -855
- package/dist/core.js.map +1 -1
- package/dist/cpp-worker-client-Bn7kC0_L.d.ts +84 -0
- package/dist/cpp-worker-client-BzdJLuZa.d.cts +84 -0
- package/dist/cpp.cjs +1063 -0
- package/dist/cpp.cjs.map +1 -0
- package/dist/cpp.d.cts +7 -0
- package/dist/cpp.d.ts +7 -0
- package/dist/cpp.js +1035 -0
- package/dist/cpp.js.map +1 -0
- package/dist/csharp-worker-client-DMHIa2YG.d.cts +69 -0
- package/dist/csharp-worker-client-JwqS6LiX.d.ts +69 -0
- package/dist/csharp.cjs +1012 -0
- package/dist/csharp.cjs.map +1 -0
- package/dist/csharp.d.cts +7 -0
- package/dist/csharp.d.ts +7 -0
- package/dist/csharp.js +984 -0
- package/dist/csharp.js.map +1 -0
- package/dist/index.cjs +3142 -1160
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +13 -5
- package/dist/index.d.ts +13 -5
- package/dist/index.js +3117 -1148
- package/dist/index.js.map +1 -1
- package/dist/internal/browser.cjs +1639 -30
- package/dist/internal/browser.cjs.map +1 -1
- package/dist/internal/browser.d.cts +6 -199
- package/dist/internal/browser.d.ts +6 -199
- package/dist/internal/browser.js +1636 -30
- package/dist/internal/browser.js.map +1 -1
- package/dist/java-worker-client-BOwKW-11.d.cts +72 -0
- package/dist/java-worker-client-C97DDnCp.d.ts +72 -0
- package/dist/java.cjs +1225 -0
- package/dist/java.cjs.map +1 -0
- package/dist/java.d.cts +7 -0
- package/dist/java.d.ts +7 -0
- package/dist/java.js +1197 -0
- package/dist/java.js.map +1 -0
- package/dist/javascript-worker-client-CYBGEEvc.d.cts +51 -0
- package/dist/javascript-worker-client-DIX1Mp21.d.ts +51 -0
- package/dist/javascript.cjs +1063 -19
- package/dist/javascript.cjs.map +1 -1
- package/dist/javascript.d.cts +7 -4
- package/dist/javascript.d.ts +7 -4
- package/dist/javascript.js +1061 -19
- package/dist/javascript.js.map +1 -1
- package/dist/pyodide-worker-client-C-2rfHj9.d.ts +111 -0
- package/dist/pyodide-worker-client-Cn0a8Uv3.d.cts +111 -0
- package/dist/python.cjs +1282 -74
- package/dist/python.cjs.map +1 -1
- package/dist/python.d.cts +20 -14
- package/dist/python.d.ts +20 -14
- package/dist/python.js +1279 -74
- package/dist/python.js.map +1 -1
- package/dist/runtime-language-info-BFUSti3-.d.ts +43 -0
- package/dist/runtime-language-info-Bxza1cI2.d.cts +43 -0
- package/dist/runtime-types-2qM0MukN.d.cts +244 -0
- package/dist/runtime-types-2qM0MukN.d.ts +244 -0
- package/package.json +73 -8
- package/workers/cpp/cpp-compiler-frame.html +82 -0
- package/workers/cpp/cpp-compiler-worker.js +131 -0
- package/workers/cpp/cpp-worker.js +5790 -0
- package/workers/cpp/tracecode_runtime.hpp +6169 -0
- package/workers/csharp/csharp-worker.js +301 -0
- package/workers/java/.build/classes/harness/browser/JavaRewriteLibrary.class +0 -0
- package/workers/java/java-source-augmentations.js +907 -0
- package/workers/java/java-worker.js +2161 -177
- package/workers/java/src/harness/browser/JavaRewriteLibrary.java +1659 -32
- package/workers/java/src/javafx/util/Pair.java +42 -0
- package/workers/java/src/tracecode/browser/BrowserCompileAndTraceLibrary.java +714 -0
- package/workers/java/src/tracecode/browser/BrowserCompileAndTraceMain.java +76 -0
- package/workers/java/src/tracecode/browser/RuntimeProbeMain.java +14 -0
- package/workers/java/src/tracecode/user/TraceHooks.java +1414 -0
- package/workers/javascript/javascript-libraries-entry.js +71 -0
- package/workers/javascript/javascript-worker.js +2055 -424
- package/workers/python/generated-python-harness-snippets.js +4 -4
- package/workers/python/pyodide-worker.js +222 -61
- package/workers/python/runtime-core.js +1387 -301
- package/workers/vendor/csharp/.stamp +0 -0
- package/workers/vendor/csharp/TraceCode.CSharpHost.runtimeconfig.json +32 -0
- package/workers/vendor/csharp/_framework/Microsoft.CSharp.wasm +0 -0
- package/workers/vendor/csharp/_framework/Microsoft.CodeAnalysis.CSharp.wasm +0 -0
- package/workers/vendor/csharp/_framework/Microsoft.CodeAnalysis.wasm +0 -0
- package/workers/vendor/csharp/_framework/Microsoft.VisualBasic.Core.wasm +0 -0
- package/workers/vendor/csharp/_framework/Microsoft.VisualBasic.wasm +0 -0
- package/workers/vendor/csharp/_framework/Microsoft.Win32.Primitives.wasm +0 -0
- package/workers/vendor/csharp/_framework/Microsoft.Win32.Registry.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.AppContext.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Buffers.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Collections.Concurrent.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Collections.Immutable.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Collections.NonGeneric.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Collections.Specialized.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Collections.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.ComponentModel.Annotations.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.ComponentModel.DataAnnotations.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.ComponentModel.EventBasedAsync.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.ComponentModel.Primitives.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.ComponentModel.TypeConverter.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.ComponentModel.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Configuration.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Console.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Core.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Data.Common.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Data.DataSetExtensions.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Data.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Diagnostics.Contracts.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Diagnostics.Debug.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Diagnostics.DiagnosticSource.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Diagnostics.FileVersionInfo.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Diagnostics.Process.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Diagnostics.StackTrace.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Diagnostics.TextWriterTraceListener.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Diagnostics.Tools.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Diagnostics.TraceSource.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Diagnostics.Tracing.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Drawing.Primitives.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Drawing.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Dynamic.Runtime.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Formats.Asn1.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Formats.Tar.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Globalization.Calendars.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Globalization.Extensions.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Globalization.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.Compression.Brotli.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.Compression.FileSystem.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.Compression.ZipFile.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.Compression.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.FileSystem.AccessControl.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.FileSystem.DriveInfo.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.FileSystem.Primitives.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.FileSystem.Watcher.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.FileSystem.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.IsolatedStorage.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.MemoryMappedFiles.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.Pipelines.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.Pipes.AccessControl.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.Pipes.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.UnmanagedMemoryStream.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Linq.AsyncEnumerable.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Linq.Expressions.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Linq.Parallel.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Linq.Queryable.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Linq.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Memory.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.Http.Json.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.Http.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.HttpListener.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.Mail.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.NameResolution.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.NetworkInformation.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.Ping.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.Primitives.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.Quic.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.Requests.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.Security.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.ServerSentEvents.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.ServicePoint.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.Sockets.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.WebClient.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.WebHeaderCollection.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.WebProxy.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.WebSockets.Client.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.WebSockets.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Numerics.Vectors.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Numerics.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.ObjectModel.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Private.CoreLib.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Private.DataContractSerialization.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Private.Uri.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Private.Xml.Linq.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Private.Xml.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Reflection.DispatchProxy.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Reflection.Emit.ILGeneration.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Reflection.Emit.Lightweight.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Reflection.Emit.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Reflection.Extensions.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Reflection.Metadata.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Reflection.Primitives.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Reflection.TypeExtensions.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Reflection.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Resources.Reader.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Resources.ResourceManager.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Resources.Writer.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.CompilerServices.Unsafe.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.CompilerServices.VisualC.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.Extensions.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.Handles.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.InteropServices.JavaScript.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.InteropServices.RuntimeInformation.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.InteropServices.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.Intrinsics.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.Loader.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.Numerics.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.Serialization.Formatters.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.Serialization.Json.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.Serialization.Primitives.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.Serialization.Xml.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.Serialization.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.AccessControl.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.Claims.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.Cryptography.Algorithms.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.Cryptography.Cng.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.Cryptography.Csp.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.Cryptography.Encoding.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.Cryptography.OpenSsl.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.Cryptography.Primitives.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.Cryptography.X509Certificates.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.Cryptography.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.Principal.Windows.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.Principal.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.SecureString.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.ServiceModel.Web.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.ServiceProcess.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Text.Encoding.CodePages.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Text.Encoding.Extensions.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Text.Encoding.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Text.Encodings.Web.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Text.Json.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Text.RegularExpressions.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Threading.AccessControl.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Threading.Channels.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Threading.Overlapped.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Threading.Tasks.Dataflow.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Threading.Tasks.Extensions.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Threading.Tasks.Parallel.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Threading.Tasks.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Threading.Thread.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Threading.ThreadPool.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Threading.Timer.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Threading.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Transactions.Local.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Transactions.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.ValueTuple.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Web.HttpUtility.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Web.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Windows.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Xml.Linq.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Xml.ReaderWriter.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Xml.Serialization.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Xml.XDocument.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Xml.XPath.XDocument.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Xml.XPath.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Xml.XmlDocument.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Xml.XmlSerializer.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Xml.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.wasm +0 -0
- package/workers/vendor/csharp/_framework/TraceCode.CSharpHost.wasm +0 -0
- package/workers/vendor/csharp/_framework/WindowsBase.wasm +0 -0
- package/workers/vendor/csharp/_framework/cs/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/cs/Microsoft.CodeAnalysis.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/de/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/de/Microsoft.CodeAnalysis.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/dotnet.boot.js +1958 -0
- package/workers/vendor/csharp/_framework/dotnet.js +4 -0
- package/workers/vendor/csharp/_framework/dotnet.js.map +1 -0
- package/workers/vendor/csharp/_framework/dotnet.native.js +6687 -0
- package/workers/vendor/csharp/_framework/dotnet.native.wasm +0 -0
- package/workers/vendor/csharp/_framework/dotnet.runtime.js +4 -0
- package/workers/vendor/csharp/_framework/dotnet.runtime.js.map +1 -0
- package/workers/vendor/csharp/_framework/es/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/es/Microsoft.CodeAnalysis.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/fr/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/fr/Microsoft.CodeAnalysis.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/it/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/it/Microsoft.CodeAnalysis.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/ja/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/ja/Microsoft.CodeAnalysis.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/ko/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/ko/Microsoft.CodeAnalysis.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/mscorlib.wasm +0 -0
- package/workers/vendor/csharp/_framework/netstandard.wasm +0 -0
- package/workers/vendor/csharp/_framework/pl/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/pl/Microsoft.CodeAnalysis.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/pt-BR/Microsoft.CodeAnalysis.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/ru/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/ru/Microsoft.CodeAnalysis.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/0_Microsoft.CodeAnalysis.CSharp.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/100_System.Reflection.Emit.ILGeneration.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/101_System.Reflection.Emit.Lightweight.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/102_System.Reflection.Extensions.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/103_System.Reflection.Metadata.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/104_System.Reflection.Primitives.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/105_System.Reflection.TypeExtensions.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/106_System.Resources.Reader.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/107_System.Resources.ResourceManager.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/108_System.Resources.Writer.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/109_System.Runtime.CompilerServices.Unsafe.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/10_System.Buffers.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/110_System.Runtime.CompilerServices.VisualC.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/111_System.Runtime.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/112_System.Runtime.Extensions.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/113_System.Runtime.Handles.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/114_System.Runtime.InteropServices.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/115_System.Runtime.InteropServices.JavaScript.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/116_System.Runtime.InteropServices.RuntimeInformation.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/117_System.Runtime.Intrinsics.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/118_System.Runtime.Loader.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/119_System.Runtime.Numerics.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/11_System.Collections.Concurrent.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/120_System.Runtime.Serialization.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/121_System.Runtime.Serialization.Formatters.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/122_System.Runtime.Serialization.Json.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/123_System.Runtime.Serialization.Primitives.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/124_System.Runtime.Serialization.Xml.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/125_System.Security.AccessControl.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/126_System.Security.Claims.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/127_System.Security.Cryptography.Algorithms.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/128_System.Security.Cryptography.Cng.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/129_System.Security.Cryptography.Csp.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/12_System.Collections.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/130_System.Security.Cryptography.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/131_System.Security.Cryptography.Encoding.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/132_System.Security.Cryptography.OpenSsl.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/133_System.Security.Cryptography.Primitives.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/134_System.Security.Cryptography.X509Certificates.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/135_System.Security.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/136_System.Security.Principal.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/137_System.Security.Principal.Windows.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/138_System.Security.SecureString.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/139_System.ServiceModel.Web.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/13_System.Collections.Immutable.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/140_System.ServiceProcess.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/141_System.Text.Encoding.CodePages.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/142_System.Text.Encoding.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/143_System.Text.Encoding.Extensions.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/144_System.Text.Encodings.Web.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/145_System.Text.Json.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/146_System.Text.RegularExpressions.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/147_System.Threading.AccessControl.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/148_System.Threading.Channels.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/149_System.Threading.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/14_System.Collections.NonGeneric.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/150_System.Threading.Overlapped.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/151_System.Threading.Tasks.Dataflow.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/152_System.Threading.Tasks.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/153_System.Threading.Tasks.Extensions.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/154_System.Threading.Tasks.Parallel.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/155_System.Threading.Thread.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/156_System.Threading.ThreadPool.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/157_System.Threading.Timer.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/158_System.Transactions.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/159_System.Transactions.Local.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/15_System.Collections.Specialized.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/160_System.ValueTuple.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/161_System.Web.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/162_System.Web.HttpUtility.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/163_System.Windows.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/164_System.Xml.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/165_System.Xml.Linq.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/166_System.Xml.ReaderWriter.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/167_System.Xml.Serialization.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/168_System.Xml.XDocument.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/169_System.Xml.XmlDocument.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/16_System.ComponentModel.Annotations.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/170_System.Xml.XmlSerializer.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/171_System.Xml.XPath.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/172_System.Xml.XPath.XDocument.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/173_TraceCode.CSharpHost.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/174_WindowsBase.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/17_System.ComponentModel.DataAnnotations.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/18_System.ComponentModel.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/19_System.ComponentModel.EventBasedAsync.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/1_Microsoft.CodeAnalysis.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/20_System.ComponentModel.Primitives.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/21_System.ComponentModel.TypeConverter.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/22_System.Configuration.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/23_System.Console.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/24_System.Core.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/25_System.Data.Common.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/26_System.Data.DataSetExtensions.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/27_System.Data.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/28_System.Diagnostics.Contracts.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/29_System.Diagnostics.Debug.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/2_Microsoft.CSharp.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/30_System.Diagnostics.DiagnosticSource.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/31_System.Diagnostics.FileVersionInfo.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/32_System.Diagnostics.Process.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/33_System.Diagnostics.StackTrace.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/34_System.Diagnostics.TextWriterTraceListener.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/35_System.Diagnostics.Tools.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/36_System.Diagnostics.TraceSource.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/37_System.Diagnostics.Tracing.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/38_System.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/39_System.Drawing.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/3_Microsoft.VisualBasic.Core.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/40_System.Drawing.Primitives.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/41_System.Dynamic.Runtime.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/42_System.Formats.Asn1.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/43_System.Formats.Tar.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/44_System.Globalization.Calendars.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/45_System.Globalization.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/46_System.Globalization.Extensions.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/47_System.IO.Compression.Brotli.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/48_System.IO.Compression.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/49_System.IO.Compression.FileSystem.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/4_Microsoft.VisualBasic.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/50_System.IO.Compression.ZipFile.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/51_System.IO.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/52_System.IO.FileSystem.AccessControl.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/53_System.IO.FileSystem.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/54_System.IO.FileSystem.DriveInfo.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/55_System.IO.FileSystem.Primitives.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/56_System.IO.FileSystem.Watcher.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/57_System.IO.IsolatedStorage.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/58_System.IO.MemoryMappedFiles.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/59_System.IO.Pipelines.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/5_Microsoft.Win32.Primitives.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/60_System.IO.Pipes.AccessControl.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/61_System.IO.Pipes.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/62_System.IO.UnmanagedMemoryStream.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/63_System.Linq.AsyncEnumerable.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/64_System.Linq.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/65_System.Linq.Expressions.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/66_System.Linq.Parallel.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/67_System.Linq.Queryable.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/68_System.Memory.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/69_System.Net.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/6_Microsoft.Win32.Registry.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/70_System.Net.Http.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/71_System.Net.Http.Json.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/72_System.Net.HttpListener.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/73_System.Net.Mail.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/74_System.Net.NameResolution.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/75_System.Net.NetworkInformation.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/76_System.Net.Ping.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/77_System.Net.Primitives.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/78_System.Net.Quic.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/79_System.Net.Requests.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/7_mscorlib.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/80_System.Net.Security.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/81_System.Net.ServerSentEvents.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/82_System.Net.ServicePoint.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/83_System.Net.Sockets.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/84_System.Net.WebClient.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/85_System.Net.WebHeaderCollection.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/86_System.Net.WebProxy.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/87_System.Net.WebSockets.Client.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/88_System.Net.WebSockets.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/89_System.Numerics.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/8_netstandard.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/90_System.Numerics.Vectors.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/91_System.ObjectModel.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/92_System.Private.CoreLib.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/93_System.Private.DataContractSerialization.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/94_System.Private.Uri.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/95_System.Private.Xml.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/96_System.Private.Xml.Linq.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/97_System.Reflection.DispatchProxy.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/98_System.Reflection.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/99_System.Reflection.Emit.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/9_System.AppContext.dll +0 -0
- package/workers/vendor/csharp/_framework/tr/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/tr/Microsoft.CodeAnalysis.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/zh-Hans/Microsoft.CodeAnalysis.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/zh-Hant/Microsoft.CodeAnalysis.resources.wasm +0 -0
- package/workers/vendor/csharp/main.mjs +5 -0
- package/workers/vendor/csharp/package.json +1 -0
- package/workers/vendor/java-browser-helper.jar +0 -0
- package/workers/vendor/java-rewriter.jar +0 -0
- package/workers/vendor/javascript-libraries.js +10106 -0
- package/dist/runtime-types-89nchXlY.d.cts +0 -89
- package/dist/runtime-types-CCQ-ZLc9.d.ts +0 -89
- package/dist/types-zyvpJKCi.d.cts +0 -100
- package/dist/types-zyvpJKCi.d.ts +0 -100
- package/workers/java/java-source-augmentations.cjs +0 -242
- package/workers/java/src/spike/user/TraceHooks.java +0 -619
- package/workers/vendor/java-browser-spike-helper.jar +0 -0
- package/workers/vendor/java-practice-rewriter.jar +0 -0
- package/workers/vendor/java-rewrite-bridge.jar +0 -0
|
@@ -0,0 +1,714 @@
|
|
|
1
|
+
package tracecode.browser;
|
|
2
|
+
|
|
3
|
+
import java.io.IOException;
|
|
4
|
+
import java.io.PrintWriter;
|
|
5
|
+
import java.io.StringWriter;
|
|
6
|
+
import java.lang.reflect.Method;
|
|
7
|
+
import java.lang.reflect.InvocationTargetException;
|
|
8
|
+
import java.net.URL;
|
|
9
|
+
import java.net.URLClassLoader;
|
|
10
|
+
import java.nio.charset.StandardCharsets;
|
|
11
|
+
import java.nio.file.Files;
|
|
12
|
+
import java.nio.file.Path;
|
|
13
|
+
import java.nio.file.Paths;
|
|
14
|
+
import java.security.MessageDigest;
|
|
15
|
+
import java.util.ArrayList;
|
|
16
|
+
import java.util.List;
|
|
17
|
+
import java.util.stream.Stream;
|
|
18
|
+
import javax.tools.JavaCompiler;
|
|
19
|
+
import javax.tools.StandardJavaFileManager;
|
|
20
|
+
import javax.tools.StandardLocation;
|
|
21
|
+
import javax.tools.ToolProvider;
|
|
22
|
+
import tracecode.user.TraceHooks;
|
|
23
|
+
|
|
24
|
+
public final class BrowserCompileAndTraceLibrary {
|
|
25
|
+
private static final String RUN_CACHE_VERSION = "tracecode-java-run-v1";
|
|
26
|
+
|
|
27
|
+
private BrowserCompileAndTraceLibrary() {}
|
|
28
|
+
|
|
29
|
+
public static String compileAndTrace(
|
|
30
|
+
String sourcePath,
|
|
31
|
+
String classesDir,
|
|
32
|
+
String entryClass,
|
|
33
|
+
String compileClasspath,
|
|
34
|
+
String compilerProfile
|
|
35
|
+
) throws Exception {
|
|
36
|
+
return compileAndTrace(sourcePath, classesDir, entryClass, compileClasspath, compilerProfile, 50000);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
public static String compileAndTrace(
|
|
40
|
+
String sourcePath,
|
|
41
|
+
String classesDir,
|
|
42
|
+
String entryClass,
|
|
43
|
+
String compileClasspath,
|
|
44
|
+
String compilerProfile,
|
|
45
|
+
String maxStoredEvents
|
|
46
|
+
) throws Exception {
|
|
47
|
+
int parsedMaxEvents;
|
|
48
|
+
try {
|
|
49
|
+
parsedMaxEvents = Integer.parseInt(maxStoredEvents);
|
|
50
|
+
} catch (Exception ignored) {
|
|
51
|
+
parsedMaxEvents = 50000;
|
|
52
|
+
}
|
|
53
|
+
return compileAndTrace(sourcePath, classesDir, entryClass, compileClasspath, compilerProfile, parsedMaxEvents);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
public static String compileAndTrace(
|
|
57
|
+
String sourcePath,
|
|
58
|
+
String classesDir,
|
|
59
|
+
String entryClass,
|
|
60
|
+
String compileClasspath,
|
|
61
|
+
String compilerProfile,
|
|
62
|
+
int maxStoredEvents
|
|
63
|
+
) throws Exception {
|
|
64
|
+
Path sourceFile = Paths.get(sourcePath);
|
|
65
|
+
Path classesPath = Paths.get(classesDir);
|
|
66
|
+
Files.createDirectories(classesPath);
|
|
67
|
+
|
|
68
|
+
String source = Files.readString(sourceFile, StandardCharsets.UTF_8);
|
|
69
|
+
String compilerDebugArg = compilerDebugArgForProfile(compilerProfile);
|
|
70
|
+
String cacheKey = hashSource(source, compileClasspath, entryClass, compilerDebugArg);
|
|
71
|
+
Path cacheKeyPath = classesPath.resolve(".tracecode-cache-key");
|
|
72
|
+
|
|
73
|
+
StringWriter compilerStdout = new StringWriter();
|
|
74
|
+
StringWriter compilerStderr = new StringWriter();
|
|
75
|
+
PrintWriter compilerStdoutWriter = new PrintWriter(compilerStdout, true);
|
|
76
|
+
PrintWriter compilerStderrWriter = new PrintWriter(compilerStderr, true);
|
|
77
|
+
|
|
78
|
+
long compileStart = System.nanoTime();
|
|
79
|
+
boolean compiled;
|
|
80
|
+
boolean compileCacheHit = false;
|
|
81
|
+
if (canReuseCompiledClasses(classesPath, cacheKeyPath, cacheKey, entryClass)) {
|
|
82
|
+
compiled = true;
|
|
83
|
+
compileCacheHit = true;
|
|
84
|
+
} else {
|
|
85
|
+
resetDirectory(classesPath);
|
|
86
|
+
compiled = compileSource(
|
|
87
|
+
sourcePath,
|
|
88
|
+
classesDir,
|
|
89
|
+
compileClasspath,
|
|
90
|
+
compilerDebugArg,
|
|
91
|
+
compilerStdoutWriter,
|
|
92
|
+
compilerStderrWriter);
|
|
93
|
+
if (compiled) {
|
|
94
|
+
Files.writeString(cacheKeyPath, cacheKey, StandardCharsets.UTF_8);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
long compileEnd = System.nanoTime();
|
|
98
|
+
|
|
99
|
+
long classLoadStart = System.nanoTime();
|
|
100
|
+
long classLoadEnd = classLoadStart;
|
|
101
|
+
long runStart = 0;
|
|
102
|
+
long runEnd = 0;
|
|
103
|
+
Object output = null;
|
|
104
|
+
String runtimeError = null;
|
|
105
|
+
List<String> events = new ArrayList<>();
|
|
106
|
+
boolean success = compiled;
|
|
107
|
+
|
|
108
|
+
if (compiled) {
|
|
109
|
+
TraceHooks.reset(maxStoredEvents);
|
|
110
|
+
try (URLClassLoader loader = new URLClassLoader(
|
|
111
|
+
new URL[] { classesPath.toUri().toURL() },
|
|
112
|
+
BrowserCompileAndTraceLibrary.class.getClassLoader())) {
|
|
113
|
+
Class<?> entry = Class.forName(entryClass, true, loader);
|
|
114
|
+
Method run = entry.getMethod("run");
|
|
115
|
+
run.setAccessible(true);
|
|
116
|
+
classLoadEnd = System.nanoTime();
|
|
117
|
+
runStart = System.nanoTime();
|
|
118
|
+
output = run.invoke(null);
|
|
119
|
+
runEnd = System.nanoTime();
|
|
120
|
+
} catch (InvocationTargetException error) {
|
|
121
|
+
Throwable cause = error.getCause() == null ? error : error.getCause();
|
|
122
|
+
runEnd = System.nanoTime();
|
|
123
|
+
runtimeError = stackTrace(cause);
|
|
124
|
+
success = false;
|
|
125
|
+
} catch (Throwable error) {
|
|
126
|
+
long end = System.nanoTime();
|
|
127
|
+
if (runStart == 0) {
|
|
128
|
+
classLoadEnd = end;
|
|
129
|
+
} else {
|
|
130
|
+
runEnd = end;
|
|
131
|
+
}
|
|
132
|
+
runtimeError = stackTrace(error);
|
|
133
|
+
success = false;
|
|
134
|
+
} finally {
|
|
135
|
+
events = TraceHooks.drainEvents();
|
|
136
|
+
}
|
|
137
|
+
} else {
|
|
138
|
+
runtimeError = null;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
return buildTraceReportJson(
|
|
142
|
+
success,
|
|
143
|
+
output == null ? null : String.valueOf(output),
|
|
144
|
+
events,
|
|
145
|
+
compilerStdout.toString(),
|
|
146
|
+
compilerStderr.toString(),
|
|
147
|
+
runtimeError,
|
|
148
|
+
millisBetween(compileStart, compileEnd),
|
|
149
|
+
millisBetween(classLoadStart, classLoadEnd),
|
|
150
|
+
runStart == 0 ? 0 : millisBetween(runStart, runEnd),
|
|
151
|
+
compileCacheHit,
|
|
152
|
+
compilerProfile,
|
|
153
|
+
TraceHooks.traceLimitExceeded(),
|
|
154
|
+
TraceHooks.droppedEventCount());
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
public static String compileAndRun(
|
|
158
|
+
String sourcePath,
|
|
159
|
+
String classesDir,
|
|
160
|
+
String entryClass,
|
|
161
|
+
String compileClasspath,
|
|
162
|
+
String compilerProfile
|
|
163
|
+
) throws Exception {
|
|
164
|
+
Path sourceFile = Paths.get(sourcePath);
|
|
165
|
+
Path classesPath = Paths.get(classesDir);
|
|
166
|
+
Files.createDirectories(classesPath);
|
|
167
|
+
|
|
168
|
+
String source = Files.readString(sourceFile, StandardCharsets.UTF_8);
|
|
169
|
+
String compilerDebugArg = compilerDebugArgForProfile(compilerProfile);
|
|
170
|
+
String cacheKey = hashSource(source, compileClasspath, entryClass, compilerDebugArg);
|
|
171
|
+
Path cacheKeyPath = classesPath.resolve(".tracecode-run-cache-key");
|
|
172
|
+
|
|
173
|
+
StringWriter compilerStdout = new StringWriter();
|
|
174
|
+
StringWriter compilerStderr = new StringWriter();
|
|
175
|
+
PrintWriter compilerStdoutWriter = new PrintWriter(compilerStdout, true);
|
|
176
|
+
PrintWriter compilerStderrWriter = new PrintWriter(compilerStderr, true);
|
|
177
|
+
|
|
178
|
+
long compileStart = System.nanoTime();
|
|
179
|
+
boolean compiled;
|
|
180
|
+
boolean compileCacheHit = false;
|
|
181
|
+
if (canReuseCompiledClasses(classesPath, cacheKeyPath, cacheKey, entryClass)) {
|
|
182
|
+
compiled = true;
|
|
183
|
+
compileCacheHit = true;
|
|
184
|
+
} else {
|
|
185
|
+
resetDirectory(classesPath);
|
|
186
|
+
compiled = compileSource(
|
|
187
|
+
sourcePath,
|
|
188
|
+
classesDir,
|
|
189
|
+
compileClasspath,
|
|
190
|
+
compilerDebugArg,
|
|
191
|
+
compilerStdoutWriter,
|
|
192
|
+
compilerStderrWriter);
|
|
193
|
+
if (compiled) {
|
|
194
|
+
Files.writeString(cacheKeyPath, cacheKey, StandardCharsets.UTF_8);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
long compileEnd = System.nanoTime();
|
|
198
|
+
|
|
199
|
+
if (!compiled) {
|
|
200
|
+
return buildRunReportJson(
|
|
201
|
+
false,
|
|
202
|
+
null,
|
|
203
|
+
compilerStdout.toString(),
|
|
204
|
+
compilerStderr.toString(),
|
|
205
|
+
null,
|
|
206
|
+
millisBetween(compileStart, compileEnd),
|
|
207
|
+
0,
|
|
208
|
+
0,
|
|
209
|
+
compileCacheHit,
|
|
210
|
+
compilerProfile);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
long classLoadStart = System.nanoTime();
|
|
214
|
+
long classLoadEnd = classLoadStart;
|
|
215
|
+
long runStart = 0;
|
|
216
|
+
long runEnd = 0;
|
|
217
|
+
try (URLClassLoader loader = new URLClassLoader(
|
|
218
|
+
new URL[] { classesPath.toUri().toURL() },
|
|
219
|
+
BrowserCompileAndTraceLibrary.class.getClassLoader())) {
|
|
220
|
+
Class<?> entry = Class.forName(entryClass, true, loader);
|
|
221
|
+
Method run = entry.getMethod("run");
|
|
222
|
+
run.setAccessible(true);
|
|
223
|
+
classLoadEnd = System.nanoTime();
|
|
224
|
+
runStart = System.nanoTime();
|
|
225
|
+
Object output = run.invoke(null);
|
|
226
|
+
runEnd = System.nanoTime();
|
|
227
|
+
return buildRunReportJson(
|
|
228
|
+
true,
|
|
229
|
+
String.valueOf(output),
|
|
230
|
+
compilerStdout.toString(),
|
|
231
|
+
compilerStderr.toString(),
|
|
232
|
+
null,
|
|
233
|
+
millisBetween(compileStart, compileEnd),
|
|
234
|
+
millisBetween(classLoadStart, classLoadEnd),
|
|
235
|
+
millisBetween(runStart, runEnd),
|
|
236
|
+
compileCacheHit,
|
|
237
|
+
compilerProfile);
|
|
238
|
+
} catch (InvocationTargetException error) {
|
|
239
|
+
Throwable cause = error.getCause() == null ? error : error.getCause();
|
|
240
|
+
runEnd = System.nanoTime();
|
|
241
|
+
return buildRunReportJson(
|
|
242
|
+
false,
|
|
243
|
+
null,
|
|
244
|
+
compilerStdout.toString(),
|
|
245
|
+
compilerStderr.toString(),
|
|
246
|
+
stackTrace(cause),
|
|
247
|
+
millisBetween(compileStart, compileEnd),
|
|
248
|
+
millisBetween(classLoadStart, classLoadEnd),
|
|
249
|
+
runStart == 0 ? 0 : millisBetween(runStart, runEnd),
|
|
250
|
+
compileCacheHit,
|
|
251
|
+
compilerProfile);
|
|
252
|
+
} catch (Throwable error) {
|
|
253
|
+
long end = System.nanoTime();
|
|
254
|
+
if (runStart == 0) {
|
|
255
|
+
classLoadEnd = end;
|
|
256
|
+
} else {
|
|
257
|
+
runEnd = end;
|
|
258
|
+
}
|
|
259
|
+
return buildRunReportJson(
|
|
260
|
+
false,
|
|
261
|
+
null,
|
|
262
|
+
compilerStdout.toString(),
|
|
263
|
+
compilerStderr.toString(),
|
|
264
|
+
stackTrace(error),
|
|
265
|
+
millisBetween(compileStart, compileEnd),
|
|
266
|
+
millisBetween(classLoadStart, classLoadEnd),
|
|
267
|
+
runStart == 0 ? 0 : millisBetween(runStart, runEnd),
|
|
268
|
+
compileCacheHit,
|
|
269
|
+
compilerProfile);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
public static String compileAndRunBatch(
|
|
274
|
+
String sourcePath,
|
|
275
|
+
String classesDir,
|
|
276
|
+
String entryClasses,
|
|
277
|
+
String compileClasspath,
|
|
278
|
+
String compilerProfile
|
|
279
|
+
) throws Exception {
|
|
280
|
+
List<String> entries = splitEntryClasses(entryClasses);
|
|
281
|
+
if (entries.isEmpty()) {
|
|
282
|
+
throw new IllegalArgumentException("compileAndRunBatch requires at least one entry class");
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
Path sourceFile = Paths.get(sourcePath);
|
|
286
|
+
Path classesPath = Paths.get(classesDir);
|
|
287
|
+
Files.createDirectories(classesPath);
|
|
288
|
+
|
|
289
|
+
String source = Files.readString(sourceFile, StandardCharsets.UTF_8);
|
|
290
|
+
String compilerDebugArg = compilerDebugArgForProfile(compilerProfile);
|
|
291
|
+
String cacheKey = hashSource(source, compileClasspath, String.join("\n", entries), compilerDebugArg);
|
|
292
|
+
Path cacheKeyPath = classesPath.resolve(".tracecode-run-cache-key");
|
|
293
|
+
|
|
294
|
+
StringWriter compilerStdout = new StringWriter();
|
|
295
|
+
StringWriter compilerStderr = new StringWriter();
|
|
296
|
+
PrintWriter compilerStdoutWriter = new PrintWriter(compilerStdout, true);
|
|
297
|
+
PrintWriter compilerStderrWriter = new PrintWriter(compilerStderr, true);
|
|
298
|
+
|
|
299
|
+
long compileStart = System.nanoTime();
|
|
300
|
+
boolean compiled;
|
|
301
|
+
boolean compileCacheHit = false;
|
|
302
|
+
if (canReuseCompiledClasses(classesPath, cacheKeyPath, cacheKey, entries)) {
|
|
303
|
+
compiled = true;
|
|
304
|
+
compileCacheHit = true;
|
|
305
|
+
} else {
|
|
306
|
+
resetDirectory(classesPath);
|
|
307
|
+
compiled = compileSource(
|
|
308
|
+
sourcePath,
|
|
309
|
+
classesDir,
|
|
310
|
+
compileClasspath,
|
|
311
|
+
compilerDebugArg,
|
|
312
|
+
compilerStdoutWriter,
|
|
313
|
+
compilerStderrWriter);
|
|
314
|
+
if (compiled) {
|
|
315
|
+
Files.writeString(cacheKeyPath, cacheKey, StandardCharsets.UTF_8);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
long compileEnd = System.nanoTime();
|
|
319
|
+
|
|
320
|
+
List<String> resultJson = new ArrayList<>();
|
|
321
|
+
boolean success = compiled;
|
|
322
|
+
if (compiled) {
|
|
323
|
+
for (String entry : entries) {
|
|
324
|
+
InvocationReport result = runEntryClass(classesPath, entry);
|
|
325
|
+
if (!result.success) success = false;
|
|
326
|
+
resultJson.add(buildInvocationReportJson(result));
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
return buildRunBatchReportJson(
|
|
331
|
+
success,
|
|
332
|
+
resultJson,
|
|
333
|
+
compilerStdout.toString(),
|
|
334
|
+
compilerStderr.toString(),
|
|
335
|
+
compiled ? null : "Java compilation failed",
|
|
336
|
+
millisBetween(compileStart, compileEnd),
|
|
337
|
+
compileCacheHit,
|
|
338
|
+
compilerProfile);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
private static boolean compileSource(
|
|
342
|
+
String sourcePath,
|
|
343
|
+
String classesDir,
|
|
344
|
+
String compileClasspath,
|
|
345
|
+
String compilerDebugArg,
|
|
346
|
+
PrintWriter compilerStdout,
|
|
347
|
+
PrintWriter compilerStderr
|
|
348
|
+
) throws Exception {
|
|
349
|
+
List<String> javacArgs = new ArrayList<>();
|
|
350
|
+
javacArgs.add(compilerDebugArg);
|
|
351
|
+
javacArgs.add("-d");
|
|
352
|
+
javacArgs.add(classesDir);
|
|
353
|
+
if (compileClasspath != null && !compileClasspath.isEmpty()) {
|
|
354
|
+
javacArgs.add("-classpath");
|
|
355
|
+
javacArgs.add(compileClasspath);
|
|
356
|
+
}
|
|
357
|
+
javacArgs.add(sourcePath);
|
|
358
|
+
|
|
359
|
+
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
|
|
360
|
+
if (compiler == null) {
|
|
361
|
+
return compileWithBundledJavac(javacArgs.toArray(new String[0]), compilerStderr);
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
List<String> options = new ArrayList<>();
|
|
365
|
+
options.add("--release");
|
|
366
|
+
options.add("17");
|
|
367
|
+
options.addAll(javacArgs);
|
|
368
|
+
options.remove(options.size() - 1);
|
|
369
|
+
|
|
370
|
+
try (StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, StandardCharsets.UTF_8)) {
|
|
371
|
+
fileManager.setLocationFromPaths(StandardLocation.CLASS_OUTPUT, List.of(Paths.get(classesDir)));
|
|
372
|
+
Iterable<? extends javax.tools.JavaFileObject> units =
|
|
373
|
+
fileManager.getJavaFileObjectsFromStrings(List.of(sourcePath));
|
|
374
|
+
return Boolean.TRUE.equals(
|
|
375
|
+
compiler.getTask(compilerStdout, fileManager, null, options, null, units).call());
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
private static boolean compileWithBundledJavac(String[] args, PrintWriter compilerStderr) throws Exception {
|
|
380
|
+
Class<?> javacMain = Class.forName("com.sun.tools.javac.Main");
|
|
381
|
+
Method compile = javacMain.getMethod("compile", String[].class, PrintWriter.class);
|
|
382
|
+
Object result = compile.invoke(null, args, compilerStderr);
|
|
383
|
+
if (!(result instanceof Integer)) {
|
|
384
|
+
throw new IllegalStateException("Bundled javac returned an unexpected result");
|
|
385
|
+
}
|
|
386
|
+
return ((Integer) result).intValue() == 0;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
private static boolean canReuseCompiledClasses(
|
|
390
|
+
Path classesDir,
|
|
391
|
+
Path cacheKeyPath,
|
|
392
|
+
String cacheKey,
|
|
393
|
+
String entryClass
|
|
394
|
+
) throws IOException {
|
|
395
|
+
return canReuseCompiledClasses(classesDir, cacheKeyPath, cacheKey, List.of(entryClass));
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
private static boolean canReuseCompiledClasses(
|
|
399
|
+
Path classesDir,
|
|
400
|
+
Path cacheKeyPath,
|
|
401
|
+
String cacheKey,
|
|
402
|
+
List<String> entryClasses
|
|
403
|
+
) throws IOException {
|
|
404
|
+
if (!Files.exists(cacheKeyPath)) return false;
|
|
405
|
+
for (String entryClass : entryClasses) {
|
|
406
|
+
Path classFile = classesDir.resolve(entryClass.replace('.', '/') + ".class");
|
|
407
|
+
if (!Files.exists(classFile)) return false;
|
|
408
|
+
}
|
|
409
|
+
return cacheKey.equals(Files.readString(cacheKeyPath, StandardCharsets.UTF_8));
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
private static void resetDirectory(Path dir) throws IOException {
|
|
413
|
+
if (!Files.exists(dir)) {
|
|
414
|
+
Files.createDirectories(dir);
|
|
415
|
+
return;
|
|
416
|
+
}
|
|
417
|
+
try (Stream<Path> stream = Files.walk(dir)) {
|
|
418
|
+
stream
|
|
419
|
+
.sorted((left, right) -> right.getNameCount() - left.getNameCount())
|
|
420
|
+
.filter(path -> !path.equals(dir))
|
|
421
|
+
.forEach(path -> {
|
|
422
|
+
try {
|
|
423
|
+
Files.deleteIfExists(path);
|
|
424
|
+
} catch (IOException error) {
|
|
425
|
+
throw new RuntimeException(error);
|
|
426
|
+
}
|
|
427
|
+
});
|
|
428
|
+
} catch (RuntimeException error) {
|
|
429
|
+
if (error.getCause() instanceof IOException) throw (IOException) error.getCause();
|
|
430
|
+
throw error;
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
private static String hashSource(
|
|
435
|
+
String source,
|
|
436
|
+
String compileClasspath,
|
|
437
|
+
String entryClass,
|
|
438
|
+
String compilerDebugArg
|
|
439
|
+
) throws Exception {
|
|
440
|
+
MessageDigest digest = MessageDigest.getInstance("SHA-256");
|
|
441
|
+
updateDigest(digest, RUN_CACHE_VERSION);
|
|
442
|
+
updateDigest(digest, source);
|
|
443
|
+
updateDigest(digest, compileClasspath == null ? "" : compileClasspath);
|
|
444
|
+
updateDigest(digest, entryClass == null ? "" : entryClass);
|
|
445
|
+
updateDigest(digest, compilerDebugArg == null ? "" : compilerDebugArg);
|
|
446
|
+
byte[] bytes = digest.digest();
|
|
447
|
+
StringBuilder out = new StringBuilder(bytes.length * 2);
|
|
448
|
+
for (byte value : bytes) {
|
|
449
|
+
out.append(Character.forDigit((value >> 4) & 0xf, 16));
|
|
450
|
+
out.append(Character.forDigit(value & 0xf, 16));
|
|
451
|
+
}
|
|
452
|
+
return out.toString();
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
private static void updateDigest(MessageDigest digest, String value) {
|
|
456
|
+
digest.update((byte) 0);
|
|
457
|
+
digest.update(value.getBytes(StandardCharsets.UTF_8));
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
private static String compilerDebugArgForProfile(String profile) {
|
|
461
|
+
if ("none".equals(profile)) return "-g:none";
|
|
462
|
+
if ("lines".equals(profile)) return "-g:source,lines";
|
|
463
|
+
return "-g";
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
private static long millisBetween(long start, long end) {
|
|
467
|
+
return Math.max(0, (end - start) / 1_000_000L);
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
private static String buildRunReportJson(
|
|
471
|
+
boolean success,
|
|
472
|
+
String output,
|
|
473
|
+
String compilerStdout,
|
|
474
|
+
String compilerStderr,
|
|
475
|
+
String runtimeError,
|
|
476
|
+
long compileTimeMs,
|
|
477
|
+
long classLoadTimeMs,
|
|
478
|
+
long runTimeMs,
|
|
479
|
+
boolean compileCacheHit,
|
|
480
|
+
String compilerProfile
|
|
481
|
+
) {
|
|
482
|
+
StringBuilder out = new StringBuilder();
|
|
483
|
+
out.append('{');
|
|
484
|
+
out.append("\"success\":").append(success);
|
|
485
|
+
if (output != null) {
|
|
486
|
+
out.append(",\"output\":").append(quote(output));
|
|
487
|
+
}
|
|
488
|
+
out.append(",\"compilerStdout\":").append(quote(compilerStdout == null ? "" : compilerStdout));
|
|
489
|
+
out.append(",\"compilerStderr\":").append(quote(compilerStderr == null ? "" : compilerStderr));
|
|
490
|
+
out.append(",\"compileTimeMs\":").append(compileTimeMs);
|
|
491
|
+
out.append(",\"classLoadTimeMs\":").append(classLoadTimeMs);
|
|
492
|
+
out.append(",\"runTimeMs\":").append(runTimeMs);
|
|
493
|
+
out.append(",\"compileCacheHit\":").append(compileCacheHit);
|
|
494
|
+
out.append(",\"compilerDebugProfile\":").append(quote(compilerProfile == null ? "" : compilerProfile));
|
|
495
|
+
if (runtimeError != null) {
|
|
496
|
+
out.append(",\"runtimeError\":").append(quote(runtimeError));
|
|
497
|
+
}
|
|
498
|
+
out.append('}');
|
|
499
|
+
return out.toString();
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
private static String buildRunBatchReportJson(
|
|
503
|
+
boolean success,
|
|
504
|
+
List<String> results,
|
|
505
|
+
String compilerStdout,
|
|
506
|
+
String compilerStderr,
|
|
507
|
+
String runtimeError,
|
|
508
|
+
long compileTimeMs,
|
|
509
|
+
boolean compileCacheHit,
|
|
510
|
+
String compilerProfile
|
|
511
|
+
) {
|
|
512
|
+
StringBuilder out = new StringBuilder();
|
|
513
|
+
out.append('{');
|
|
514
|
+
out.append("\"success\":").append(success);
|
|
515
|
+
out.append(",\"results\":[");
|
|
516
|
+
for (int index = 0; index < results.size(); index++) {
|
|
517
|
+
if (index > 0) out.append(',');
|
|
518
|
+
out.append(results.get(index));
|
|
519
|
+
}
|
|
520
|
+
out.append(']');
|
|
521
|
+
out.append(",\"compilerStdout\":").append(quote(compilerStdout == null ? "" : compilerStdout));
|
|
522
|
+
out.append(",\"compilerStderr\":").append(quote(compilerStderr == null ? "" : compilerStderr));
|
|
523
|
+
out.append(",\"compileTimeMs\":").append(compileTimeMs);
|
|
524
|
+
out.append(",\"compileCacheHit\":").append(compileCacheHit);
|
|
525
|
+
out.append(",\"compilerDebugProfile\":").append(quote(compilerProfile == null ? "" : compilerProfile));
|
|
526
|
+
if (runtimeError != null) {
|
|
527
|
+
out.append(",\"runtimeError\":").append(quote(runtimeError));
|
|
528
|
+
}
|
|
529
|
+
out.append('}');
|
|
530
|
+
return out.toString();
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
private static String buildTraceReportJson(
|
|
534
|
+
boolean success,
|
|
535
|
+
String output,
|
|
536
|
+
List<String> events,
|
|
537
|
+
String compilerStdout,
|
|
538
|
+
String compilerStderr,
|
|
539
|
+
String runtimeError,
|
|
540
|
+
long compileTimeMs,
|
|
541
|
+
long classLoadTimeMs,
|
|
542
|
+
long runTimeMs,
|
|
543
|
+
boolean compileCacheHit,
|
|
544
|
+
String compilerProfile,
|
|
545
|
+
boolean traceLimitExceeded,
|
|
546
|
+
int droppedEventCount
|
|
547
|
+
) {
|
|
548
|
+
StringBuilder out = new StringBuilder();
|
|
549
|
+
out.append('{');
|
|
550
|
+
out.append("\"success\":").append(success);
|
|
551
|
+
if (output != null) {
|
|
552
|
+
out.append(",\"output\":").append(quote(output));
|
|
553
|
+
}
|
|
554
|
+
out.append(",\"events\":[");
|
|
555
|
+
for (int index = 0; index < events.size(); index++) {
|
|
556
|
+
if (index > 0) out.append(',');
|
|
557
|
+
out.append(quote(events.get(index)));
|
|
558
|
+
}
|
|
559
|
+
out.append(']');
|
|
560
|
+
out.append(",\"compilerStdout\":").append(quote(compilerStdout == null ? "" : compilerStdout));
|
|
561
|
+
out.append(",\"compilerStderr\":").append(quote(compilerStderr == null ? "" : compilerStderr));
|
|
562
|
+
out.append(",\"compileTimeMs\":").append(compileTimeMs);
|
|
563
|
+
out.append(",\"classLoadTimeMs\":").append(classLoadTimeMs);
|
|
564
|
+
out.append(",\"runTimeMs\":").append(runTimeMs);
|
|
565
|
+
out.append(",\"compileCacheHit\":").append(compileCacheHit);
|
|
566
|
+
out.append(",\"compilerDebugProfile\":").append(quote(compilerProfile == null ? "" : compilerProfile));
|
|
567
|
+
out.append(",\"traceLimitExceeded\":").append(traceLimitExceeded);
|
|
568
|
+
out.append(",\"droppedEventCount\":").append(droppedEventCount);
|
|
569
|
+
if (runtimeError != null) {
|
|
570
|
+
out.append(",\"runtimeError\":").append(quote(runtimeError));
|
|
571
|
+
}
|
|
572
|
+
out.append('}');
|
|
573
|
+
return out.toString();
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
private static String buildInvocationReportJson(InvocationReport result) {
|
|
577
|
+
StringBuilder out = new StringBuilder();
|
|
578
|
+
out.append('{');
|
|
579
|
+
out.append("\"success\":").append(result.success);
|
|
580
|
+
if (result.output != null) {
|
|
581
|
+
out.append(",\"output\":").append(quote(result.output));
|
|
582
|
+
}
|
|
583
|
+
out.append(",\"classLoadTimeMs\":").append(result.classLoadTimeMs);
|
|
584
|
+
out.append(",\"runTimeMs\":").append(result.runTimeMs);
|
|
585
|
+
if (result.runtimeError != null) {
|
|
586
|
+
out.append(",\"runtimeError\":").append(quote(result.runtimeError));
|
|
587
|
+
}
|
|
588
|
+
out.append('}');
|
|
589
|
+
return out.toString();
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
private static InvocationReport runEntryClass(Path classesPath, String entryClass) {
|
|
593
|
+
long classLoadStart = System.nanoTime();
|
|
594
|
+
long classLoadEnd = classLoadStart;
|
|
595
|
+
long runStart = 0;
|
|
596
|
+
long runEnd = 0;
|
|
597
|
+
try (URLClassLoader loader = new URLClassLoader(
|
|
598
|
+
new URL[] { classesPath.toUri().toURL() },
|
|
599
|
+
BrowserCompileAndTraceLibrary.class.getClassLoader())) {
|
|
600
|
+
Class<?> entry = Class.forName(entryClass, true, loader);
|
|
601
|
+
Method run = entry.getMethod("run");
|
|
602
|
+
run.setAccessible(true);
|
|
603
|
+
classLoadEnd = System.nanoTime();
|
|
604
|
+
runStart = System.nanoTime();
|
|
605
|
+
Object output = run.invoke(null);
|
|
606
|
+
runEnd = System.nanoTime();
|
|
607
|
+
return new InvocationReport(
|
|
608
|
+
true,
|
|
609
|
+
String.valueOf(output),
|
|
610
|
+
null,
|
|
611
|
+
millisBetween(classLoadStart, classLoadEnd),
|
|
612
|
+
millisBetween(runStart, runEnd));
|
|
613
|
+
} catch (InvocationTargetException error) {
|
|
614
|
+
Throwable cause = error.getCause() == null ? error : error.getCause();
|
|
615
|
+
runEnd = System.nanoTime();
|
|
616
|
+
return new InvocationReport(
|
|
617
|
+
false,
|
|
618
|
+
null,
|
|
619
|
+
stackTrace(cause),
|
|
620
|
+
millisBetween(classLoadStart, classLoadEnd),
|
|
621
|
+
runStart == 0 ? 0 : millisBetween(runStart, runEnd));
|
|
622
|
+
} catch (Throwable error) {
|
|
623
|
+
long end = System.nanoTime();
|
|
624
|
+
if (runStart == 0) {
|
|
625
|
+
classLoadEnd = end;
|
|
626
|
+
} else {
|
|
627
|
+
runEnd = end;
|
|
628
|
+
}
|
|
629
|
+
return new InvocationReport(
|
|
630
|
+
false,
|
|
631
|
+
null,
|
|
632
|
+
stackTrace(error),
|
|
633
|
+
millisBetween(classLoadStart, classLoadEnd),
|
|
634
|
+
runStart == 0 ? 0 : millisBetween(runStart, runEnd));
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
private static List<String> splitEntryClasses(String entryClasses) {
|
|
639
|
+
List<String> entries = new ArrayList<>();
|
|
640
|
+
if (entryClasses == null) return entries;
|
|
641
|
+
for (String entry : entryClasses.split("\\n")) {
|
|
642
|
+
String trimmed = entry.trim();
|
|
643
|
+
if (!trimmed.isEmpty()) entries.add(trimmed);
|
|
644
|
+
}
|
|
645
|
+
return entries;
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
private static final class InvocationReport {
|
|
649
|
+
final boolean success;
|
|
650
|
+
final String output;
|
|
651
|
+
final String runtimeError;
|
|
652
|
+
final long classLoadTimeMs;
|
|
653
|
+
final long runTimeMs;
|
|
654
|
+
|
|
655
|
+
InvocationReport(
|
|
656
|
+
boolean success,
|
|
657
|
+
String output,
|
|
658
|
+
String runtimeError,
|
|
659
|
+
long classLoadTimeMs,
|
|
660
|
+
long runTimeMs
|
|
661
|
+
) {
|
|
662
|
+
this.success = success;
|
|
663
|
+
this.output = output;
|
|
664
|
+
this.runtimeError = runtimeError;
|
|
665
|
+
this.classLoadTimeMs = classLoadTimeMs;
|
|
666
|
+
this.runTimeMs = runTimeMs;
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
private static String stackTrace(Throwable error) {
|
|
671
|
+
StringWriter writer = new StringWriter();
|
|
672
|
+
error.printStackTrace(new PrintWriter(writer, true));
|
|
673
|
+
return writer.toString();
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
private static String quote(String value) {
|
|
677
|
+
StringBuilder out = new StringBuilder(value.length() + 16);
|
|
678
|
+
out.append('"');
|
|
679
|
+
for (int index = 0; index < value.length(); index++) {
|
|
680
|
+
char ch = value.charAt(index);
|
|
681
|
+
switch (ch) {
|
|
682
|
+
case '\\':
|
|
683
|
+
out.append("\\\\");
|
|
684
|
+
break;
|
|
685
|
+
case '"':
|
|
686
|
+
out.append("\\\"");
|
|
687
|
+
break;
|
|
688
|
+
case '\n':
|
|
689
|
+
out.append("\\n");
|
|
690
|
+
break;
|
|
691
|
+
case '\r':
|
|
692
|
+
out.append("\\r");
|
|
693
|
+
break;
|
|
694
|
+
case '\t':
|
|
695
|
+
out.append("\\t");
|
|
696
|
+
break;
|
|
697
|
+
case '\b':
|
|
698
|
+
out.append("\\b");
|
|
699
|
+
break;
|
|
700
|
+
case '\f':
|
|
701
|
+
out.append("\\f");
|
|
702
|
+
break;
|
|
703
|
+
default:
|
|
704
|
+
if (ch < 32) {
|
|
705
|
+
out.append(String.format("\\u%04x", (int) ch));
|
|
706
|
+
} else {
|
|
707
|
+
out.append(ch);
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
out.append('"');
|
|
712
|
+
return out.toString();
|
|
713
|
+
}
|
|
714
|
+
}
|