diff --git a/compiler/Eta/Main/DynFlags.hs b/compiler/Eta/Main/DynFlags.hs index 5defb974..375b6428 100644 --- a/compiler/Eta/Main/DynFlags.hs +++ b/compiler/Eta/Main/DynFlags.hs @@ -3512,7 +3512,7 @@ optLevelFlags -- see Note [Documenting optimisation flags] , ([1,2], Opt_FloatIn) , ([1,2], Opt_FullLaziness) , ([1,2], Opt_IgnoreAsserts) - , ([1,2], Opt_Loopification) + , ([0,1,2], Opt_Loopification) -- always to avoid SOE on JVM (#866) , ([1,2], Opt_Specialise) , ([1,2], Opt_Strictness) , ([1,2], Opt_UnboxSmallStrictFields) diff --git a/compiler/Eta/Prelude/PrimOp.hs b/compiler/Eta/Prelude/PrimOp.hs index edfa9caf..4c446b59 100644 --- a/compiler/Eta/Prelude/PrimOp.hs +++ b/compiler/Eta/Prelude/PrimOp.hs @@ -4877,6 +4877,13 @@ primOpHasSideEffects WriteJFloatArrayOp = True primOpHasSideEffects NewJDoubleArrayOp = True primOpHasSideEffects ReadJDoubleArrayOp = True primOpHasSideEffects WriteJDoubleArrayOp = True +-- Start +-- These don't technically do any side effects since they either return one of the args, or +-- a new Object, but will be treated as such to avoid speculation in the optimizer. +primOpHasSideEffects FreshStateTokenOp = True +primOpHasSideEffects FreshObjectTokenOp = True +primOpHasSideEffects FreshNullObjectTokenOp = True +-- End primOpHasSideEffects _ = False primOpCanFail :: PrimOp -> Bool diff --git a/compiler/Eta/StrAnal/DmdAnal.hs b/compiler/Eta/StrAnal/DmdAnal.hs index 0dbd7375..6f8b14b3 100644 --- a/compiler/Eta/StrAnal/DmdAnal.hs +++ b/compiler/Eta/StrAnal/DmdAnal.hs @@ -32,7 +32,7 @@ import Eta.Types.FamInstEnv import Eta.Utils.Util import Eta.Utils.Maybes ( isJust ) import Eta.Prelude.TysWiredIn -import Eta.Prelude.TysPrim ( realWorldStatePrimTy ) +import Eta.Prelude.TysPrim ( realWorldStatePrimTy, jobjectPrimTyCon ) import Eta.Main.ErrUtils ( dumpIfSet_dyn ) import Eta.BasicTypes.Name ( getName, stableNameCmp ) import Data.Function ( on ) @@ -343,7 +343,9 @@ io_hack_reqd :: CoreExpr -> DataCon -> [Var] -> Bool io_hack_reqd scrut con bndrs | (bndr:_) <- bndrs , con == tupleCon UnboxedTuple 2 - , idType bndr `eqType` realWorldStatePrimTy + , let bndrType = idType bndr + , bndrType `eqType` realWorldStatePrimTy || + maybe False (\(tc,_) -> tc == jobjectPrimTyCon) (splitTyConApp_maybe bndrType) , (fun, _) <- collectArgs scrut = case fun of Var f -> not (isPrimOpId f) diff --git a/eta-serv/eta-serv.cabal b/eta-serv/eta-serv.cabal index b39c4693..818c2438 100644 --- a/eta-serv/eta-serv.cabal +++ b/eta-serv/eta-serv.cabal @@ -1,7 +1,7 @@ name: eta-serv -- @VERSION_CHANGE@ -- @BUILD_NUMBER@ -version: 0.8.6.2 +version: 0.8.6.3 license: BSD3 license-file: LICENSE maintainer: typeleadhq@gmail.com diff --git a/eta.cabal b/eta.cabal index b5aa76d4..5de08319 100644 --- a/eta.cabal +++ b/eta.cabal @@ -1,7 +1,7 @@ name: eta -- @VERSION_CHANGE@ -- @BUILD_NUMBER@ -version: 0.8.6.2 +version: 0.8.6.3 description: Modern Haskell on the JVM license: BSD3 license-file: LICENSE diff --git a/libraries/eta-meta/eta-meta.cabal b/libraries/eta-meta/eta-meta.cabal index 07b21779..c05301ed 100644 --- a/libraries/eta-meta/eta-meta.cabal +++ b/libraries/eta-meta/eta-meta.cabal @@ -1,5 +1,5 @@ name: eta-meta -version: 0.8.6.2 +version: 0.8.6.3 license: BSD3 license-file: LICENSE category: Metaprogamming diff --git a/libraries/eta-repl/eta-repl.cabal b/libraries/eta-repl/eta-repl.cabal index 19e4d0cc..9ab525a5 100644 --- a/libraries/eta-repl/eta-repl.cabal +++ b/libraries/eta-repl/eta-repl.cabal @@ -1,7 +1,7 @@ name: eta-repl -- @VERSION_CHANGE@ -- @BUILD_NUMBER@ -version: 0.8.6.2 +version: 0.8.6.3 license: BSD3 license-file: LICENSE category: Eta Tools diff --git a/rts/src/main/java/eta/runtime/exception/RuntimeInternalError.java b/rts/src/main/java/eta/runtime/exception/RuntimeInternalError.java index c2e4e265..b1d61647 100644 --- a/rts/src/main/java/eta/runtime/exception/RuntimeInternalError.java +++ b/rts/src/main/java/eta/runtime/exception/RuntimeInternalError.java @@ -3,9 +3,6 @@ public class RuntimeInternalError extends Error { public RuntimeInternalError(String message) { - // @VERSION_CHANGE@ - // @BUILD_NUMBER@ - // @BUILD_NUMBER_INTERNAL@ - super("\n[Eta v0.8.6b2] " + message + "\nPlease report this as a bug: https://github.com/typelead/eta/issues"); + super("\n[Eta Panic] " + message + "\nPlease report this as a bug: https://github.com/typelead/eta/issues"); } } diff --git a/tests/suite/Driver.hs b/tests/suite/Driver.hs index d1049391..fbf1c6f3 100644 --- a/tests/suite/Driver.hs +++ b/tests/suite/Driver.hs @@ -291,7 +291,7 @@ goldenVsFileDiff' name cmdf ref new act = upd _ = BS.readFile new >>= BS.writeFile ref ignored :: Set String -ignored = S.fromList ["Echo", "FullExportTest", "tc141", "tc168", "tc211", +ignored = S.fromList ["Echo", "tc141", "tc168", "tc211", "T14163", "T4912", "T6018", "T7541", "InstanceMethod", "TcTypeNatSimple", "TcTypeSymbolSimple", "tcfail150", "tcfail205", "annrun01", "TH_overloadedlabels"] diff --git a/tests/suite/ffi/run/FullExportTest.stdout b/tests/suite/ffi/run/FullExportTest.stdout index 94811026..fc1fbb90 100644 --- a/tests/suite/ffi/run/FullExportTest.stdout +++ b/tests/suite/ffi/run/FullExportTest.stdout @@ -1 +1,8 @@ -ExitFailure 1Error: Could not find or load main class eta.main +89 +89 +144 +144 +233 +233 +377 +377 diff --git a/utils/eta-pkg/eta-pkg.cabal b/utils/eta-pkg/eta-pkg.cabal index 7189f0cc..c42ee490 100644 --- a/utils/eta-pkg/eta-pkg.cabal +++ b/utils/eta-pkg/eta-pkg.cabal @@ -2,7 +2,7 @@ name: eta-pkg -- @VERSION_CHANGE@ -- @BUILD_NUMBER@ -- @BUILD_NUMBER_INTERNAL@ -version: 0.8.6.2 +version: 0.8.6.3 copyright: XXX license: BSD3 -- XXX License-File: LICENSE