Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Glasgow Haskell Compiler
GHC
Commits
1abc2c7a
Commit
1abc2c7a
authored
Dec 06, 2001
by
simonmar
Browse files
[project @ 2001-12-06 14:33:02 by simonmar]
- Fix THUNK_SELECTOR printing code - change some more stderrs into stdouts
parent
5fdd7ebe
Changes
1
Hide whitespace changes
Inline
Side-by-side
ghc/rts/Printer.c
View file @
1abc2c7a
/* -----------------------------------------------------------------------------
* $Id: Printer.c,v 1.
49
2001/1
1/28 15:43:23
simonmar Exp $
* $Id: Printer.c,v 1.
50
2001/1
2/06 14:33:02
simonmar Exp $
*
* (c) The GHC Team, 1994-2000.
*
...
...
@@ -65,15 +65,25 @@ void printObj( StgClosure *obj )
printClosure
(
obj
);
}
static
void
printStdObject
(
StgClosure
*
obj
,
char
*
tag
)
static
inline
void
printStdObjHdr
(
StgClosure
*
obj
,
char
*
tag
)
{
StgWord
i
,
j
;
const
StgInfoTable
*
info
=
get_itbl
(
obj
);
fprintf
(
stdout
,
"%s("
,
tag
);
printPtr
((
StgPtr
)
obj
->
header
.
info
);
#ifdef PROFILING
fprintf
(
stdout
,
", %s"
,
obj
->
header
.
prof
.
ccs
->
cc
->
label
);
#endif
}
static
void
printStdObject
(
StgClosure
*
obj
,
char
*
tag
)
{
StgWord
i
,
j
;
const
StgInfoTable
*
info
;
printStdObjHdr
(
obj
,
tag
);
info
=
get_itbl
(
obj
);
for
(
i
=
0
;
i
<
info
->
layout
.
payload
.
ptrs
;
++
i
)
{
fprintf
(
stdout
,
", "
);
printPtr
((
StgPtr
)
obj
->
payload
[
i
]);
...
...
@@ -84,7 +94,8 @@ static void printStdObject( StgClosure *obj, char* tag )
fprintf
(
stdout
,
")
\n
"
);
}
void
printClosure
(
StgClosure
*
obj
)
void
printClosure
(
StgClosure
*
obj
)
{
StgInfoTable
*
info
;
...
...
@@ -100,7 +111,7 @@ void printClosure( StgClosure *obj )
case
MUT_VAR
:
{
StgMutVar
*
mv
=
(
StgMutVar
*
)
obj
;
fprintf
(
std
err
,
"MUT_VAR(var=%p, link=%p)
\n
"
,
mv
->
var
,
mv
->
mut_link
);
fprintf
(
std
out
,
"MUT_VAR(var=%p, link=%p)
\n
"
,
mv
->
var
,
mv
->
mut_link
);
break
;
}
...
...
@@ -131,9 +142,9 @@ void printClosure( StgClosure *obj )
}
case
FOREIGN
:
fprintf
(
std
err
,
"FOREIGN("
);
fprintf
(
std
out
,
"FOREIGN("
);
printPtr
((
StgPtr
)(
((
StgForeignObj
*
)
obj
)
->
data
));
fprintf
(
std
err
,
")
\n
"
);
fprintf
(
std
out
,
")
\n
"
);
break
;
case
IND
:
...
...
@@ -290,8 +301,9 @@ void printClosure( StgClosure *obj )
break
;
case
THUNK_SELECTOR
:
printStdObject
(
obj
,
"THUNK_SELECTOR"
);
break
;
printStdObjHdr
(
obj
,
"THUNK_SELECTOR"
);
fprintf
(
stdout
,
", %p)
\n
"
,
((
StgSelector
*
)
obj
)
->
selectee
);
break
;
case
ARR_WORDS
:
{
...
...
@@ -302,8 +314,8 @@ void printClosure( StgClosure *obj )
putchar(arrWordsGetChar(obj,i));
} */
for
(
i
=
0
;
i
<
((
StgArrWords
*
)
obj
)
->
words
;
i
++
)
fprintf
(
std
err
,
"%ld"
,
((
StgArrWords
*
)
obj
)
->
payload
[
i
]);
fprintf
(
std
err
,
"
\"
)
\n
"
);
fprintf
(
std
out
,
"%ld"
,
((
StgArrWords
*
)
obj
)
->
payload
[
i
]);
fprintf
(
std
out
,
"
\"
)
\n
"
);
break
;
}
...
...
@@ -458,12 +470,12 @@ void printStackChunk( StgPtr sp, StgPtr spBottom )
sp
++
;
small_bitmap:
while
(
bitmap
!=
0
)
{
fprintf
(
std
err
,
" stk[%ld] (%p) = "
,
spBottom
-
sp
,
sp
);
fprintf
(
std
out
,
" stk[%ld] (%p) = "
,
spBottom
-
sp
,
sp
);
if
((
bitmap
&
1
)
==
0
)
{
printPtr
((
P_
)
*
sp
);
fprintf
(
stdout
,
"
\n
"
);
}
else
{
fprintf
(
std
err
,
"Word# %ld
\n
"
,
*
sp
);
fprintf
(
std
out
,
"Word# %ld
\n
"
,
*
sp
);
}
sp
++
;
bitmap
=
bitmap
>>
1
;
...
...
@@ -478,7 +490,7 @@ void printStackChunk( StgPtr sp, StgPtr spBottom )
break
;
}
}
fprintf
(
std
err
,
"Stack[%ld] (%p) = "
,
spBottom
-
sp
,
sp
);
fprintf
(
std
out
,
"Stack[%ld] (%p) = "
,
spBottom
-
sp
,
sp
);
sp
=
printStackObj
(
sp
);
}
}
...
...
@@ -965,7 +977,9 @@ findPtr(P_ p, int follow)
if
(
*
q
==
(
W_
)
p
)
{
if
(
i
<
arr_size
)
{
r
=
q
;
while
(
!
LOOKS_LIKE_GHC_INFO
(
*
r
))
{
r
--
;
};
while
(
!
LOOKS_LIKE_GHC_INFO
(
*
r
)
||
*
r
==
NULL
)
{
r
--
;
}
fprintf
(
stdout
,
"%p = "
,
r
);
printClosure
((
StgClosure
*
)
r
);
arr
[
i
++
]
=
r
;
...
...
Write
Preview
Supports
Markdown
0%
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!
Cancel
Please
register
or
sign in
to comment