Changeset 5167

Show
Ignore:
Timestamp:
07/04/05 00:34:05 (4 years ago)
Author:
autrijus
svk:copy_cache_prev:
6965
Message:

* AST.Internals, CodeGen?.PIR - deal with the fallout of

not deriving from Read. also introduce newHash for incHV.

Location:
src/Pugs
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • src/Pugs/AST/Internals.hs

    r5121 r5167  
    5252    ifListContext, ifValTypeIsa, evalValType, fromVal', 
    5353    scalarRef, codeRef, arrayRef, hashRef, thunkRef, pairRef, 
    54     newScalar, newArray, newHandle, newObject, 
     54    newScalar, newArray, newHash, newHandle, newObject, 
    5555    proxyScalar, constScalar, lazyScalar, lazyUndef, constArray, 
    5656    retError, retControl, retEmpty, retIVar, readIVar, writeIVar, 
     
    15621562    return $ IArray av 
    15631563 
     1564newHash :: (MonadSTM m) => VHash -> m (IVar VHash) 
     1565newHash hash = do 
     1566    ihash <- liftSTM (newTVar $ Map.map lazyScalar hash) 
     1567    return $ IHash ihash 
     1568 
    15641569newHandle :: (MonadSTM m) => VHandle -> m (IVar VHandle) 
    15651570newHandle = return . IHandle 
  • src/Pugs/CodeGen/PIR.hs

    r4972 r5167  
    1818import Pugs.AST 
    1919import Pugs.AST.Internals 
     20import Pugs.Eval.Var 
    2021import Emit.Common 
    2122import Emit.PIR 
     
    311312    let var = render $ varText name 
    312313    tellIns $ InsLocal RegPMC var 
    313     tellIns $ InsNew (VAR var) (read $ render $ varInit name) 
     314    tellIns $ InsNew (VAR var) (varInit name) 
    314315    return $ reg (VAR var) 
    315316 
    316 varInit :: String -> Doc 
    317 varInit ('$':_) = text $ "PerlScalar" 
    318 varInit ('@':_) = text $ "PerlArray" 
    319 varInit ('%':_) = text $ "PerlHash" 
    320 varInit ('&':_) = text $ "PerlScalar" 
    321 varInit x       = error $ "invalid name: " ++ x 
     317varInit :: String -> ObjType 
     318varInit ('$':_) = PerlScalar 
     319varInit ('@':_) = PerlArray 
     320varInit ('%':_) = PerlHash 
     321varInit ('&':_) = PerlScalar 
     322varInit x       = internalError $ "Invalid name: " ++ x 
    322323 
    323324{-| Compiles the current environment to PIR code. -}