|
40 | 40 | import java.util.function.Supplier;
|
41 | 41 | import java.util.logging.Level;
|
42 | 42 |
|
43 |
| -import org.graalvm.nativeimage.ImageInfo; |
44 |
| - |
45 | 43 | import com.oracle.graal.python.PythonLanguage;
|
46 | 44 | import com.oracle.graal.python.builtins.modules.ArrayModuleBuiltins;
|
47 | 45 | import com.oracle.graal.python.builtins.modules.AstModuleBuiltins;
|
|
193 | 191 | import com.oracle.truffle.api.source.Source;
|
194 | 192 | import com.oracle.truffle.api.source.SourceSection;
|
195 | 193 |
|
| 194 | +import org.graalvm.nativeimage.ImageInfo; |
| 195 | + |
196 | 196 | /**
|
197 | 197 | * The core is intended to the immutable part of the interpreter, including most modules and most
|
198 | 198 | * types.
|
@@ -265,6 +265,24 @@ private static final String[] initializeCoreFiles() {
|
265 | 265 |
|
266 | 266 | private final PythonBuiltins[] builtins;
|
267 | 267 |
|
| 268 | + private static final boolean hasCoverageTool; |
| 269 | + private static final boolean hasProfilerTool; |
| 270 | + static { |
| 271 | + Class<?> c = null; |
| 272 | + try { |
| 273 | + c = Class.forName("com.oracle.truffle.tools.coverage.CoverageTracker"); |
| 274 | + } catch (LinkageError | ClassNotFoundException e) { |
| 275 | + } |
| 276 | + hasCoverageTool = c != null; |
| 277 | + c = null; |
| 278 | + try { |
| 279 | + c = Class.forName("com.oracle.truffle.tools.profiler.CPUSampler"); |
| 280 | + } catch (LinkageError | ClassNotFoundException e) { |
| 281 | + } |
| 282 | + hasProfilerTool = c != null; |
| 283 | + c = null; |
| 284 | + } |
| 285 | + |
268 | 286 | private static final PythonBuiltins[] initializeBuiltins() {
|
269 | 287 | List<PythonBuiltins> builtins = new ArrayList<>(Arrays.asList(
|
270 | 288 | new BuiltinConstructors(),
|
@@ -379,10 +397,14 @@ private static final PythonBuiltins[] initializeBuiltins() {
|
379 | 397 | new LZMADecompressorBuiltins(),
|
380 | 398 | new MultiprocessingModuleBuiltins(),
|
381 | 399 | new SemLockBuiltins(),
|
382 |
| - new TraceModuleBuiltins(), |
383 |
| - new LsprofModuleBuiltins(), |
384 |
| - LsprofModuleBuiltins.newProfilerBuiltins(), |
385 | 400 | new GraalPythonModuleBuiltins()));
|
| 401 | + if (hasCoverageTool) { |
| 402 | + builtins.add(new TraceModuleBuiltins()); |
| 403 | + } |
| 404 | + if (hasProfilerTool) { |
| 405 | + builtins.add(new LsprofModuleBuiltins()); |
| 406 | + builtins.add(LsprofModuleBuiltins.newProfilerBuiltins()); |
| 407 | + } |
386 | 408 | if (!TruffleOptions.AOT) {
|
387 | 409 | ServiceLoader<PythonBuiltins> providers = ServiceLoader.load(PythonBuiltins.class, Python3Core.class.getClassLoader());
|
388 | 410 | for (PythonBuiltins builtin : providers) {
|
|
0 commit comments