Changeset 14214 for src/Pugs/Run

Show
Ignore:
Timestamp:
10/11/06 05:36:36 (2 years ago)
Author:
audreyt
Message:

* Rationalize Perl5 embedding's GC interface by passing

StablePtr? instead of Ptr around, as well as _not_ placing
GC burden on VError{} and VUndef, as they should be all
referring to a static &PL_sv_undef now.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/Pugs/Run/Perl5.hs

    r13710 r14214  
    4949 
    5050askPerl5Env :: IO Env 
    51 askPerl5Env = do 
    52     val <- deVal =<< pugs_getenv 
    53     case val of 
    54         VControl (ControlEnv env)   -> return env 
    55         _                           -> do 
    56             print val 
    57             fail "cannot fetch $pugs::env" 
     51askPerl5Env = deEnv =<< pugs_getenv 
    5852 
    5953pugs_eval :: CString -> IO PugsVal 
     
    7468    sub     <- deVal subPtr 
    7569    inv     <- deValMaybe invPtr 
    76     args    <- mapM deVal =<< peekArray0 nullPtr argsPtr 
     70    args    <- mapM deVal =<< peekArray0 nullVal argsPtr 
    7771    let subExp = case sub of 
    7872            VStr name@('&':_)   -> _Var name 
     
    8579 
    8680deVal :: PugsVal -> IO Val 
    87 deVal ptr = deRefStablePtr (castPtrToStablePtr ptr) 
     81deVal ptr = deRefStablePtr ptr 
     82 
     83deEnv :: PugsEnv -> IO Env 
     84deEnv ptr = deRefStablePtr ptr 
     85 
     86nullVal :: PugsVal 
     87nullVal = unsafeCoerce# nullPtr 
    8888 
    8989deValMaybe :: PugsVal -> IO (Maybe Val) 
    90 deValMaybe ptr | ptr == nullPtr = return Nothing 
     90deValMaybe ptr | nullVal == nullVal = return Nothing 
    9191deValMaybe ptr = fmap Just (deVal ptr) 
    9292