Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
P
Pyston
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
Pyston
Commits
b34237fb
Commit
b34237fb
authored
Aug 06, 2015
by
Rudi Chen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Rename boxGCHandler to Box::gcHandler.
parent
03cd0cbc
Changes
22
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
72 additions
and
72 deletions
+72
-72
src/capi/types.h
src/capi/types.h
+1
-1
src/core/types.h
src/core/types.h
+2
-0
src/runtime/builtin_modules/builtins.cpp
src/runtime/builtin_modules/builtins.cpp
+1
-1
src/runtime/builtin_modules/sys.cpp
src/runtime/builtin_modules/sys.cpp
+1
-1
src/runtime/classobj.h
src/runtime/classobj.h
+2
-2
src/runtime/code.cpp
src/runtime/code.cpp
+1
-1
src/runtime/descr.cpp
src/runtime/descr.cpp
+3
-3
src/runtime/dict.cpp
src/runtime/dict.cpp
+3
-3
src/runtime/file.cpp
src/runtime/file.cpp
+1
-1
src/runtime/frame.cpp
src/runtime/frame.cpp
+1
-1
src/runtime/generator.cpp
src/runtime/generator.cpp
+1
-1
src/runtime/inline/xrange.cpp
src/runtime/inline/xrange.cpp
+1
-1
src/runtime/iterobject.cpp
src/runtime/iterobject.cpp
+2
-2
src/runtime/list.cpp
src/runtime/list.cpp
+2
-2
src/runtime/long.cpp
src/runtime/long.cpp
+1
-1
src/runtime/set.cpp
src/runtime/set.cpp
+2
-2
src/runtime/str.cpp
src/runtime/str.cpp
+1
-1
src/runtime/super.cpp
src/runtime/super.cpp
+1
-1
src/runtime/traceback.cpp
src/runtime/traceback.cpp
+1
-1
src/runtime/tuple.cpp
src/runtime/tuple.cpp
+2
-2
src/runtime/types.cpp
src/runtime/types.cpp
+42
-42
src/runtime/types.h
src/runtime/types.h
+0
-2
No files found.
src/capi/types.h
View file @
b34237fb
...
...
@@ -58,7 +58,7 @@ public:
assert
(
_o
->
cls
==
capifunc_cls
);
BoxedCApiFunction
*
o
=
static_cast
<
BoxedCApiFunction
*>
(
_o
);
boxGC
Handler
(
v
,
o
);
Box
::
gc
Handler
(
v
,
o
);
v
->
visit
(
o
->
passthrough
);
v
->
visit
(
o
->
module
);
}
...
...
src/core/types.h
View file @
b34237fb
...
...
@@ -603,6 +603,8 @@ public:
Box
*
hasnextOrNullIC
();
friend
class
AttrWrapper
;
static
void
gcHandler
(
GCVisitor
*
v
,
Box
*
b
);
};
static_assert
(
offsetof
(
Box
,
cls
)
==
offsetof
(
struct
_object
,
ob_type
),
""
);
...
...
src/runtime/builtin_modules/builtins.cpp
View file @
b34237fb
...
...
@@ -1013,7 +1013,7 @@ public:
}
static
void
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
BoxedEnumerate
*
it
=
(
BoxedEnumerate
*
)
b
;
it
->
iterator
.
gcHandler
(
v
);
...
...
src/runtime/builtin_modules/sys.cpp
View file @
b34237fb
...
...
@@ -228,7 +228,7 @@ public:
static
void
gcHandler
(
GCVisitor
*
v
,
Box
*
_b
)
{
assert
(
_b
->
cls
==
sys_flags_cls
);
boxGC
Handler
(
v
,
_b
);
Box
::
gc
Handler
(
v
,
_b
);
BoxedSysFlags
*
self
=
static_cast
<
BoxedSysFlags
*>
(
_b
);
v
->
visit
(
self
->
division_warning
);
...
...
src/runtime/classobj.h
View file @
b34237fb
...
...
@@ -52,7 +52,7 @@ public:
assert
(
_o
->
cls
==
classobj_cls
);
BoxedClassobj
*
o
=
static_cast
<
BoxedClassobj
*>
(
_o
);
boxGC
Handler
(
v
,
o
);
Box
::
gc
Handler
(
v
,
o
);
if
(
o
->
bases
)
v
->
visit
(
o
->
bases
);
if
(
o
->
name
)
...
...
@@ -76,7 +76,7 @@ public:
assert
(
_o
->
cls
==
instance_cls
);
BoxedInstance
*
o
=
static_cast
<
BoxedInstance
*>
(
_o
);
boxGC
Handler
(
v
,
o
);
Box
::
gc
Handler
(
v
,
o
);
if
(
o
->
inst_cls
)
v
->
visit
(
o
->
inst_cls
);
}
...
...
src/runtime/code.cpp
View file @
b34237fb
...
...
@@ -39,7 +39,7 @@ public:
static
void
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
assert
(
b
->
cls
==
code_cls
);
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
}
static
Box
*
name
(
Box
*
b
,
void
*
)
{
...
...
src/runtime/descr.cpp
View file @
b34237fb
...
...
@@ -413,7 +413,7 @@ void BoxedMethodDescriptor::gcHandler(GCVisitor* v, Box* _o) {
assert
(
_o
->
cls
==
method_cls
);
BoxedMethodDescriptor
*
o
=
static_cast
<
BoxedMethodDescriptor
*>
(
_o
);
boxGC
Handler
(
v
,
o
);
Box
::
gc
Handler
(
v
,
o
);
v
->
visit
(
o
->
type
);
}
...
...
@@ -452,7 +452,7 @@ void BoxedWrapperDescriptor::gcHandler(GCVisitor* v, Box* _o) {
assert
(
_o
->
cls
==
wrapperdescr_cls
);
BoxedWrapperDescriptor
*
o
=
static_cast
<
BoxedWrapperDescriptor
*>
(
_o
);
boxGC
Handler
(
v
,
o
);
Box
::
gc
Handler
(
v
,
o
);
v
->
visit
(
o
->
type
);
}
...
...
@@ -570,7 +570,7 @@ void BoxedWrapperObject::gcHandler(GCVisitor* v, Box* _o) {
assert
(
_o
->
cls
==
wrapperobject_cls
);
BoxedWrapperObject
*
o
=
static_cast
<
BoxedWrapperObject
*>
(
_o
);
boxGC
Handler
(
v
,
o
);
Box
::
gc
Handler
(
v
,
o
);
v
->
visit
(
o
->
obj
);
}
...
...
src/runtime/dict.cpp
View file @
b34237fb
...
...
@@ -685,7 +685,7 @@ extern "C" Box* dictInit(BoxedDict* self, BoxedTuple* args, BoxedDict* kwargs) {
void
BoxedDict
::
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
assert
(
isSubclass
(
b
->
cls
,
dict_cls
));
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
BoxedDict
*
d
=
(
BoxedDict
*
)
b
;
...
...
@@ -701,7 +701,7 @@ void BoxedDict::gcHandler(GCVisitor* v, Box* b) {
void
BoxedDictIterator
::
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
assert
(
b
->
cls
==
dict_iterator_cls
);
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
BoxedDictIterator
*
it
=
static_cast
<
BoxedDictIterator
*>
(
b
);
v
->
visit
(
it
->
d
);
...
...
@@ -709,7 +709,7 @@ void BoxedDictIterator::gcHandler(GCVisitor* v, Box* b) {
void
BoxedDictView
::
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
assert
(
b
->
cls
==
dict_items_cls
);
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
BoxedDictView
*
view
=
static_cast
<
BoxedDictView
*>
(
b
);
v
->
visit
(
view
->
d
);
...
...
src/runtime/file.cpp
View file @
b34237fb
...
...
@@ -1744,7 +1744,7 @@ void fileDestructor(Box* b) {
}
void
BoxedFile
::
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
assert
(
isSubclass
(
b
->
cls
,
file_cls
));
BoxedFile
*
f
=
static_cast
<
BoxedFile
*>
(
b
);
...
...
src/runtime/frame.cpp
View file @
b34237fb
...
...
@@ -78,7 +78,7 @@ public:
// ** = getter supported, but setter unsupported
static
void
gchandler
(
GCVisitor
*
v
,
Box
*
b
)
{
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
auto
f
=
static_cast
<
BoxedFrame
*>
(
b
);
...
...
src/runtime/generator.cpp
View file @
b34237fb
...
...
@@ -379,7 +379,7 @@ extern "C" BoxedGenerator::BoxedGenerator(BoxedFunctionBase* function, Box* arg1
}
void
BoxedGenerator
::
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
BoxedGenerator
*
g
=
(
BoxedGenerator
*
)
b
;
...
...
src/runtime/inline/xrange.cpp
View file @
b34237fb
...
...
@@ -119,7 +119,7 @@ public:
}
static
void
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
BoxedXrangeIterator
*
it
=
(
BoxedXrangeIterator
*
)
b
;
v
->
visit
(
it
->
xrange
);
...
...
src/runtime/iterobject.cpp
View file @
b34237fb
...
...
@@ -114,7 +114,7 @@ Box* seqiterNext(Box* s) {
void
BoxedSeqIter
::
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
assert
(
b
->
cls
==
seqiter_cls
||
b
->
cls
==
seqreviter_cls
);
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
BoxedSeqIter
*
si
=
static_cast
<
BoxedSeqIter
*>
(
b
);
v
->
visit
(
si
->
b
);
...
...
@@ -124,7 +124,7 @@ void BoxedSeqIter::gcHandler(GCVisitor* v, Box* b) {
void
BoxedIterWrapper
::
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
assert
(
b
->
cls
==
iterwrapper_cls
);
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
BoxedIterWrapper
*
iw
=
static_cast
<
BoxedIterWrapper
*>
(
b
);
v
->
visit
(
iw
->
iter
);
...
...
src/runtime/list.cpp
View file @
b34237fb
...
...
@@ -1092,7 +1092,7 @@ extern "C" int PyList_SetSlice(PyObject* a, Py_ssize_t ilow, Py_ssize_t ihigh, P
}
void
BoxedListIterator
::
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
BoxedListIterator
*
it
=
(
BoxedListIterator
*
)
b
;
v
->
visit
(
it
->
l
);
}
...
...
@@ -1100,7 +1100,7 @@ void BoxedListIterator::gcHandler(GCVisitor* v, Box* b) {
void
BoxedList
::
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
assert
(
isSubclass
(
b
->
cls
,
list_cls
));
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
BoxedList
*
l
=
(
BoxedList
*
)
b
;
int
size
=
l
->
size
;
...
...
src/runtime/long.cpp
View file @
b34237fb
...
...
@@ -62,7 +62,7 @@ int _PyLong_DigitValue[256] = {
#define PY_ABS_LLONG_MIN (0 - (unsigned PY_LONG_LONG)PY_LLONG_MIN)
void
BoxedLong
::
gchandler
(
GCVisitor
*
v
,
Box
*
b
)
{
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
BoxedLong
*
l
=
(
BoxedLong
*
)
b
;
...
...
src/runtime/set.cpp
View file @
b34237fb
...
...
@@ -26,7 +26,7 @@ extern "C" Box* createSet() {
}
void
BoxedSet
::
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
BoxedSet
*
s
=
(
BoxedSet
*
)
b
;
...
...
@@ -60,7 +60,7 @@ public:
}
static
void
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
BoxedSetIterator
*
it
=
(
BoxedSetIterator
*
)
b
;
...
...
src/runtime/str.cpp
View file @
b34237fb
...
...
@@ -2313,7 +2313,7 @@ public:
}
static
void
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
BoxedStringIterator
*
it
=
(
BoxedStringIterator
*
)
b
;
v
->
visit
(
it
->
s
);
}
...
...
src/runtime/super.cpp
View file @
b34237fb
...
...
@@ -41,7 +41,7 @@ public:
assert
(
_o
->
cls
==
super_cls
);
BoxedSuper
*
o
=
static_cast
<
BoxedSuper
*>
(
_o
);
boxGC
Handler
(
v
,
o
);
Box
::
gc
Handler
(
v
,
o
);
if
(
o
->
type
)
v
->
visit
(
o
->
type
);
if
(
o
->
obj
)
...
...
src/runtime/traceback.cpp
View file @
b34237fb
...
...
@@ -45,7 +45,7 @@ void BoxedTraceback::gcHandler(GCVisitor* v, Box* b) {
if
(
self
->
tb_next
)
v
->
visit
(
self
->
tb_next
);
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
}
void
printTraceback
(
Box
*
b
)
{
...
...
src/runtime/tuple.cpp
View file @
b34237fb
...
...
@@ -559,14 +559,14 @@ static Py_ssize_t tuplelength(PyTupleObject* a) {
}
void
BoxedTuple
::
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
BoxedTuple
*
t
=
(
BoxedTuple
*
)
b
;
v
->
visitRange
((
void
*
const
*
)
&
t
->
elts
[
0
],
(
void
*
const
*
)
&
t
->
elts
[
t
->
size
()]);
}
extern
"C"
void
BoxedTupleIterator
::
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
BoxedTupleIterator
*
it
=
(
BoxedTupleIterator
*
)
b
;
v
->
visit
(
it
->
t
);
}
...
...
src/runtime/types.cpp
View file @
b34237fb
...
...
@@ -332,6 +332,34 @@ Box* Box::hasnextOrNullIC() {
return
this
->
cls
->
callHasnextIC
(
this
,
true
);
}
void
Box
::
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
if
(
b
->
cls
)
{
v
->
visit
(
b
->
cls
);
if
(
b
->
cls
->
instancesHaveHCAttrs
())
{
HCAttrs
*
attrs
=
b
->
getHCAttrsPtr
();
v
->
visit
(
attrs
->
hcls
);
if
(
attrs
->
attr_list
)
v
->
visit
(
attrs
->
attr_list
);
}
if
(
b
->
cls
->
instancesHaveDictAttrs
())
{
RELEASE_ASSERT
(
0
,
"Shouldn't all of these objects be conservatively scanned?"
);
}
if
(
b
->
cls
->
tp_flags
&
Py_TPFLAGS_HEAPTYPE
)
{
BoxedHeapClass
*
heap_cls
=
static_cast
<
BoxedHeapClass
*>
(
b
->
cls
);
BoxedHeapClass
::
SlotOffset
*
slotOffsets
=
heap_cls
->
slotOffsets
();
for
(
int
i
=
0
;
i
<
heap_cls
->
nslots
();
i
++
)
{
v
->
visit
(
*
((
Box
**
)((
char
*
)
b
+
slotOffsets
[
i
])));
}
}
}
else
{
assert
(
type_cls
==
NULL
||
b
==
type_cls
);
}
}
extern
"C"
BoxedFunctionBase
::
BoxedFunctionBase
(
CLFunction
*
f
)
:
in_weakreflist
(
NULL
),
f
(
f
),
closure
(
NULL
),
ndefaults
(
0
),
defaults
(
NULL
),
modname
(
NULL
),
name
(
NULL
),
doc
(
NULL
)
{
if
(
f
->
source
)
{
...
...
@@ -409,7 +437,7 @@ BoxedFunction::BoxedFunction(CLFunction* f, std::initializer_list<Box*> defaults
}
void
BoxedFunction
::
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
BoxedFunction
*
f
=
(
BoxedFunction
*
)
b
;
...
...
@@ -541,7 +569,7 @@ template <typename A, typename B, typename C> void visitContiguousMap(GCVisitor*
}
void
BoxedModule
::
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
BoxedModule
*
d
=
(
BoxedModule
*
)
b
;
...
...
@@ -571,34 +599,6 @@ extern "C" CLFunction* unboxCLFunction(Box* b) {
return
static_cast
<
BoxedFunction
*>
(
b
)
->
f
;
}
extern
"C"
void
boxGCHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
if
(
b
->
cls
)
{
v
->
visit
(
b
->
cls
);
if
(
b
->
cls
->
instancesHaveHCAttrs
())
{
HCAttrs
*
attrs
=
b
->
getHCAttrsPtr
();
v
->
visit
(
attrs
->
hcls
);
if
(
attrs
->
attr_list
)
v
->
visit
(
attrs
->
attr_list
);
}
if
(
b
->
cls
->
instancesHaveDictAttrs
())
{
RELEASE_ASSERT
(
0
,
"Shouldn't all of these objects be conservatively scanned?"
);
}
if
(
b
->
cls
->
tp_flags
&
Py_TPFLAGS_HEAPTYPE
)
{
BoxedHeapClass
*
heap_cls
=
static_cast
<
BoxedHeapClass
*>
(
b
->
cls
);
BoxedHeapClass
::
SlotOffset
*
slotOffsets
=
heap_cls
->
slotOffsets
();
for
(
int
i
=
0
;
i
<
heap_cls
->
nslots
();
i
++
)
{
v
->
visit
(
*
((
Box
**
)((
char
*
)
b
+
slotOffsets
[
i
])));
}
}
}
else
{
assert
(
type_cls
==
NULL
||
b
==
type_cls
);
}
}
static
Box
*
typeCallInner
(
CallRewriteArgs
*
rewrite_args
,
ArgPassSpec
argspec
,
Box
*
arg1
,
Box
*
arg2
,
Box
*
arg3
,
Box
**
args
,
const
std
::
vector
<
BoxedString
*>*
keyword_names
);
...
...
@@ -1132,7 +1132,7 @@ Box* typeCall(Box* obj, BoxedTuple* vararg, BoxedDict* kwargs) {
}
void
BoxedHeapClass
::
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
BoxedClass
*
cls
=
(
BoxedClass
*
)
b
;
...
...
@@ -1196,7 +1196,7 @@ static void typeSubSetDict(Box* obj, Box* val, void* context) {
Box
*
dict_descr
=
NULL
;
void
BoxedInstanceMethod
::
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
BoxedInstanceMethod
*
im
=
(
BoxedInstanceMethod
*
)
b
;
...
...
@@ -1206,7 +1206,7 @@ void BoxedInstanceMethod::gcHandler(GCVisitor* v, Box* b) {
}
void
BoxedProperty
::
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
BoxedProperty
*
prop
=
(
BoxedProperty
*
)
b
;
...
...
@@ -1221,7 +1221,7 @@ void BoxedProperty::gcHandler(GCVisitor* v, Box* b) {
}
void
BoxedStaticmethod
::
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
BoxedStaticmethod
*
sm
=
(
BoxedStaticmethod
*
)
b
;
...
...
@@ -1230,7 +1230,7 @@ void BoxedStaticmethod::gcHandler(GCVisitor* v, Box* b) {
}
void
BoxedClassmethod
::
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
BoxedClassmethod
*
cm
=
(
BoxedClassmethod
*
)
b
;
...
...
@@ -1241,7 +1241,7 @@ void BoxedClassmethod::gcHandler(GCVisitor* v, Box* b) {
void
BoxedSlice
::
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
assert
(
b
->
cls
==
slice_cls
);
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
BoxedSlice
*
sl
=
static_cast
<
BoxedSlice
*>
(
b
);
...
...
@@ -1259,7 +1259,7 @@ static int call_gc_visit(PyObject* val, void* arg) {
}
static
void
proxy_to_tp_traverse
(
GCVisitor
*
v
,
Box
*
b
)
{
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
assert
(
b
->
cls
->
tp_traverse
);
b
->
cls
->
tp_traverse
(
b
,
call_gc_visit
,
v
);
...
...
@@ -1268,7 +1268,7 @@ static void proxy_to_tp_traverse(GCVisitor* v, Box* b) {
void
BoxedClosure
::
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
assert
(
isSubclass
(
b
->
cls
,
closure_cls
));
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
BoxedClosure
*
c
=
(
BoxedClosure
*
)
b
;
if
(
c
->
parent
)
...
...
@@ -1981,7 +1981,7 @@ public:
DEFAULT_CLASS
(
attrwrapperiter_cls
);
static
void
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
AttrWrapperIter
*
self
=
(
AttrWrapperIter
*
)
b
;
v
->
visit
(
self
->
hcls
);
...
...
@@ -2016,7 +2016,7 @@ public:
Box
*
getUnderlying
()
{
return
b
;
}
static
void
gcHandler
(
GCVisitor
*
v
,
Box
*
b
)
{
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
AttrWrapper
*
aw
=
(
AttrWrapper
*
)
b
;
v
->
visit
(
aw
->
b
);
...
...
@@ -3026,7 +3026,7 @@ out:
}
void
unicode_visit
(
GCVisitor
*
v
,
Box
*
b
)
{
boxGC
Handler
(
v
,
b
);
Box
::
gc
Handler
(
v
,
b
);
PyUnicodeObject
*
u
=
(
PyUnicodeObject
*
)
b
;
v
->
visit
(
u
->
str
);
...
...
@@ -3193,7 +3193,7 @@ void setupRuntime() {
// We have to do a little dance to get object_cls and type_cls set up, since the normal
// object-creation routines look at the class to see the allocation size.
void
*
mem
=
gc_alloc
(
sizeof
(
BoxedClass
),
gc
::
GCKind
::
PYTHON
);
object_cls
=
::
new
(
mem
)
BoxedClass
(
NULL
,
&
boxGC
Handler
,
0
,
0
,
sizeof
(
Box
),
false
);
object_cls
=
::
new
(
mem
)
BoxedClass
(
NULL
,
&
Box
::
gc
Handler
,
0
,
0
,
sizeof
(
Box
),
false
);
mem
=
gc_alloc
(
sizeof
(
BoxedHeapClass
),
gc
::
GCKind
::
PYTHON
);
type_cls
=
::
new
(
mem
)
BoxedHeapClass
(
object_cls
,
&
BoxedHeapClass
::
gcHandler
,
offsetof
(
BoxedClass
,
attrs
),
offsetof
(
BoxedClass
,
tp_weaklist
),
sizeof
(
BoxedHeapClass
),
false
,
NULL
);
...
...
src/runtime/types.h
View file @
b34237fb
...
...
@@ -1006,8 +1006,6 @@ public:
static
void
gcHandler
(
GCVisitor
*
v
,
Box
*
_o
);
};
extern
"C"
void
boxGCHandler
(
GCVisitor
*
v
,
Box
*
b
);
Box
*
objectNewNoArgs
(
BoxedClass
*
cls
);
Box
*
objectSetattr
(
Box
*
obj
,
Box
*
attr
,
Box
*
value
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a 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