Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
cmucl
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
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
Carl Shapiro
cmucl
Commits
9300f5d7
Commit
9300f5d7
authored
34 years ago
by
ch
Browse files
Options
Downloads
Patches
Plain Diff
Added code to handle transporting EQ hash tables.
parent
8cbc0df2
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
ldb/gc.c
+48
-39
48 additions, 39 deletions
ldb/gc.c
ldb/gc.h
+1
-4
1 addition, 4 deletions
ldb/gc.h
with
49 additions
and
43 deletions
ldb/gc.c
+
48
−
39
View file @
9300f5d7
/*
/*
* Stop and Copy GC based on Cheney's algorithm.
* Stop and Copy GC based on Cheney's algorithm.
*
*
* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/ldb/Attic/gc.c,v 1.
4
1990/05/1
0
1
7:29:15
ch Exp $
* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/ldb/Attic/gc.c,v 1.
5
1990/05/1
3
1
5:30:39
ch Exp $
*
*
* Written by Christopher Hoover.
* Written by Christopher Hoover.
*/
*/
...
@@ -38,7 +38,7 @@ lispobj object;
...
@@ -38,7 +38,7 @@ lispobj object;
{
{
lispobj
*
ptr
;
lispobj
*
ptr
;
gc_assert
(
p
ointerp
(
object
));
gc_assert
(
P
ointerp
(
object
));
ptr
=
(
lispobj
*
)
PTR
(
object
);
ptr
=
(
lispobj
*
)
PTR
(
object
);
...
@@ -51,7 +51,7 @@ lispobj object;
...
@@ -51,7 +51,7 @@ lispobj object;
{
{
lispobj
*
ptr
;
lispobj
*
ptr
;
gc_assert
(
p
ointerp
(
object
));
gc_assert
(
P
ointerp
(
object
));
ptr
=
(
lispobj
*
)
PTR
(
object
);
ptr
=
(
lispobj
*
)
PTR
(
object
);
...
@@ -92,7 +92,7 @@ int nwords;
...
@@ -92,7 +92,7 @@ int nwords;
lispobj
*
new
;
lispobj
*
new
;
lispobj
*
source
,
*
dest
;
lispobj
*
source
,
*
dest
;
gc_assert
(
p
ointerp
(
object
));
gc_assert
(
P
ointerp
(
object
));
gc_assert
(
from_space_p
(
object
));
gc_assert
(
from_space_p
(
object
));
gc_assert
((
nwords
&
0x01
)
==
0
);
gc_assert
((
nwords
&
0x01
)
==
0
);
...
@@ -416,7 +416,7 @@ lispobj *from_space, *from_space_free_pointer;
...
@@ -416,7 +416,7 @@ lispobj *from_space, *from_space_free_pointer;
lispobj
header
;
lispobj
header
;
object
=
*
start
;
object
=
*
start
;
forwardp
=
p
ointerp
(
object
)
&&
new_space_p
(
object
);
forwardp
=
P
ointerp
(
object
)
&&
new_space_p
(
object
);
if
(
forwardp
)
{
if
(
forwardp
)
{
int
tag
;
int
tag
;
...
@@ -464,7 +464,7 @@ static
...
@@ -464,7 +464,7 @@ static
scav_function_pointer
(
where
,
object
)
scav_function_pointer
(
where
,
object
)
lispobj
*
where
,
object
;
lispobj
*
where
,
object
;
{
{
gc_assert
(
p
ointerp
(
object
));
gc_assert
(
P
ointerp
(
object
));
if
(
from_space_p
(
object
))
{
if
(
from_space_p
(
object
))
{
lispobj
first
,
*
first_pointer
;
lispobj
first
,
*
first_pointer
;
...
@@ -474,7 +474,7 @@ lispobj *where, object;
...
@@ -474,7 +474,7 @@ lispobj *where, object;
first_pointer
=
(
lispobj
*
)
PTR
(
object
);
first_pointer
=
(
lispobj
*
)
PTR
(
object
);
first
=
*
first_pointer
;
first
=
*
first_pointer
;
if
(
!
(
p
ointerp
(
first
)
&&
new_space_p
(
first
)))
{
if
(
!
(
P
ointerp
(
first
)
&&
new_space_p
(
first
)))
{
int
type
;
int
type
;
/* must transport object -- object may point */
/* must transport object -- object may point */
...
@@ -494,7 +494,7 @@ lispobj *where, object;
...
@@ -494,7 +494,7 @@ lispobj *where, object;
}
}
}
}
gc_assert
(
p
ointerp
(
first
));
gc_assert
(
P
ointerp
(
first
));
gc_assert
(
!
from_space_p
(
first
));
gc_assert
(
!
from_space_p
(
first
));
*
where
=
first
;
*
where
=
first
;
...
@@ -519,7 +519,7 @@ struct code *code;
...
@@ -519,7 +519,7 @@ struct code *code;
/* if object has already been transported, just return pointer */
/* if object has already been transported, just return pointer */
first
=
code
->
header
;
first
=
code
->
header
;
if
(
p
ointerp
(
first
)
&&
new_space_p
(
first
))
if
(
P
ointerp
(
first
)
&&
new_space_p
(
first
))
return
(
struct
code
*
)
PTR
(
first
);
return
(
struct
code
*
)
PTR
(
first
);
gc_assert
(
TypeOf
(
first
)
==
type_CodeHeader
);
gc_assert
(
TypeOf
(
first
)
==
type_CodeHeader
);
...
@@ -528,7 +528,7 @@ struct code *code;
...
@@ -528,7 +528,7 @@ struct code *code;
l_code
=
(
lispobj
)
code
|
type_OtherPointer
;
l_code
=
(
lispobj
)
code
|
type_OtherPointer
;
ncode_words
=
FIXNUM_TO_INT
(
code
->
code_size
);
ncode_words
=
FIXNUM_TO_INT
(
code
->
code_size
);
nheader_words
=
H
EADER_VALUE
(
code
->
header
);
nheader_words
=
H
eaderValue
(
code
->
header
);
nwords
=
ncode_words
+
nheader_words
;
nwords
=
ncode_words
+
nheader_words
;
nwords
=
CEILING
(
nwords
,
2
);
nwords
=
CEILING
(
nwords
,
2
);
...
@@ -591,7 +591,7 @@ lispobj *where, object;
...
@@ -591,7 +591,7 @@ lispobj *where, object;
code
=
(
struct
code
*
)
where
;
code
=
(
struct
code
*
)
where
;
ncode_words
=
FIXNUM_TO_INT
(
code
->
code_size
);
ncode_words
=
FIXNUM_TO_INT
(
code
->
code_size
);
nheader_words
=
H
EADER_VALUE
(
object
);
nheader_words
=
H
eaderValue
(
object
);
nwords
=
ncode_words
+
nheader_words
;
nwords
=
ncode_words
+
nheader_words
;
nwords
=
CEILING
(
nwords
,
2
);
nwords
=
CEILING
(
nwords
,
2
);
...
@@ -650,7 +650,7 @@ lispobj *where;
...
@@ -650,7 +650,7 @@ lispobj *where;
code
=
(
struct
code
*
)
where
;
code
=
(
struct
code
*
)
where
;
ncode_words
=
FIXNUM_TO_INT
(
code
->
code_size
);
ncode_words
=
FIXNUM_TO_INT
(
code
->
code_size
);
nheader_words
=
H
EADER_VALUE
(
code
->
header
);
nheader_words
=
H
eaderValue
(
code
->
header
);
nwords
=
ncode_words
+
nheader_words
;
nwords
=
ncode_words
+
nheader_words
;
nwords
=
CEILING
(
nwords
,
2
);
nwords
=
CEILING
(
nwords
,
2
);
...
@@ -678,7 +678,7 @@ lispobj object;
...
@@ -678,7 +678,7 @@ lispobj object;
struct
code
*
code
,
*
ncode
;
struct
code
*
code
,
*
ncode
;
return_pc
=
(
struct
function_header
*
)
PTR
(
object
);
return_pc
=
(
struct
function_header
*
)
PTR
(
object
);
offset
=
H
EADER_VALUE
(
return_pc
->
header
)
*
4
;
offset
=
H
eaderValue
(
return_pc
->
header
)
*
4
;
/* Transport the whole code object */
/* Transport the whole code object */
code
=
(
struct
code
*
)
((
unsigned
long
)
return_pc
-
offset
);
code
=
(
struct
code
*
)
((
unsigned
long
)
return_pc
-
offset
);
...
@@ -708,7 +708,7 @@ lispobj object;
...
@@ -708,7 +708,7 @@ lispobj object;
struct
code
*
code
,
*
ncode
;
struct
code
*
code
,
*
ncode
;
fheader
=
(
struct
function_header
*
)
PTR
(
object
);
fheader
=
(
struct
function_header
*
)
PTR
(
object
);
offset
=
H
EADER_VALUE
(
fheader
->
header
)
*
4
;
offset
=
H
eaderValue
(
fheader
->
header
)
*
4
;
/* Transport the whole code object */
/* Transport the whole code object */
code
=
(
struct
code
*
)
((
unsigned
long
)
fheader
-
offset
);
code
=
(
struct
code
*
)
((
unsigned
long
)
fheader
-
offset
);
...
@@ -738,7 +738,7 @@ lispobj object;
...
@@ -738,7 +738,7 @@ lispobj object;
struct
code
*
code
,
*
ncode
;
struct
code
*
code
,
*
ncode
;
fheader
=
(
struct
function_header
*
)
PTR
(
object
);
fheader
=
(
struct
function_header
*
)
PTR
(
object
);
offset
=
H
EADER_VALUE
(
fheader
->
header
)
*
4
;
offset
=
H
eaderValue
(
fheader
->
header
)
*
4
;
/* Transport the whole code object */
/* Transport the whole code object */
code
=
(
struct
code
*
)
((
unsigned
long
)
fheader
-
offset
);
code
=
(
struct
code
*
)
((
unsigned
long
)
fheader
-
offset
);
...
@@ -772,7 +772,7 @@ static
...
@@ -772,7 +772,7 @@ static
scav_list_pointer
(
where
,
object
)
scav_list_pointer
(
where
,
object
)
lispobj
*
where
,
object
;
lispobj
*
where
,
object
;
{
{
gc_assert
(
p
ointerp
(
object
));
gc_assert
(
P
ointerp
(
object
));
if
(
from_space_p
(
object
))
{
if
(
from_space_p
(
object
))
{
lispobj
first
,
*
first_pointer
;
lispobj
first
,
*
first_pointer
;
...
@@ -782,10 +782,10 @@ lispobj *where, object;
...
@@ -782,10 +782,10 @@ lispobj *where, object;
first_pointer
=
(
lispobj
*
)
PTR
(
object
);
first_pointer
=
(
lispobj
*
)
PTR
(
object
);
first
=
*
first_pointer
;
first
=
*
first_pointer
;
if
(
!
(
p
ointerp
(
first
)
&&
new_space_p
(
first
)))
if
(
!
(
P
ointerp
(
first
)
&&
new_space_p
(
first
)))
first
=
*
first_pointer
=
trans_list
(
object
);
first
=
*
first_pointer
=
trans_list
(
object
);
gc_assert
(
p
ointerp
(
first
));
gc_assert
(
P
ointerp
(
first
));
gc_assert
(
!
from_space_p
(
first
));
gc_assert
(
!
from_space_p
(
first
));
*
where
=
first
;
*
where
=
first
;
...
@@ -849,7 +849,7 @@ static
...
@@ -849,7 +849,7 @@ static
scav_other_pointer
(
where
,
object
)
scav_other_pointer
(
where
,
object
)
lispobj
*
where
,
object
;
lispobj
*
where
,
object
;
{
{
gc_assert
(
p
ointerp
(
object
));
gc_assert
(
P
ointerp
(
object
));
if
(
from_space_p
(
object
))
{
if
(
from_space_p
(
object
))
{
lispobj
first
,
*
first_pointer
;
lispobj
first
,
*
first_pointer
;
...
@@ -859,11 +859,11 @@ lispobj *where, object;
...
@@ -859,11 +859,11 @@ lispobj *where, object;
first_pointer
=
(
lispobj
*
)
PTR
(
object
);
first_pointer
=
(
lispobj
*
)
PTR
(
object
);
first
=
*
first_pointer
;
first
=
*
first_pointer
;
if
(
!
(
p
ointerp
(
first
)
&&
new_space_p
(
first
)))
if
(
!
(
P
ointerp
(
first
)
&&
new_space_p
(
first
)))
first
=
*
first_pointer
=
first
=
*
first_pointer
=
(
transother
[
TypeOf
(
first
)])(
object
);
(
transother
[
TypeOf
(
first
)])(
object
);
gc_assert
(
p
ointerp
(
first
));
gc_assert
(
P
ointerp
(
first
));
gc_assert
(
!
from_space_p
(
first
));
gc_assert
(
!
from_space_p
(
first
));
*
where
=
first
;
*
where
=
first
;
...
@@ -919,10 +919,10 @@ lispobj object;
...
@@ -919,10 +919,10 @@ lispobj object;
lispobj
header
;
lispobj
header
;
unsigned
long
length
;
unsigned
long
length
;
gc_assert
(
p
ointerp
(
object
));
gc_assert
(
P
ointerp
(
object
));
header
=
*
((
lispobj
*
)
PTR
(
object
));
header
=
*
((
lispobj
*
)
PTR
(
object
));
length
=
H
EADER_VALUE
(
header
)
+
1
;
length
=
H
eaderValue
(
header
)
+
1
;
length
=
CEILING
(
length
,
2
);
length
=
CEILING
(
length
,
2
);
return
copy_object
(
object
,
length
);
return
copy_object
(
object
,
length
);
...
@@ -936,7 +936,7 @@ lispobj *where;
...
@@ -936,7 +936,7 @@ lispobj *where;
unsigned
long
length
;
unsigned
long
length
;
header
=
*
where
;
header
=
*
where
;
length
=
H
EADER_VALUE
(
header
)
+
1
;
length
=
H
eaderValue
(
header
)
+
1
;
length
=
CEILING
(
length
,
2
);
length
=
CEILING
(
length
,
2
);
return
length
;
return
length
;
...
@@ -949,7 +949,7 @@ lispobj *where, object;
...
@@ -949,7 +949,7 @@ lispobj *where, object;
{
{
unsigned
long
length
;
unsigned
long
length
;
length
=
H
EADER_VALUE
(
object
)
+
1
;
length
=
H
eaderValue
(
object
)
+
1
;
length
=
CEILING
(
length
,
2
);
length
=
CEILING
(
length
,
2
);
return
length
;
return
length
;
...
@@ -963,10 +963,10 @@ lispobj object;
...
@@ -963,10 +963,10 @@ lispobj object;
unsigned
long
length
;
unsigned
long
length
;
gc_assert
(
p
ointerp
(
object
));
gc_assert
(
P
ointerp
(
object
));
header
=
*
((
lispobj
*
)
PTR
(
object
));
header
=
*
((
lispobj
*
)
PTR
(
object
));
length
=
H
EADER_VALUE
(
header
)
+
1
;
length
=
H
eaderValue
(
header
)
+
1
;
length
=
CEILING
(
length
,
2
);
length
=
CEILING
(
length
,
2
);
return
copy_object
(
object
,
length
);
return
copy_object
(
object
,
length
);
...
@@ -980,7 +980,7 @@ lispobj *where;
...
@@ -980,7 +980,7 @@ lispobj *where;
unsigned
long
length
;
unsigned
long
length
;
header
=
*
where
;
header
=
*
where
;
length
=
H
EADER_VALUE
(
header
)
+
1
;
length
=
H
eaderValue
(
header
)
+
1
;
length
=
CEILING
(
length
,
2
);
length
=
CEILING
(
length
,
2
);
return
length
;
return
length
;
...
@@ -1014,7 +1014,7 @@ trans_string(object)
...
@@ -1014,7 +1014,7 @@ trans_string(object)
struct
vector
*
vector
;
struct
vector
*
vector
;
int
length
,
nwords
;
int
length
,
nwords
;
gc_assert
(
p
ointerp
(
object
));
gc_assert
(
P
ointerp
(
object
));
/* NOTE: Strings contain one more byte of data than the length */
/* NOTE: Strings contain one more byte of data than the length */
/* slot indicates. */
/* slot indicates. */
...
@@ -1050,13 +1050,23 @@ lispobj object;
...
@@ -1050,13 +1050,23 @@ lispobj object;
{
{
struct
vector
*
vector
;
struct
vector
*
vector
;
int
length
,
nwords
;
int
length
,
nwords
;
int
subtype
;
gc_assert
(
p
ointerp
(
object
));
gc_assert
(
P
ointerp
(
object
));
vector
=
(
struct
vector
*
)
PTR
(
object
);
vector
=
(
struct
vector
*
)
PTR
(
object
);
length
=
FIXNUM_TO_INT
(
vector
->
length
);
length
=
FIXNUM_TO_INT
(
vector
->
length
);
nwords
=
CEILING
(
length
+
2
,
2
);
nwords
=
CEILING
(
length
+
2
,
2
);
/* When transporting an EQ hashtable, GC must change subtype */
/* so that the hash functions will know to rehash it. */
subtype
=
HeaderValue
(
vector
->
header
);
if
(
subtype
==
subtype_VectorValidHashing
)
vector
->
header
=
(
subtype_VectorMustRehash
<<
8
)
|
type_SimpleVector
;
return
copy_object
(
object
,
nwords
);
return
copy_object
(
object
,
nwords
);
}
}
...
@@ -1096,7 +1106,7 @@ lispobj object;
...
@@ -1096,7 +1106,7 @@ lispobj object;
struct
vector
*
vector
;
struct
vector
*
vector
;
int
length
,
nwords
;
int
length
,
nwords
;
gc_assert
(
p
ointerp
(
object
));
gc_assert
(
P
ointerp
(
object
));
vector
=
(
struct
vector
*
)
PTR
(
object
);
vector
=
(
struct
vector
*
)
PTR
(
object
);
length
=
FIXNUM_TO_INT
(
vector
->
length
);
length
=
FIXNUM_TO_INT
(
vector
->
length
);
...
@@ -1141,7 +1151,7 @@ lispobj object;
...
@@ -1141,7 +1151,7 @@ lispobj object;
struct
vector
*
vector
;
struct
vector
*
vector
;
int
length
,
nwords
;
int
length
,
nwords
;
gc_assert
(
p
ointerp
(
object
));
gc_assert
(
P
ointerp
(
object
));
vector
=
(
struct
vector
*
)
PTR
(
object
);
vector
=
(
struct
vector
*
)
PTR
(
object
);
length
=
FIXNUM_TO_INT
(
vector
->
length
);
length
=
FIXNUM_TO_INT
(
vector
->
length
);
...
@@ -1186,7 +1196,7 @@ lispobj object;
...
@@ -1186,7 +1196,7 @@ lispobj object;
struct
vector
*
vector
;
struct
vector
*
vector
;
int
length
,
nwords
;
int
length
,
nwords
;
gc_assert
(
p
ointerp
(
object
));
gc_assert
(
P
ointerp
(
object
));
vector
=
(
struct
vector
*
)
PTR
(
object
);
vector
=
(
struct
vector
*
)
PTR
(
object
);
length
=
FIXNUM_TO_INT
(
vector
->
length
);
length
=
FIXNUM_TO_INT
(
vector
->
length
);
...
@@ -1231,7 +1241,7 @@ lispobj object;
...
@@ -1231,7 +1241,7 @@ lispobj object;
struct
vector
*
vector
;
struct
vector
*
vector
;
int
length
,
nwords
;
int
length
,
nwords
;
gc_assert
(
p
ointerp
(
object
));
gc_assert
(
P
ointerp
(
object
));
vector
=
(
struct
vector
*
)
PTR
(
object
);
vector
=
(
struct
vector
*
)
PTR
(
object
);
length
=
FIXNUM_TO_INT
(
vector
->
length
);
length
=
FIXNUM_TO_INT
(
vector
->
length
);
...
@@ -1276,7 +1286,7 @@ lispobj object;
...
@@ -1276,7 +1286,7 @@ lispobj object;
struct
vector
*
vector
;
struct
vector
*
vector
;
int
length
,
nwords
;
int
length
,
nwords
;
gc_assert
(
p
ointerp
(
object
));
gc_assert
(
P
ointerp
(
object
));
vector
=
(
struct
vector
*
)
PTR
(
object
);
vector
=
(
struct
vector
*
)
PTR
(
object
);
length
=
FIXNUM_TO_INT
(
vector
->
length
);
length
=
FIXNUM_TO_INT
(
vector
->
length
);
...
@@ -1321,7 +1331,7 @@ lispobj object;
...
@@ -1321,7 +1331,7 @@ lispobj object;
struct
vector
*
vector
;
struct
vector
*
vector
;
int
length
,
nwords
;
int
length
,
nwords
;
gc_assert
(
p
ointerp
(
object
));
gc_assert
(
P
ointerp
(
object
));
vector
=
(
struct
vector
*
)
PTR
(
object
);
vector
=
(
struct
vector
*
)
PTR
(
object
);
length
=
FIXNUM_TO_INT
(
vector
->
length
);
length
=
FIXNUM_TO_INT
(
vector
->
length
);
...
@@ -1366,7 +1376,7 @@ lispobj object;
...
@@ -1366,7 +1376,7 @@ lispobj object;
struct
vector
*
vector
;
struct
vector
*
vector
;
int
length
,
nwords
;
int
length
,
nwords
;
gc_assert
(
p
ointerp
(
object
));
gc_assert
(
P
ointerp
(
object
));
vector
=
(
struct
vector
*
)
PTR
(
object
);
vector
=
(
struct
vector
*
)
PTR
(
object
);
length
=
FIXNUM_TO_INT
(
vector
->
length
);
length
=
FIXNUM_TO_INT
(
vector
->
length
);
...
@@ -1411,7 +1421,7 @@ lispobj object;
...
@@ -1411,7 +1421,7 @@ lispobj object;
struct
vector
*
vector
;
struct
vector
*
vector
;
int
length
,
nwords
;
int
length
,
nwords
;
gc_assert
(
p
ointerp
(
object
));
gc_assert
(
P
ointerp
(
object
));
vector
=
(
struct
vector
*
)
PTR
(
object
);
vector
=
(
struct
vector
*
)
PTR
(
object
);
length
=
FIXNUM_TO_INT
(
vector
->
length
);
length
=
FIXNUM_TO_INT
(
vector
->
length
);
...
@@ -1602,4 +1612,3 @@ gc_init()
...
@@ -1602,4 +1612,3 @@ gc_init()
sizetab
[
type_Sap
]
=
size_unboxed
;
sizetab
[
type_Sap
]
=
size_unboxed
;
sizetab
[
type_UnboundMarker
]
=
size_immediate
;
sizetab
[
type_UnboundMarker
]
=
size_immediate
;
}
}
This diff is collapsed.
Click to expand it.
ldb/gc.h
+
1
−
4
View file @
9300f5d7
/*
/*
* Header file for GC
* Header file for GC
*
*
* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/ldb/Attic/gc.h,v 1.
2
1990/0
3/29 21:18:26
ch Exp $
* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/ldb/Attic/gc.h,v 1.
3
1990/0
5/13 15:30:58
ch Exp $
*/
*/
#if !defined(_INCLUDED_GC_H_)
#if !defined(_INCLUDED_GC_H_)
...
@@ -19,9 +19,6 @@ extern void gc_lose();
...
@@ -19,9 +19,6 @@ extern void gc_lose();
} \
} \
}
}
#define pointerp(object) ((object) & 0x01)
#define HEADER_VALUE(object) ((unsigned long) ((object)>>8))
#define CEILING(x,y) (((x) + ((y) - 1)) & (~((y) - 1)))
#define CEILING(x,y) (((x) + ((y) - 1)) & (~((y) - 1)))
#define FIXNUM_TO_INT(x) ((x)>>2)
#define FIXNUM_TO_INT(x) ((x)>>2)
#define INT_TO_FIXNUM(x) ((x)<<2)
#define INT_TO_FIXNUM(x) ((x)<<2)
...
...
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