Changeset 14060

Show
Ignore:
Timestamp:
10/08/06 12:38:04 (2 years ago)
Author:
audreyt
Message:

* Speed up evalVal for a marginal (<2%) win.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/Pugs/Monads.hs

    r14015 r14060  
    300300 
    301301evalVal :: Val -> Eval Val 
    302 evalVal val = do 
     302evalVal val@(VRef ref) = do 
    303303    lv  <- asks envLValue 
    304     cls <- asks envClasses 
    305     typ <- evalValType val 
    306     if lv then return val else do 
    307     case val of 
    308         VRef ref | refType ref == mkType "Scalar::Const" -> do 
    309             evalVal =<< readRef ref 
    310         VRef ref | isaType cls "Junction" typ -> do 
    311             evalVal =<< readRef ref 
    312         _ -> do 
    313             return val 
     304    if lv 
     305        then return val 
     306        else if refType ref == mkType "Scalar::Const" 
     307            then evalVal =<< readRef ref 
     308            else do 
     309                cls <- asks envClasses 
     310                typ <- evalValType val 
     311                if isaType cls "Junction" typ 
     312                    then evalVal =<< readRef ref 
     313                    else return val 
     314evalVal val = return val 
    314315 
    315316tempVar :: Var -> Val -> Eval a -> Eval a