Marge Bot pushed to branch wip/marge_bot_batch_merge_job at Glasgow Haskell Compiler / GHC
Commits:
-
c9ec4d43
by Simon Hengel at 2025-10-02T18:42:20-04:00
-
da9633a9
by Matthew Pickering at 2025-10-02T18:43:04-04:00
-
5db98d80
by Simon Hengel at 2025-10-02T18:43:53-04:00
-
b624481f
by Matthew Pickering at 2025-10-02T19:17:52-04:00
-
33dd8e8b
by Matthew Pickering at 2025-10-02T19:17:53-04:00
23 changed files:
- compiler/GHC.hs
- compiler/GHC/Driver/Backend.hs
- compiler/GHC/Driver/Backend/Internal.hs
- compiler/GHC/Driver/Downsweep.hs
- compiler/GHC/Driver/Main.hs
- compiler/GHC/Driver/Pipeline.hs
- compiler/GHC/Driver/Session.hs
- compiler/GHC/Linker/Loader.hs
- compiler/GHC/Parser/PostProcess.hs
- docs/users_guide/conf.py
- docs/users_guide/extending_ghc.rst
- ghc/Main.hs
- testsuite/driver/testglobals.py
- testsuite/driver/testlib.py
- testsuite/tests/driver/T5313.hs
- testsuite/tests/ghc-api/T10052/T10052.hs
- testsuite/tests/ghc-api/T8639_api.hs
- testsuite/tests/ghc-api/apirecomp001/myghc.hs
- testsuite/tests/ghci-wasm/T26431.hs
- testsuite/tests/ghci/linking/dyn/T3372.hs
- testsuite/tests/ghci/should_run/PackedDataCon/packeddatacon.T
- testsuite/tests/ghci/should_run/UnboxedTuples/unboxedtuples.T
- testsuite/tests/ghci/should_run/UnliftedDataTypeInterp/unlifteddatatypeinterp.T
Changes:
| ... | ... | @@ -30,7 +30,7 @@ module GHC ( |
| 30 | 30 | |
| 31 | 31 | -- * Flags and settings
|
| 32 | 32 | DynFlags(..), GeneralFlag(..), Severity(..), Backend, gopt,
|
| 33 | - ncgBackend, llvmBackend, viaCBackend, interpreterBackend, noBackend,
|
|
| 33 | + ncgBackend, llvmBackend, viaCBackend, bytecodeBackend, interpreterBackend, noBackend,
|
|
| 34 | 34 | GhcMode(..), GhcLink(..),
|
| 35 | 35 | parseDynamicFlags, parseTargetFiles,
|
| 36 | 36 | getSessionDynFlags,
|
| ... | ... | @@ -47,6 +47,7 @@ module GHC.Driver.Backend |
| 47 | 47 | , llvmBackend
|
| 48 | 48 | , jsBackend
|
| 49 | 49 | , viaCBackend
|
| 50 | + , bytecodeBackend
|
|
| 50 | 51 | , interpreterBackend
|
| 51 | 52 | , noBackend
|
| 52 | 53 | , allBackends
|
| ... | ... | @@ -252,7 +253,7 @@ instance Show Backend where |
| 252 | 253 | show = backendDescription
|
| 253 | 254 | |
| 254 | 255 | |
| 255 | -ncgBackend, llvmBackend, viaCBackend, interpreterBackend, jsBackend, noBackend
|
|
| 256 | +ncgBackend, llvmBackend, viaCBackend, bytecodeBackend, interpreterBackend, jsBackend, noBackend
|
|
| 256 | 257 | :: Backend
|
| 257 | 258 | |
| 258 | 259 | -- | The native code generator.
|
| ... | ... | @@ -310,7 +311,11 @@ viaCBackend = Named ViaC |
| 310 | 311 | -- (foreign primops).
|
| 311 | 312 | --
|
| 312 | 313 | -- See "GHC.StgToByteCode"
|
| 313 | -interpreterBackend = Named Interpreter
|
|
| 314 | +bytecodeBackend = Named Bytecode
|
|
| 315 | + |
|
| 316 | +{-# DEPRECATED interpreterBackend "Renamed to bytecodeBackend" #-}
|
|
| 317 | +interpreterBackend = bytecodeBackend
|
|
| 318 | + |
|
| 314 | 319 | |
| 315 | 320 | -- | A dummy back end that generates no code.
|
| 316 | 321 | --
|
| ... | ... | @@ -419,7 +424,7 @@ backendDescription (Named NCG) = "native code generator" |
| 419 | 424 | backendDescription (Named LLVM) = "LLVM"
|
| 420 | 425 | backendDescription (Named ViaC) = "compiling via C"
|
| 421 | 426 | backendDescription (Named JavaScript) = "compiling to JavaScript"
|
| 422 | -backendDescription (Named Interpreter) = "byte-code interpreter"
|
|
| 427 | +backendDescription (Named Bytecode) = "byte-code interpreter"
|
|
| 423 | 428 | backendDescription (Named NoBackend) = "no code generated"
|
| 424 | 429 | |
| 425 | 430 | -- | This flag tells the compiler driver whether the back
|
| ... | ... | @@ -431,7 +436,7 @@ backendWritesFiles (Named NCG) = True |
| 431 | 436 | backendWritesFiles (Named LLVM) = True
|
| 432 | 437 | backendWritesFiles (Named ViaC) = True
|
| 433 | 438 | backendWritesFiles (Named JavaScript) = True
|
| 434 | -backendWritesFiles (Named Interpreter) = False
|
|
| 439 | +backendWritesFiles (Named Bytecode) = False
|
|
| 435 | 440 | backendWritesFiles (Named NoBackend) = False
|
| 436 | 441 | |
| 437 | 442 | -- | When the back end does write files, this value tells
|
| ... | ... | @@ -442,7 +447,7 @@ backendPipelineOutput (Named NCG) = Persistent |
| 442 | 447 | backendPipelineOutput (Named LLVM) = Persistent
|
| 443 | 448 | backendPipelineOutput (Named ViaC) = Persistent
|
| 444 | 449 | backendPipelineOutput (Named JavaScript) = Persistent
|
| 445 | -backendPipelineOutput (Named Interpreter) = NoOutputFile
|
|
| 450 | +backendPipelineOutput (Named Bytecode) = NoOutputFile
|
|
| 446 | 451 | backendPipelineOutput (Named NoBackend) = NoOutputFile
|
| 447 | 452 | |
| 448 | 453 | -- | This flag tells the driver whether the back end can
|
| ... | ... | @@ -453,7 +458,7 @@ backendCanReuseLoadedCode (Named NCG) = False |
| 453 | 458 | backendCanReuseLoadedCode (Named LLVM) = False
|
| 454 | 459 | backendCanReuseLoadedCode (Named ViaC) = False
|
| 455 | 460 | backendCanReuseLoadedCode (Named JavaScript) = False
|
| 456 | -backendCanReuseLoadedCode (Named Interpreter) = True
|
|
| 461 | +backendCanReuseLoadedCode (Named Bytecode) = True
|
|
| 457 | 462 | backendCanReuseLoadedCode (Named NoBackend) = False
|
| 458 | 463 | |
| 459 | 464 | -- | It is is true of every back end except @-fno-code@
|
| ... | ... | @@ -478,7 +483,7 @@ backendGeneratesCode (Named NCG) = True |
| 478 | 483 | backendGeneratesCode (Named LLVM) = True
|
| 479 | 484 | backendGeneratesCode (Named ViaC) = True
|
| 480 | 485 | backendGeneratesCode (Named JavaScript) = True
|
| 481 | -backendGeneratesCode (Named Interpreter) = True
|
|
| 486 | +backendGeneratesCode (Named Bytecode) = True
|
|
| 482 | 487 | backendGeneratesCode (Named NoBackend) = False
|
| 483 | 488 | |
| 484 | 489 | backendGeneratesCodeForHsBoot :: Backend -> Bool
|
| ... | ... | @@ -486,7 +491,7 @@ backendGeneratesCodeForHsBoot (Named NCG) = True |
| 486 | 491 | backendGeneratesCodeForHsBoot (Named LLVM) = True
|
| 487 | 492 | backendGeneratesCodeForHsBoot (Named ViaC) = True
|
| 488 | 493 | backendGeneratesCodeForHsBoot (Named JavaScript) = True
|
| 489 | -backendGeneratesCodeForHsBoot (Named Interpreter) = False
|
|
| 494 | +backendGeneratesCodeForHsBoot (Named Bytecode) = False
|
|
| 490 | 495 | backendGeneratesCodeForHsBoot (Named NoBackend) = False
|
| 491 | 496 | |
| 492 | 497 | -- | When set, this flag turns on interface writing for
|
| ... | ... | @@ -498,7 +503,7 @@ backendSupportsInterfaceWriting (Named NCG) = True |
| 498 | 503 | backendSupportsInterfaceWriting (Named LLVM) = True
|
| 499 | 504 | backendSupportsInterfaceWriting (Named ViaC) = True
|
| 500 | 505 | backendSupportsInterfaceWriting (Named JavaScript) = True
|
| 501 | -backendSupportsInterfaceWriting (Named Interpreter) = True
|
|
| 506 | +backendSupportsInterfaceWriting (Named Bytecode) = True
|
|
| 502 | 507 | backendSupportsInterfaceWriting (Named NoBackend) = False
|
| 503 | 508 | |
| 504 | 509 | -- | When preparing code for this back end, the type
|
| ... | ... | @@ -510,7 +515,7 @@ backendRespectsSpecialise (Named NCG) = True |
| 510 | 515 | backendRespectsSpecialise (Named LLVM) = True
|
| 511 | 516 | backendRespectsSpecialise (Named ViaC) = True
|
| 512 | 517 | backendRespectsSpecialise (Named JavaScript) = True
|
| 513 | -backendRespectsSpecialise (Named Interpreter) = False
|
|
| 518 | +backendRespectsSpecialise (Named Bytecode) = False
|
|
| 514 | 519 | backendRespectsSpecialise (Named NoBackend) = False
|
| 515 | 520 | |
| 516 | 521 | -- | This back end wants the `mi_top_env` field of a
|
| ... | ... | @@ -522,7 +527,7 @@ backendWantsGlobalBindings (Named LLVM) = False |
| 522 | 527 | backendWantsGlobalBindings (Named ViaC) = False
|
| 523 | 528 | backendWantsGlobalBindings (Named JavaScript) = False
|
| 524 | 529 | backendWantsGlobalBindings (Named NoBackend) = False
|
| 525 | -backendWantsGlobalBindings (Named Interpreter) = True
|
|
| 530 | +backendWantsGlobalBindings (Named Bytecode) = True
|
|
| 526 | 531 | |
| 527 | 532 | -- | The back end targets a technology that implements
|
| 528 | 533 | -- `switch` natively. (For example, LLVM or C.) Therefore
|
| ... | ... | @@ -534,7 +539,7 @@ backendHasNativeSwitch (Named NCG) = False |
| 534 | 539 | backendHasNativeSwitch (Named LLVM) = True
|
| 535 | 540 | backendHasNativeSwitch (Named ViaC) = True
|
| 536 | 541 | backendHasNativeSwitch (Named JavaScript) = True
|
| 537 | -backendHasNativeSwitch (Named Interpreter) = False
|
|
| 542 | +backendHasNativeSwitch (Named Bytecode) = False
|
|
| 538 | 543 | backendHasNativeSwitch (Named NoBackend) = False
|
| 539 | 544 | |
| 540 | 545 | -- | As noted in the documentation for
|
| ... | ... | @@ -548,7 +553,7 @@ backendPrimitiveImplementation (Named NCG) = NcgPrimitives |
| 548 | 553 | backendPrimitiveImplementation (Named LLVM) = LlvmPrimitives
|
| 549 | 554 | backendPrimitiveImplementation (Named JavaScript) = JSPrimitives
|
| 550 | 555 | backendPrimitiveImplementation (Named ViaC) = GenericPrimitives
|
| 551 | -backendPrimitiveImplementation (Named Interpreter) = GenericPrimitives
|
|
| 556 | +backendPrimitiveImplementation (Named Bytecode) = GenericPrimitives
|
|
| 552 | 557 | backendPrimitiveImplementation (Named NoBackend) = GenericPrimitives
|
| 553 | 558 | |
| 554 | 559 | -- | When this value is `IsValid`, the back end is
|
| ... | ... | @@ -560,7 +565,7 @@ backendSimdValidity (Named NCG) = IsValid |
| 560 | 565 | backendSimdValidity (Named LLVM) = IsValid
|
| 561 | 566 | backendSimdValidity (Named ViaC) = NotValid $ unlines ["SIMD vector instructions require using the NCG or the LLVM backend."]
|
| 562 | 567 | backendSimdValidity (Named JavaScript) = NotValid $ unlines ["SIMD vector instructions require using the NCG or the LLVM backend."]
|
| 563 | -backendSimdValidity (Named Interpreter) = NotValid $ unlines ["SIMD vector instructions require using the NCG or the LLVM backend."]
|
|
| 568 | +backendSimdValidity (Named Bytecode) = NotValid $ unlines ["SIMD vector instructions require using the NCG or the LLVM backend."]
|
|
| 564 | 569 | backendSimdValidity (Named NoBackend) = NotValid $ unlines ["SIMD vector instructions require using the NCG or the LLVM backend."]
|
| 565 | 570 | |
| 566 | 571 | -- | This flag says whether the back end supports large
|
| ... | ... | @@ -571,7 +576,7 @@ backendSupportsEmbeddedBlobs (Named NCG) = True |
| 571 | 576 | backendSupportsEmbeddedBlobs (Named LLVM) = False
|
| 572 | 577 | backendSupportsEmbeddedBlobs (Named ViaC) = False
|
| 573 | 578 | backendSupportsEmbeddedBlobs (Named JavaScript) = False
|
| 574 | -backendSupportsEmbeddedBlobs (Named Interpreter) = False
|
|
| 579 | +backendSupportsEmbeddedBlobs (Named Bytecode) = False
|
|
| 575 | 580 | backendSupportsEmbeddedBlobs (Named NoBackend) = False
|
| 576 | 581 | |
| 577 | 582 | -- | This flag tells the compiler driver that the back end
|
| ... | ... | @@ -586,7 +591,7 @@ backendNeedsPlatformNcgSupport (Named NCG) = True |
| 586 | 591 | backendNeedsPlatformNcgSupport (Named LLVM) = False
|
| 587 | 592 | backendNeedsPlatformNcgSupport (Named ViaC) = False
|
| 588 | 593 | backendNeedsPlatformNcgSupport (Named JavaScript) = False
|
| 589 | -backendNeedsPlatformNcgSupport (Named Interpreter) = False
|
|
| 594 | +backendNeedsPlatformNcgSupport (Named Bytecode) = False
|
|
| 590 | 595 | backendNeedsPlatformNcgSupport (Named NoBackend) = False
|
| 591 | 596 | |
| 592 | 597 | -- | This flag is set if the back end can generate code
|
| ... | ... | @@ -598,7 +603,7 @@ backendSupportsUnsplitProcPoints (Named NCG) = True |
| 598 | 603 | backendSupportsUnsplitProcPoints (Named LLVM) = False
|
| 599 | 604 | backendSupportsUnsplitProcPoints (Named ViaC) = False
|
| 600 | 605 | backendSupportsUnsplitProcPoints (Named JavaScript) = False
|
| 601 | -backendSupportsUnsplitProcPoints (Named Interpreter) = False
|
|
| 606 | +backendSupportsUnsplitProcPoints (Named Bytecode) = False
|
|
| 602 | 607 | backendSupportsUnsplitProcPoints (Named NoBackend) = False
|
| 603 | 608 | |
| 604 | 609 | -- | This flag guides the driver in resolving issues about
|
| ... | ... | @@ -616,7 +621,7 @@ backendSwappableWithViaC (Named NCG) = True |
| 616 | 621 | backendSwappableWithViaC (Named LLVM) = True
|
| 617 | 622 | backendSwappableWithViaC (Named ViaC) = False
|
| 618 | 623 | backendSwappableWithViaC (Named JavaScript) = False
|
| 619 | -backendSwappableWithViaC (Named Interpreter) = False
|
|
| 624 | +backendSwappableWithViaC (Named Bytecode) = False
|
|
| 620 | 625 | backendSwappableWithViaC (Named NoBackend) = False
|
| 621 | 626 | |
| 622 | 627 | -- | This flag is true if the back end works *only* with
|
| ... | ... | @@ -626,7 +631,7 @@ backendUnregisterisedAbiOnly (Named NCG) = False |
| 626 | 631 | backendUnregisterisedAbiOnly (Named LLVM) = False
|
| 627 | 632 | backendUnregisterisedAbiOnly (Named ViaC) = True
|
| 628 | 633 | backendUnregisterisedAbiOnly (Named JavaScript) = False
|
| 629 | -backendUnregisterisedAbiOnly (Named Interpreter) = False
|
|
| 634 | +backendUnregisterisedAbiOnly (Named Bytecode) = False
|
|
| 630 | 635 | backendUnregisterisedAbiOnly (Named NoBackend) = False
|
| 631 | 636 | |
| 632 | 637 | -- | This flag is set if the back end generates C code in
|
| ... | ... | @@ -637,7 +642,7 @@ backendGeneratesHc (Named NCG) = False |
| 637 | 642 | backendGeneratesHc (Named LLVM) = False
|
| 638 | 643 | backendGeneratesHc (Named ViaC) = True
|
| 639 | 644 | backendGeneratesHc (Named JavaScript) = False
|
| 640 | -backendGeneratesHc (Named Interpreter) = False
|
|
| 645 | +backendGeneratesHc (Named Bytecode) = False
|
|
| 641 | 646 | backendGeneratesHc (Named NoBackend) = False
|
| 642 | 647 | |
| 643 | 648 | -- | This flag says whether SPT (static pointer table)
|
| ... | ... | @@ -649,7 +654,7 @@ backendSptIsDynamic (Named NCG) = False |
| 649 | 654 | backendSptIsDynamic (Named LLVM) = False
|
| 650 | 655 | backendSptIsDynamic (Named ViaC) = False
|
| 651 | 656 | backendSptIsDynamic (Named JavaScript) = False
|
| 652 | -backendSptIsDynamic (Named Interpreter) = True
|
|
| 657 | +backendSptIsDynamic (Named Bytecode) = True
|
|
| 653 | 658 | backendSptIsDynamic (Named NoBackend) = False
|
| 654 | 659 | |
| 655 | 660 | -- | If this flag is unset, then the driver ignores the flag @-fbreak-points@,
|
| ... | ... | @@ -660,7 +665,7 @@ backendSupportsBreakpoints = \case |
| 660 | 665 | Named LLVM -> False
|
| 661 | 666 | Named ViaC -> False
|
| 662 | 667 | Named JavaScript -> False
|
| 663 | - Named Interpreter -> True
|
|
| 668 | + Named Bytecode -> True
|
|
| 664 | 669 | Named NoBackend -> False
|
| 665 | 670 | |
| 666 | 671 | -- | If this flag is set, then the driver forces the
|
| ... | ... | @@ -671,7 +676,7 @@ backendForcesOptimization0 (Named NCG) = False |
| 671 | 676 | backendForcesOptimization0 (Named LLVM) = False
|
| 672 | 677 | backendForcesOptimization0 (Named ViaC) = False
|
| 673 | 678 | backendForcesOptimization0 (Named JavaScript) = False
|
| 674 | -backendForcesOptimization0 (Named Interpreter) = True
|
|
| 679 | +backendForcesOptimization0 (Named Bytecode) = True
|
|
| 675 | 680 | backendForcesOptimization0 (Named NoBackend) = False
|
| 676 | 681 | |
| 677 | 682 | -- | I don't understand exactly how this works. But if
|
| ... | ... | @@ -683,7 +688,7 @@ backendNeedsFullWays (Named NCG) = False |
| 683 | 688 | backendNeedsFullWays (Named LLVM) = False
|
| 684 | 689 | backendNeedsFullWays (Named ViaC) = False
|
| 685 | 690 | backendNeedsFullWays (Named JavaScript) = False
|
| 686 | -backendNeedsFullWays (Named Interpreter) = True
|
|
| 691 | +backendNeedsFullWays (Named Bytecode) = True
|
|
| 687 | 692 | backendNeedsFullWays (Named NoBackend) = False
|
| 688 | 693 | |
| 689 | 694 | -- | This flag is also special for the interpreter: if a
|
| ... | ... | @@ -695,7 +700,7 @@ backendSpecialModuleSource (Named NCG) = const Nothing |
| 695 | 700 | backendSpecialModuleSource (Named LLVM) = const Nothing
|
| 696 | 701 | backendSpecialModuleSource (Named ViaC) = const Nothing
|
| 697 | 702 | backendSpecialModuleSource (Named JavaScript) = const Nothing
|
| 698 | -backendSpecialModuleSource (Named Interpreter) = \b -> if b then Just "interpreted" else Nothing
|
|
| 703 | +backendSpecialModuleSource (Named Bytecode) = \b -> if b then Just "interpreted" else Nothing
|
|
| 699 | 704 | backendSpecialModuleSource (Named NoBackend) = const (Just "nothing")
|
| 700 | 705 | |
| 701 | 706 | -- | This flag says whether the back end supports Haskell
|
| ... | ... | @@ -707,7 +712,7 @@ backendSupportsHpc (Named NCG) = True |
| 707 | 712 | backendSupportsHpc (Named LLVM) = True
|
| 708 | 713 | backendSupportsHpc (Named ViaC) = True
|
| 709 | 714 | backendSupportsHpc (Named JavaScript) = False
|
| 710 | -backendSupportsHpc (Named Interpreter) = False
|
|
| 715 | +backendSupportsHpc (Named Bytecode) = False
|
|
| 711 | 716 | backendSupportsHpc (Named NoBackend) = True
|
| 712 | 717 | |
| 713 | 718 | -- | This flag says whether the back end supports foreign
|
| ... | ... | @@ -718,7 +723,7 @@ backendSupportsCImport (Named NCG) = True |
| 718 | 723 | backendSupportsCImport (Named LLVM) = True
|
| 719 | 724 | backendSupportsCImport (Named ViaC) = True
|
| 720 | 725 | backendSupportsCImport (Named JavaScript) = True
|
| 721 | -backendSupportsCImport (Named Interpreter) = True
|
|
| 726 | +backendSupportsCImport (Named Bytecode) = True
|
|
| 722 | 727 | backendSupportsCImport (Named NoBackend) = True
|
| 723 | 728 | |
| 724 | 729 | -- | This flag says whether the back end supports foreign
|
| ... | ... | @@ -728,7 +733,7 @@ backendSupportsCExport (Named NCG) = True |
| 728 | 733 | backendSupportsCExport (Named LLVM) = True
|
| 729 | 734 | backendSupportsCExport (Named ViaC) = True
|
| 730 | 735 | backendSupportsCExport (Named JavaScript) = True
|
| 731 | -backendSupportsCExport (Named Interpreter) = False
|
|
| 736 | +backendSupportsCExport (Named Bytecode) = False
|
|
| 732 | 737 | backendSupportsCExport (Named NoBackend) = True
|
| 733 | 738 | |
| 734 | 739 | -- | When using this back end, it may be necessary or
|
| ... | ... | @@ -749,7 +754,7 @@ backendCDefs (Named NCG) = NoCDefs |
| 749 | 754 | backendCDefs (Named LLVM) = LlvmCDefs
|
| 750 | 755 | backendCDefs (Named ViaC) = NoCDefs
|
| 751 | 756 | backendCDefs (Named JavaScript) = NoCDefs
|
| 752 | -backendCDefs (Named Interpreter) = NoCDefs
|
|
| 757 | +backendCDefs (Named Bytecode) = NoCDefs
|
|
| 753 | 758 | backendCDefs (Named NoBackend) = NoCDefs
|
| 754 | 759 | |
| 755 | 760 | -- | This (defunctionalized) function generates code and
|
| ... | ... | @@ -768,7 +773,7 @@ backendCodeOutput (Named NCG) = NcgCodeOutput |
| 768 | 773 | backendCodeOutput (Named LLVM) = LlvmCodeOutput
|
| 769 | 774 | backendCodeOutput (Named ViaC) = ViaCCodeOutput
|
| 770 | 775 | backendCodeOutput (Named JavaScript) = JSCodeOutput
|
| 771 | -backendCodeOutput (Named Interpreter) = panic "backendCodeOutput: interpreterBackend"
|
|
| 776 | +backendCodeOutput (Named Bytecode) = panic "backendCodeOutput: bytecodeBackend"
|
|
| 772 | 777 | backendCodeOutput (Named NoBackend) = panic "backendCodeOutput: noBackend"
|
| 773 | 778 | |
| 774 | 779 | backendUseJSLinker :: Backend -> Bool
|
| ... | ... | @@ -776,7 +781,7 @@ backendUseJSLinker (Named NCG) = False |
| 776 | 781 | backendUseJSLinker (Named LLVM) = False
|
| 777 | 782 | backendUseJSLinker (Named ViaC) = False
|
| 778 | 783 | backendUseJSLinker (Named JavaScript) = True
|
| 779 | -backendUseJSLinker (Named Interpreter) = False
|
|
| 784 | +backendUseJSLinker (Named Bytecode) = False
|
|
| 780 | 785 | backendUseJSLinker (Named NoBackend) = False
|
| 781 | 786 | |
| 782 | 787 | -- | This (defunctionalized) function tells the compiler
|
| ... | ... | @@ -795,7 +800,7 @@ backendPostHscPipeline (Named NCG) = NcgPostHscPipeline |
| 795 | 800 | backendPostHscPipeline (Named LLVM) = LlvmPostHscPipeline
|
| 796 | 801 | backendPostHscPipeline (Named ViaC) = ViaCPostHscPipeline
|
| 797 | 802 | backendPostHscPipeline (Named JavaScript) = JSPostHscPipeline
|
| 798 | -backendPostHscPipeline (Named Interpreter) = NoPostHscPipeline
|
|
| 803 | +backendPostHscPipeline (Named Bytecode) = NoPostHscPipeline
|
|
| 799 | 804 | backendPostHscPipeline (Named NoBackend) = NoPostHscPipeline
|
| 800 | 805 | |
| 801 | 806 | -- | Somewhere in the compiler driver, when compiling
|
| ... | ... | @@ -809,7 +814,7 @@ backendNormalSuccessorPhase (Named NCG) = As False |
| 809 | 814 | backendNormalSuccessorPhase (Named LLVM) = LlvmOpt
|
| 810 | 815 | backendNormalSuccessorPhase (Named ViaC) = HCc
|
| 811 | 816 | backendNormalSuccessorPhase (Named JavaScript) = StopLn
|
| 812 | -backendNormalSuccessorPhase (Named Interpreter) = StopLn
|
|
| 817 | +backendNormalSuccessorPhase (Named Bytecode) = StopLn
|
|
| 813 | 818 | backendNormalSuccessorPhase (Named NoBackend) = StopLn
|
| 814 | 819 | |
| 815 | 820 | -- | Name of the back end, if any. Used to migrate legacy
|
| ... | ... | @@ -820,7 +825,7 @@ backendName (Named NCG) = NCG |
| 820 | 825 | backendName (Named LLVM) = LLVM
|
| 821 | 826 | backendName (Named ViaC) = ViaC
|
| 822 | 827 | backendName (Named JavaScript) = JavaScript
|
| 823 | -backendName (Named Interpreter) = Interpreter
|
|
| 828 | +backendName (Named Bytecode) = Bytecode
|
|
| 824 | 829 | backendName (Named NoBackend) = NoBackend
|
| 825 | 830 | |
| 826 | 831 | |
| ... | ... | @@ -833,7 +838,7 @@ allBackends = [ ncgBackend |
| 833 | 838 | , llvmBackend
|
| 834 | 839 | , viaCBackend
|
| 835 | 840 | , jsBackend
|
| 836 | - , interpreterBackend
|
|
| 841 | + , bytecodeBackend
|
|
| 837 | 842 | , noBackend
|
| 838 | 843 | ]
|
| 839 | 844 |
| ... | ... | @@ -28,6 +28,6 @@ data BackendName |
| 28 | 28 | | LLVM -- ^ Names the LLVM backend.
|
| 29 | 29 | | ViaC -- ^ Names the Via-C backend.
|
| 30 | 30 | | JavaScript -- ^ Names the JS backend.
|
| 31 | - | Interpreter -- ^ Names the ByteCode interpreter.
|
|
| 31 | + | Bytecode -- ^ Names the ByteCode interpreter.
|
|
| 32 | 32 | | NoBackend -- ^ Names the `-fno-code` backend.
|
| 33 | 33 | deriving (Eq, Show) |
| ... | ... | @@ -916,7 +916,7 @@ enableCodeGenWhen logger tmpfs staticLife dynLife unit_env mod_graph = do |
| 916 | 916 | else (,) <$> (new_temp_file (hiSuf_ dflags) (dynHiSuf_ dflags))
|
| 917 | 917 | <*> (new_temp_file (objectSuf_ dflags) (dynObjectSuf_ dflags))
|
| 918 | 918 | let new_dflags = case enable_spec of
|
| 919 | - EnableByteCode -> dflags { backend = interpreterBackend }
|
|
| 919 | + EnableByteCode -> dflags { backend = bytecodeBackend }
|
|
| 920 | 920 | EnableObject -> dflags { backend = defaultBackendOf ms }
|
| 921 | 921 | EnableByteCodeAndObject -> (gopt_set dflags Opt_ByteCodeAndObjectCode) { backend = defaultBackendOf ms}
|
| 922 | 922 | let ms' = ms
|
| ... | ... | @@ -2777,10 +2777,12 @@ hscCompileCoreExpr' hsc_env srcspan ds_expr = do |
| 2777 | 2777 | |
| 2778 | 2778 | {- load it -}
|
| 2779 | 2779 | bco_time <- getCurrentTime
|
| 2780 | - (fv_hvs, mods_needed, units_needed) <- loadDecls interp hsc_env srcspan $
|
|
| 2780 | + (mods_needed, units_needed) <- loadDecls interp hsc_env srcspan $
|
|
| 2781 | 2781 | Linkable bco_time this_mod $ NE.singleton $ BCOs bcos
|
| 2782 | + -- Get the foreign reference to the name we should have just loaded.
|
|
| 2783 | + mhvs <- lookupFromLoadedEnv interp (idName binding_id)
|
|
| 2782 | 2784 | {- Get the HValue for the root -}
|
| 2783 | - return (expectJust $ lookup (idName binding_id) fv_hvs, mods_needed, units_needed)
|
|
| 2785 | + return (expectJust mhvs, mods_needed, units_needed)
|
|
| 2784 | 2786 | |
| 2785 | 2787 | |
| 2786 | 2788 |
| ... | ... | @@ -281,8 +281,8 @@ compileOne' mHscMessage |
| 281 | 281 | -- was set), force it to generate byte-code. This is NOT transitive and
|
| 282 | 282 | -- only applies to direct targets.
|
| 283 | 283 | | loadAsByteCode
|
| 284 | - = ( interpreterBackend
|
|
| 285 | - , gopt_set (lcl_dflags { backend = interpreterBackend }) Opt_ForceRecomp
|
|
| 284 | + = ( bytecodeBackend
|
|
| 285 | + , gopt_set (lcl_dflags { backend = bytecodeBackend }) Opt_ForceRecomp
|
|
| 286 | 286 | )
|
| 287 | 287 | |
| 288 | 288 | | otherwise
|
| ... | ... | @@ -1931,7 +1931,7 @@ dynamic_flags_deps = [ |
| 1931 | 1931 | d { ghcLink=NoLink }) >> setBackend noBackend))
|
| 1932 | 1932 | , make_ord_flag defFlag "fbyte-code"
|
| 1933 | 1933 | (noArgM $ \dflags -> do
|
| 1934 | - setBackend interpreterBackend
|
|
| 1934 | + setBackend bytecodeBackend
|
|
| 1935 | 1935 | pure $ flip gopt_unset Opt_ByteCodeAndObjectCode (gopt_set dflags Opt_ByteCode))
|
| 1936 | 1936 | , make_ord_flag defFlag "fobject-code" $ noArgM $ \dflags -> do
|
| 1937 | 1937 | setBackend $ platformDefaultBackend (targetPlatform dflags)
|
| ... | ... | @@ -28,6 +28,7 @@ module GHC.Linker.Loader |
| 28 | 28 | , withExtendedLoadedEnv
|
| 29 | 29 | , extendLoadedEnv
|
| 30 | 30 | , deleteFromLoadedEnv
|
| 31 | + , lookupFromLoadedEnv
|
|
| 31 | 32 | -- * Internals
|
| 32 | 33 | , allocateBreakArrays
|
| 33 | 34 | , rmDupLinkables
|
| ... | ... | @@ -213,6 +214,15 @@ deleteFromLoadedEnv interp to_remove = |
| 213 | 214 | return $ modifyClosureEnv pls $ \ce ->
|
| 214 | 215 | delListFromNameEnv ce to_remove
|
| 215 | 216 | |
| 217 | +-- | Have we already loaded a name into the interpreter?
|
|
| 218 | +lookupFromLoadedEnv :: Interp -> Name -> IO (Maybe ForeignHValue)
|
|
| 219 | +lookupFromLoadedEnv interp name = do
|
|
| 220 | + mstate <- getLoaderState interp
|
|
| 221 | + return $ do
|
|
| 222 | + pls <- mstate
|
|
| 223 | + res <- lookupNameEnv (closure_env (linker_env pls)) name
|
|
| 224 | + return (snd res)
|
|
| 225 | + |
|
| 216 | 226 | -- | Load the module containing the given Name and get its associated 'HValue'.
|
| 217 | 227 | --
|
| 218 | 228 | -- Throws a 'ProgramError' if loading fails or the name cannot be found.
|
| ... | ... | @@ -258,7 +268,7 @@ loadDependencies interp hsc_env pls span needed_mods = do |
| 258 | 268 | |
| 259 | 269 | -- Link the packages and modules required
|
| 260 | 270 | pls1 <- loadPackages' interp hsc_env (ldUnits deps) pls
|
| 261 | - (pls2, succ) <- loadModuleLinkables interp hsc_env pls1 (ldNeededLinkables deps)
|
|
| 271 | + (pls2, succ) <- loadExternalModuleLinkables interp hsc_env pls1 (ldNeededLinkables deps)
|
|
| 262 | 272 | let this_pkgs_loaded = udfmRestrictKeys all_pkgs_loaded $ getUniqDSet trans_pkgs_needed
|
| 263 | 273 | all_pkgs_loaded = pkgs_loaded pls2
|
| 264 | 274 | trans_pkgs_needed = unionManyUniqDSets (this_pkgs_needed : [ loaded_pkg_trans_deps pkg
|
| ... | ... | @@ -684,42 +694,23 @@ get_reachable_nodes hsc_env mods |
| 684 | 694 | |
| 685 | 695 | ********************************************************************* -}
|
| 686 | 696 | |
| 687 | -loadDecls :: Interp -> HscEnv -> SrcSpan -> Linkable -> IO ([(Name, ForeignHValue)], [Linkable], PkgsLoaded)
|
|
| 697 | +-- | Load the dependencies of a linkable, and then load the linkable itself.
|
|
| 698 | +loadDecls :: Interp -> HscEnv -> SrcSpan -> Linkable -> IO ([Linkable], PkgsLoaded)
|
|
| 688 | 699 | loadDecls interp hsc_env span linkable = do
|
| 689 | 700 | -- Initialise the linker (if it's not been done already)
|
| 690 | 701 | initLoaderState interp hsc_env
|
| 691 | 702 | |
| 692 | 703 | -- Take lock for the actual work.
|
| 693 | 704 | modifyLoaderState interp $ \pls0 -> do
|
| 694 | - -- Link the foreign objects first; BCOs in linkable are ignored here.
|
|
| 695 | - (pls1, objs_ok) <- loadObjects interp hsc_env pls0 [linkable]
|
|
| 696 | - when (failed objs_ok) $ throwGhcExceptionIO $ ProgramError "loadDecls: failed to load foreign objects"
|
|
| 697 | - |
|
| 698 | 705 | -- Link the packages and modules required
|
| 699 | - (pls, ok, links_needed, units_needed) <- loadDependencies interp hsc_env pls1 span needed_mods
|
|
| 706 | + (pls, ok, links_needed, units_needed) <- loadDependencies interp hsc_env pls0 span needed_mods
|
|
| 700 | 707 | if failed ok
|
| 701 | - then throwGhcExceptionIO (ProgramError "")
|
|
| 708 | + then throwGhcExceptionIO (ProgramError "could not load dependencies for decls")
|
|
| 702 | 709 | else do
|
| 703 | - -- Link the expression itself
|
|
| 704 | - let le = linker_env pls
|
|
| 705 | - let lb = linked_breaks pls
|
|
| 706 | - le2_itbl_env <- linkITbls interp (itbl_env le) (concat $ map bc_itbls cbcs)
|
|
| 707 | - le2_addr_env <- foldlM (\env cbc -> allocateTopStrings interp (bc_strs cbc) env) (addr_env le) cbcs
|
|
| 708 | - le2_breakarray_env <- allocateBreakArrays interp (breakarray_env lb) (catMaybes $ map bc_breaks cbcs)
|
|
| 709 | - le2_ccs_env <- allocateCCS interp (ccs_env lb) (catMaybes $ map bc_breaks cbcs)
|
|
| 710 | - let le2 = le { itbl_env = le2_itbl_env
|
|
| 711 | - , addr_env = le2_addr_env }
|
|
| 712 | - let lb2 = lb { breakarray_env = le2_breakarray_env
|
|
| 713 | - , ccs_env = le2_ccs_env }
|
|
| 714 | - |
|
| 715 | - -- Link the necessary packages and linkables
|
|
| 716 | - new_bindings <- linkSomeBCOs interp (pkgs_loaded pls) le2 lb2 cbcs
|
|
| 717 | - nms_fhvs <- makeForeignNamedHValueRefs interp new_bindings
|
|
| 718 | - let ce2 = extendClosureEnv (closure_env le2) nms_fhvs
|
|
| 719 | - !pls2 = pls { linker_env = le2 { closure_env = ce2 }
|
|
| 720 | - , linked_breaks = lb2 }
|
|
| 721 | - mapM_ (linkSptEntry interp ce2) (concatMap bc_spt_entries cbcs)
|
|
| 722 | - return (pls2, (nms_fhvs, links_needed, units_needed))
|
|
| 710 | + (pls2, ok2) <- loadInternalModuleLinkables interp hsc_env pls [linkable]
|
|
| 711 | + when (failed ok2) $
|
|
| 712 | + throwGhcExceptionIO (ProgramError "could not load linkable for decls")
|
|
| 713 | + return (pls2, (links_needed, units_needed))
|
|
| 723 | 714 | where
|
| 724 | 715 | cbcs = linkableBCOs linkable
|
| 725 | 716 | |
| ... | ... | @@ -761,8 +752,29 @@ loadModule interp hsc_env mod = do |
| 761 | 752 | |
| 762 | 753 | ********************************************************************* -}
|
| 763 | 754 | |
| 764 | -loadModuleLinkables :: Interp -> HscEnv -> LoaderState -> [Linkable] -> IO (LoaderState, SuccessFlag)
|
|
| 765 | -loadModuleLinkables interp hsc_env pls linkables
|
|
| 755 | +-- | Which closures from a Linkable to add to the 'ClosureEnv' in the 'LoaderState'
|
|
| 756 | +data KeepModuleLinkableDefinitions = KeepAllDefinitions -- ^ Keep all definitions
|
|
| 757 | + | KeepExternalDefinitions -- ^ Only keep external definitions
|
|
| 758 | + |
|
| 759 | +-- | Interpret a 'KeepModuleLinkableDefinitions' specification to a predictate on 'Name'
|
|
| 760 | +keepDefinitions :: KeepModuleLinkableDefinitions -> (Name -> Bool)
|
|
| 761 | +keepDefinitions KeepAllDefinitions = const True
|
|
| 762 | +keepDefinitions KeepExternalDefinitions = isExternalName
|
|
| 763 | + |
|
| 764 | +-- | Load a linkable from a module, and only add externally visible names to the
|
|
| 765 | +-- environment.
|
|
| 766 | +loadExternalModuleLinkables :: Interp -> HscEnv -> LoaderState -> [Linkable] -> IO (LoaderState, SuccessFlag)
|
|
| 767 | +loadExternalModuleLinkables interp hsc_env pls linkables =
|
|
| 768 | + loadModuleLinkables interp hsc_env pls KeepExternalDefinitions linkables
|
|
| 769 | + |
|
| 770 | +-- | Load a linkable from a module, and add all the names from the linkable into the
|
|
| 771 | +-- closure environment.
|
|
| 772 | +loadInternalModuleLinkables :: Interp -> HscEnv -> LoaderState -> [Linkable] -> IO (LoaderState, SuccessFlag)
|
|
| 773 | +loadInternalModuleLinkables interp hsc_env pls linkables =
|
|
| 774 | + loadModuleLinkables interp hsc_env pls KeepAllDefinitions linkables
|
|
| 775 | + |
|
| 776 | +loadModuleLinkables :: Interp -> HscEnv -> LoaderState -> KeepModuleLinkableDefinitions -> [Linkable] -> IO (LoaderState, SuccessFlag)
|
|
| 777 | +loadModuleLinkables interp hsc_env pls keep_spec linkables
|
|
| 766 | 778 | = mask_ $ do -- don't want to be interrupted by ^C in here
|
| 767 | 779 | |
| 768 | 780 | debugTraceMsg (hsc_logger hsc_env) 3 $
|
| ... | ... | @@ -777,7 +789,7 @@ loadModuleLinkables interp hsc_env pls linkables |
| 777 | 789 | if failed ok_flag then
|
| 778 | 790 | return (pls1, Failed)
|
| 779 | 791 | else do
|
| 780 | - pls2 <- dynLinkBCOs interp pls1 bcos
|
|
| 792 | + pls2 <- dynLinkBCOs interp pls1 keep_spec bcos
|
|
| 781 | 793 | return (pls2, Succeeded)
|
| 782 | 794 | where
|
| 783 | 795 | (objs, bcos) = partitionLinkables linkables
|
| ... | ... | @@ -920,8 +932,8 @@ rmDupLinkables already ls |
| 920 | 932 | ********************************************************************* -}
|
| 921 | 933 | |
| 922 | 934 | |
| 923 | -dynLinkBCOs :: Interp -> LoaderState -> [Linkable] -> IO LoaderState
|
|
| 924 | -dynLinkBCOs interp pls bcos = do
|
|
| 935 | +dynLinkBCOs :: Interp -> LoaderState -> KeepModuleLinkableDefinitions -> [Linkable] -> IO LoaderState
|
|
| 936 | +dynLinkBCOs interp pls keep_spec bcos = do
|
|
| 925 | 937 | |
| 926 | 938 | let (bcos_loaded', new_bcos) = rmDupLinkables (bcos_loaded pls) bcos
|
| 927 | 939 | pls1 = pls { bcos_loaded = bcos_loaded' }
|
| ... | ... | @@ -945,7 +957,7 @@ dynLinkBCOs interp pls bcos = do |
| 945 | 957 | names_and_refs <- linkSomeBCOs interp (pkgs_loaded pls) le2 lb2 cbcs
|
| 946 | 958 | |
| 947 | 959 | -- We only want to add the external ones to the ClosureEnv
|
| 948 | - let (to_add, to_drop) = partition (isExternalName.fst) names_and_refs
|
|
| 960 | + let (to_add, to_drop) = partition (keepDefinitions keep_spec . fst) names_and_refs
|
|
| 949 | 961 | |
| 950 | 962 | -- Immediately release any HValueRefs we're not going to add
|
| 951 | 963 | freeHValueRefs interp (map snd to_drop)
|
| ... | ... | @@ -2778,7 +2778,7 @@ the appropriate component of the product, discarding the rest: |
| 2778 | 2778 | checkPatOf3 (_, _, p) = p -- interpret as a pattern
|
| 2779 | 2779 | |
| 2780 | 2780 | We can easily define ambiguities between arbitrary subsets of interpretations.
|
| 2781 | -For example, when we know ahead of type that only an expression or a command is
|
|
| 2781 | +For example, when we know ahead of time that only an expression or a command is
|
|
| 2782 | 2782 | possible, but not a pattern, we can use a smaller type:
|
| 2783 | 2783 | |
| 2784 | 2784 | type ExpCmd = (PV (LHsExpr GhcPs), PV (LHsCmd GhcPs))
|
| ... | ... | @@ -7,6 +7,7 @@ |
| 7 | 7 | #
|
| 8 | 8 | import sys
|
| 9 | 9 | import os
|
| 10 | +from datetime import datetime, timezone
|
|
| 10 | 11 | |
| 11 | 12 | # Support for :base-ref:, etc.
|
| 12 | 13 | sys.path.insert(0, os.path.abspath('.'))
|
| ... | ... | @@ -44,7 +45,7 @@ rst_prolog = """ |
| 44 | 45 | |
| 45 | 46 | # General information about the project.
|
| 46 | 47 | project = u'Glasgow Haskell Compiler'
|
| 47 | -copyright = u'2023, GHC Team'
|
|
| 48 | +copyright = f"{datetime.now(timezone.utc).year}, GHC Team"
|
|
| 48 | 49 | # N.B. version comes from ghc_config
|
| 49 | 50 | release = version # The full version, including alpha/beta/rc tags.
|
| 50 | 51 |
| ... | ... | @@ -1719,7 +1719,7 @@ constructor from version 9.4 with the corresponding value from 9.6: |
| 1719 | 1719 | +-----------------+------------------------+
|
| 1720 | 1720 | | ``ViaC`` | ``viaCBackend`` |
|
| 1721 | 1721 | +-----------------+------------------------+
|
| 1722 | -| ``Interpreter`` | ``interpreterBackend`` |
|
|
| 1722 | +| ``Interpreter`` | ``bytecodeBackend`` |
|
|
| 1723 | 1723 | +-----------------+------------------------+
|
| 1724 | 1724 | | ``NoBackend`` | ``noBackend`` |
|
| 1725 | 1725 | +-----------------+------------------------+
|
| ... | ... | @@ -169,9 +169,9 @@ main' postLoadMode units dflags0 args flagWarnings = do |
| 169 | 169 | let dflt_backend = backend dflags0
|
| 170 | 170 | (mode, bcknd, link)
|
| 171 | 171 | = case postLoadMode of
|
| 172 | - DoInteractive -> (CompManager, interpreterBackend, LinkInMemory)
|
|
| 173 | - DoEval _ -> (CompManager, interpreterBackend, LinkInMemory)
|
|
| 174 | - DoRun -> (CompManager, interpreterBackend, LinkInMemory)
|
|
| 172 | + DoInteractive -> (CompManager, bytecodeBackend, LinkInMemory)
|
|
| 173 | + DoEval _ -> (CompManager, bytecodeBackend, LinkInMemory)
|
|
| 174 | + DoRun -> (CompManager, bytecodeBackend, LinkInMemory)
|
|
| 175 | 175 | DoMake -> (CompManager, dflt_backend, LinkBinary)
|
| 176 | 176 | DoBackpack -> (CompManager, dflt_backend, LinkBinary)
|
| 177 | 177 | DoMkDependHS -> (MkDepend, dflt_backend, LinkBinary)
|
| ... | ... | @@ -136,9 +136,12 @@ class TestConfig: |
| 136 | 136 | # Do we have interpreter support?
|
| 137 | 137 | self.have_interp = False
|
| 138 | 138 | |
| 139 | + # Do we have external interpreter support?
|
|
| 140 | + self.have_ext_interp = False
|
|
| 141 | + |
|
| 139 | 142 | # Are we cross-compiling?
|
| 140 | 143 | self.cross = False
|
| 141 | -
|
|
| 144 | + |
|
| 142 | 145 | # Does the RTS linker only support loading shared libraries?
|
| 143 | 146 | self.interp_force_dyn = False
|
| 144 | 147 |
| ... | ... | @@ -549,10 +549,12 @@ only_ghci = only_ways([WayName('ghci'), WayName('ghci-opt')]) |
| 549 | 549 | # -----
|
| 550 | 550 | |
| 551 | 551 | def valid_way( way: WayName ) -> bool:
|
| 552 | - if way in {'ghci', 'ghci-opt', 'ghci-ext'}:
|
|
| 552 | + if way in {'ghci', 'ghci-opt'}:
|
|
| 553 | 553 | return config.have_RTS_linker
|
| 554 | - if way == 'ghci-ext-prof':
|
|
| 555 | - return config.have_RTS_linker and config.have_profiling
|
|
| 554 | + if way in {'ghci-ext'}:
|
|
| 555 | + return config.have_ext_interp
|
|
| 556 | + if way in {'ghci-ext-prof'}:
|
|
| 557 | + return config.have_ext_interp and config.have_profiling
|
|
| 556 | 558 | return True
|
| 557 | 559 | |
| 558 | 560 | def extra_ways( ways: List[WayName] ):
|
| ... | ... | @@ -7,7 +7,7 @@ main = do |
| 7 | 7 | -- begin initialize
|
| 8 | 8 | df0 <- GHC.getSessionDynFlags
|
| 9 | 9 | let df1 = df0{GHC.ghcMode = GHC.CompManager,
|
| 10 | - GHC.backend = GHC.interpreterBackend,
|
|
| 10 | + GHC.backend = GHC.bytecodeBackend,
|
|
| 11 | 11 | GHC.ghcLink = GHC.LinkInMemory,
|
| 12 | 12 | GHC.verbosity = 0}
|
| 13 | 13 | _ <- GHC.setSessionDynFlags df1
|
| ... | ... | @@ -24,7 +24,7 @@ runGhc' args act = do |
| 24 | 24 | logger <- getLogger
|
| 25 | 25 | (dflags1, _leftover, _warns) <- parseDynamicFlags logger dflags0 flags
|
| 26 | 26 | let dflags2 = dflags1 {
|
| 27 | - backend = interpreterBackend
|
|
| 27 | + backend = bytecodeBackend
|
|
| 28 | 28 | , ghcLink = LinkInMemory
|
| 29 | 29 | , verbosity = 1
|
| 30 | 30 | }
|
| ... | ... | @@ -11,7 +11,7 @@ main |
| 11 | 11 | = do { [libdir] <- getArgs
|
| 12 | 12 | ; runGhc (Just libdir) $ do
|
| 13 | 13 | flags <- getSessionDynFlags
|
| 14 | - setSessionDynFlags (flags{ backend = interpreterBackend, ghcLink = LinkInMemory})
|
|
| 14 | + setSessionDynFlags (flags{ backend = bytecodeBackend, ghcLink = LinkInMemory})
|
|
| 15 | 15 | target <- guessTarget "T8639_api_a.hs" Nothing Nothing
|
| 16 | 16 | setTargets [target]
|
| 17 | 17 | load LoadAllTargets
|
| ... | ... | @@ -37,7 +37,7 @@ main = do |
| 37 | 37 | prn "target nothing: ok"
|
| 38 | 38 | |
| 39 | 39 | dflags <- getSessionDynFlags
|
| 40 | - setSessionDynFlags $ dflags { backend = interpreterBackend }
|
|
| 40 | + setSessionDynFlags $ dflags { backend = bytecodeBackend }
|
|
| 41 | 41 | ok <- load LoadAllTargets
|
| 42 | 42 | when (failed ok) $ error "Couldn't load A.hs in interpreted mode"
|
| 43 | 43 | prn "target interpreted: ok"
|
| ... | ... | @@ -16,7 +16,7 @@ main = do |
| 16 | 16 | let dflags1 =
|
| 17 | 17 | dflags0
|
| 18 | 18 | { ghcMode = CompManager,
|
| 19 | - backend = interpreterBackend,
|
|
| 19 | + backend = bytecodeBackend,
|
|
| 20 | 20 | ghcLink = LinkInMemory
|
| 21 | 21 | }
|
| 22 | 22 | logger <- getLogger
|
| ... | ... | @@ -44,7 +44,7 @@ newGhcServer = do (libdir:_) <- getArgs |
| 44 | 44 | where ghc action libdir = GHC.runGhc (Just libdir) (init >> action)
|
| 45 | 45 | init = do df <- GHC.getSessionDynFlags
|
| 46 | 46 | GHC.setSessionDynFlags df{GHC.ghcMode = GHC.CompManager,
|
| 47 | - GHC.backend = GHC.interpreterBackend,
|
|
| 47 | + GHC.backend = GHC.bytecodeBackend,
|
|
| 48 | 48 | GHC.ghcLink = GHC.LinkInMemory,
|
| 49 | 49 | GHC.verbosity = 0}
|
| 50 | 50 |
| ... | ... | @@ -2,9 +2,8 @@ test('PackedDataCon', |
| 2 | 2 | [ extra_files(['Obj.hs', 'ByteCode.hs', 'Types.hs', 'Common.hs-incl']),
|
| 3 | 3 | req_interp,
|
| 4 | 4 | req_bco,
|
| 5 | - extra_ways(['ghci']),
|
|
| 6 | - when(config.have_ext_interp, extra_ways(['ghci', 'ghci-ext'])),
|
|
| 7 | - when(config.have_ext_interp and config.have_profiling, extra_ways(['ghci', 'ghci-ext', 'ghci-ext-prof']))
|
|
| 5 | + extra_ways(ghci_ways),
|
|
| 6 | + only_ways(ghci_ways),
|
|
| 8 | 7 | ],
|
| 9 | 8 | compile_and_run,
|
| 10 | 9 | ['']
|
| ... | ... | @@ -2,9 +2,8 @@ test('UnboxedTuples', |
| 2 | 2 | [ extra_files(['Obj.hs', 'ByteCode.hs', 'Common.hs-incl']),
|
| 3 | 3 | req_interp,
|
| 4 | 4 | req_bco,
|
| 5 | - extra_ways(['ghci']),
|
|
| 6 | - when(config.have_ext_interp, extra_ways(['ghci', 'ghci-ext'])),
|
|
| 7 | - when(config.have_ext_interp and config.have_profiling, extra_ways(['ghci', 'ghci-ext', 'ghci-ext-prof']))
|
|
| 5 | + only_ways(ghci_ways),
|
|
| 6 | + extra_ways(ghci_ways),
|
|
| 8 | 7 | ],
|
| 9 | 8 | compile_and_run,
|
| 10 | 9 | ['']
|
| ... | ... | @@ -2,9 +2,8 @@ test('UnliftedDataTypeInterp', |
| 2 | 2 | [ extra_files(['Obj.hs', 'ByteCode.hs', 'Types.hs', 'Common.hs-incl']),
|
| 3 | 3 | req_interp,
|
| 4 | 4 | req_bco,
|
| 5 | - extra_ways(['ghci']),
|
|
| 6 | - when(config.have_ext_interp, extra_ways(['ghci', 'ghci-ext'])),
|
|
| 7 | - when(config.have_ext_interp and config.have_profiling, extra_ways(['ghci', 'ghci-ext', 'ghci-ext-prof']))
|
|
| 5 | + only_ways(ghci_ways),
|
|
| 6 | + extra_ways(ghci_ways),
|
|
| 8 | 7 | ],
|
| 9 | 8 | compile_and_run,
|
| 10 | 9 | ['']
|