Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
GHC
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Terraform modules
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Gesh
GHC
Commits
ff99f2d3
Commit
ff99f2d3
authored
25 years ago
by
sof
Browse files
Options
Downloads
Patches
Plain Diff
[project @ 1999-10-22 08:40:25 by sof]
Dotted the i's
parent
da3c4b44
Loading
Loading
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
ghc/lib/std/CPUTime.lhs
+11
-10
11 additions, 10 deletions
ghc/lib/std/CPUTime.lhs
ghc/lib/std/System.lhs
+8
-9
8 additions, 9 deletions
ghc/lib/std/System.lhs
with
19 additions
and
19 deletions
ghc/lib/std/CPUTime.lhs
+
11
−
10
View file @
ff99f2d3
...
...
@@ -40,10 +40,13 @@ integral number of picoseconds.
\begin{code}
#ifdef __HUGS__
sizeof_int :: Int
sizeof_int = 4
getCPUTime :: IO Integer
getCPUTime = do
marr <- primNewByteArray (sizeof_int * 4)
rc <-
g
etCPUTime marr
rc <-
primG
etCPUTime marr
if rc /= 0 then do
x0 <- primReadIntArray marr 0
x1 <- primReadIntArray marr 1
...
...
@@ -60,20 +63,21 @@ getCPUTime = do
#else
getCPUTime :: IO Integer
getCPUTime =
stToIO (newIntArray ((0::Int),3))
>>= \ marr ->
stToIO (unsafeFreezeByteArray marr)
>>= \ barr@(ByteArray _ _ frozen#) ->
primGetCPUTime barr
>>= \ rc ->
getCPUTime =
do
marr <-
stToIO (newIntArray ((0::Int),3))
barr <-
stToIO (unsafeFreezeByteArray marr)
rc <-
primGetCPUTime barr
if rc /= 0 then
case barr of
ByteArray _ _ frozen# -> -- avoid bounds checking
return ((fromIntegral (I# (indexIntArray# frozen# 0#)) * 1000000000 +
fromIntegral (I# (indexIntArray# frozen# 1#)) +
fromIntegral (I# (indexIntArray# frozen# 2#)) * 1000000000 +
fromIntegral (I# (indexIntArray# frozen# 3#))) * 1000)
else
else
ioError (IOError Nothing UnsupportedOperation
"getCPUTime"
"can't get CPU time")
#endif
cpuTimePrecision :: Integer
...
...
@@ -82,9 +86,6 @@ cpuTimePrecision = round ((1000000000000::Integer) %
\end{code}
\begin{code}
sizeof_int :: Int
sizeof_int = 4
foreign import "libHS_cbits" "getCPUTime" unsafe primGetCPUTime :: ByteArray Int -> IO Int
foreign import "libHS_cbits" "clockTicks" clockTicks :: IO Int
...
...
This diff is collapsed.
Click to expand it.
ghc/lib/std/System.lhs
+
8
−
9
View file @
ff99f2d3
...
...
@@ -159,18 +159,17 @@ exitFailure = exitWith (ExitFailure 1)
type CHAR_STAR_STAR = Addr -- this is all a HACK
type CHAR_STAR = Addr
unpackArgv :: CHAR_STAR_STAR -> Int -> [String] -- argv[1 .. argc-1]
unpackProgName :: CHAR_STAR_STAR -> String -- argv[0]
unpackArgv :: CHAR_STAR_STAR -> Int -> [String] -- argv[1 .. argc-1]
unpackArgv argv argc = unpack 1
where
unpack :: Int -> [String]
unpack n
= if (
n >= argc
)
then ([] :: [String])
else
case (indexAddrOffAddr argv n) of
{ item ->
unpackCString item : unpack (n + 1)
}
unpack :: Int -> [String]
unpack n
|
n >= argc
= []
| otherwise =
case (indexAddrOffAddr argv n) of
item ->
unpackCString item : unpack (n + 1)
unpackProgName :: CHAR_STAR_STAR -> String -- argv[0]
unpackProgName argv
= case (indexAddrOffAddr argv 0) of { prog ->
de_slash [] (unpackCString prog) }
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment