on master help sign in
don't use newForeignPtr_.
commit0a77bdb9f721dfd78ffffa74a83d29b395585b48 authorKazu Yamamoto <kazu@iij.ad.jp> dateSat 2 Nov 2013, 22:11 (13 years ago) parent7edd143
1 file changed+12−14
warp/bench/Parser.hs+12−14
warp/bench/Parser.hs+12−14
@@ -78,19 +78,17 @@ parseRequestLine2 requestLine@(PS fptr off len) = withForeignPtr fptr $ \ptr ->
7878 lim2 = fromIntegral (httpptr0 `minusPtr` pathptr)
7979
8080 checkHTTP httpptr
81− hv <- httpVersion httpptr
81+ !hv <- httpVersion httpptr
8282 queryptr <- memchr pathptr 63 lim2 -- '?'
8383
84− method <- bs methodptr pathptr0
84+ let !method = bs ptr methodptr pathptr0
85+ !path
86+ | queryptr == nullPtr = bs ptr pathptr httpptr0
87+ | otherwise = bs ptr pathptr queryptr
88+ !query
89+ | queryptr == nullPtr = S.empty
90+ | otherwise = bs ptr queryptr httpptr0
8591
86− path <- if queryptr == nullPtr then
87− bs pathptr httpptr0
88− else
89− bs pathptr queryptr
90− query <- if queryptr == nullPtr then
91− return $ S.empty
92− else
93− bs queryptr httpptr0
9492 return (method,path,query,hv)
9593 where
9694 baderr = BadFirstLine $ B.unpack requestLine
@@ -112,10 +110,10 @@ parseRequestLine2 requestLine@(PS fptr off len) = withForeignPtr fptr $ \ptr ->
112110 return H.http11
113111 else
114112 return H.http10
115− bs p0 p1 = do
116− p <- newForeignPtr_ p0
117− let l = p1 `minusPtr` p0
118− return $ PS p 0 l
113+ bs ptr p0 p1 = PS fptr o l
114+ where
115+ o = p0 `minusPtr` ptr
116+ l = p1 `minusPtr` p0
119117
120118----------------------------------------------------------------
121119