Changeset 2300 for src/Pugs/External.hs

Show
Ignore:
Timestamp:
04/24/05 18:58:13 (4 years ago)
Author:
autrijus
svk:copy_cache_prev:
3669
Message:

* New, much much faster implementation type for Pad:

type Pad = Map Var [IORef VRef]

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/Pugs/External.hs

    r2258 r2300  
    1313import Pugs.Internals 
    1414import Pugs.AST 
    15 import Pugs.Types 
    1615import Pugs.External.Haskell (externalizeHaskell, loadHaskell) 
    1716 
     
    3837    liftIO $ do 
    3938        bindings    <- externLoad lang name 
    40         newSyms     <- mapM gensym bindings 
    41         modifyIORef glob (newSyms ++) 
     39        newSyms     <- mapM gen bindings 
     40        modifyIORef glob (\pad -> combine newSyms pad) 
    4241    where 
    43     gensym (name, fun) = genSym ('&':name) . codeRef $ MkCode 
    44         { isMulti       = True 
    45         , subName       = ('&':name) 
    46         , subPad        = [] 
    47         , subType       = SubPrim 
    48         , subAssoc      = "pre" 
     42    gen (name, fun) = genSym ('&':name) . codeRef $ mkPrim 
     43        { subName       = ('&':name) 
    4944        , subParams     = [buildParam "List" "" "*@?1" (Val VUndef)] 
    50         , subBindings   = [] 
    51         , subReturns    = anyType 
    52         , subSlurpLimit = [] 
    5345        , subFun        = (Prim fun) 
    5446        }