Changeset 15296 for src/Pugs/Run

Show
Ignore:
Timestamp:
02/18/07 15:56:10 (21 months ago)
Author:
audreyt
Message:

* Convert VStr from String to ByteString?, and Syn from

String to ID, in Pugs. Benchmark shows the perf gain is 5%,
so it's not worth the trouble of writing a GHC 6.7-compatible
processor. The next commit will revert this commit.

Files:
1 modified

Legend:

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

    r14248 r15296  
    1414import Foreign.C.String 
    1515import Foreign.Marshal.Array 
     16import qualified Data.ByteString.Char8 as Str 
    1617 
    1718foreign export ccall "pugs_Eval" 
     
    7071    args    <- mapM deVal =<< peekArray0 nullVal argsPtr 
    7172    let subExp = case sub of 
    72             VStr name@('&':_)   -> _Var name 
    73             VStr name           -> _Var ('&':name) 
     73            VStr str -> case cast str of 
     74                name@('&':_)    -> _Var name 
     75                name            -> _Var ('&':name) 
    7476            _                   -> Val sub 
    7577    -- warn "Applying:" (subExp, inv, args, envLexical env) 
     
    118120    env     <- askPerl5Env 
    119121    VStr x  <- runEvalIO env $ fmap VInt (fromVal val) 
    120     newCString x 
     122    newCString (cast x) 
    121123 
    122124mkSvRef :: PerlSV -> IO PugsVal 
     
    132134pvnToVal cstr len = do 
    133135    str <- peekCStringLen (cstr, fromEnum len) 
    134     ptr <- mkVal $ VStr (decodeUTF8 str) 
     136    ptr <- mkVal $ _VStr (decodeUTF8 str) 
    135137    return ptr 
    136138