Skip to content

Commit 0c11636

Browse files
committed
isolate gc from bare object module
1 parent 97bb330 commit 0c11636

File tree

25 files changed

+347
-339
lines changed

25 files changed

+347
-339
lines changed

derive-impl/src/pyclass.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -420,10 +420,10 @@ pub(crate) fn impl_pyclass(attr: AttributeArgs, item: Item) -> Result<TokenStrea
420420
if is_trace {
421421
quote! {
422422
#[cfg(feature = "gc_bacon")]
423-
impl ::rustpython_vm::object::MaybeTrace for #ident {
423+
impl ::rustpython_vm::object::gc::MaybeTrace for #ident {
424424
const IS_TRACE: bool = true;
425-
fn try_trace(&self, tracer_fn: &mut ::rustpython_vm::object::TracerFn) {
426-
::rustpython_vm::object::Trace::trace(self, tracer_fn);
425+
fn try_trace(&self, tracer_fn: &mut ::rustpython_vm::object::gc::TracerFn) {
426+
::rustpython_vm::object::gc::Trace::trace(self, tracer_fn);
427427
}
428428
}
429429
}
@@ -432,7 +432,7 @@ pub(crate) fn impl_pyclass(attr: AttributeArgs, item: Item) -> Result<TokenStrea
432432
// #attrs
433433
quote! {
434434
#[cfg(feature = "gc_bacon")]
435-
impl ::rustpython_vm::object::MaybeTrace for #ident { }
435+
impl ::rustpython_vm::object::gc::MaybeTrace for #ident { }
436436
}
437437
}
438438
};

derive-impl/src/pytrace.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ fn gen_trace_code(item: &mut DeriveInput) -> Result<TokenStream> {
2828
});
2929
if do_trace {
3030
quote!(
31-
::rustpython_vm::object::Trace::trace(&self.#name, tracer_fn);
31+
::rustpython_vm::object::gc::Trace::trace(&self.#name, tracer_fn);
3232
)
3333
} else {
3434
quote!()
@@ -60,8 +60,8 @@ pub(crate) fn impl_pytrace(attr: AttributeArgs, mut item: DeriveInput) -> Result
6060
let ret = quote! {
6161
#item
6262
#[cfg(feature = "gc_bacon")]
63-
unsafe impl ::rustpython_vm::object::Trace for #ty {
64-
fn trace(&self, tracer_fn: &mut ::rustpython_vm::object::TracerFn) {
63+
unsafe impl ::rustpython_vm::object::gc::Trace for #ty {
64+
fn trace(&self, tracer_fn: &mut ::rustpython_vm::object::gc::TracerFn) {
6565
#trace_code
6666
}
6767
}

stdlib/src/gc.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ mod gc {
88
fn collect(_args: FuncArgs, _vm: &VirtualMachine) -> i32 {
99
#[cfg(feature = "gc_bacon")]
1010
{
11-
usize::from(rustpython_vm::object::collect()) as i32
11+
usize::from(rustpython_vm::object::gc::collect()) as i32
1212
}
1313
#[cfg(not(feature = "gc_bacon"))]
1414
{
@@ -20,7 +20,7 @@ mod gc {
2020
fn isenabled(_args: FuncArgs, _vm: &VirtualMachine) -> bool {
2121
#[cfg(feature = "gc_bacon")]
2222
{
23-
rustpython_vm::object::isenabled()
23+
rustpython_vm::object::gc::isenabled()
2424
}
2525
#[cfg(not(feature = "gc_bacon"))]
2626
{
@@ -32,7 +32,7 @@ mod gc {
3232
fn enable(_args: FuncArgs, vm: &VirtualMachine) -> PyResult {
3333
#[cfg(feature = "gc_bacon")]
3434
{
35-
rustpython_vm::object::enable();
35+
rustpython_vm::object::gc::enable();
3636
Ok(vm.new_pyobj(true))
3737
}
3838
#[cfg(not(feature = "gc_bacon"))]
@@ -45,7 +45,7 @@ mod gc {
4545
fn disable(_args: FuncArgs, vm: &VirtualMachine) -> PyResult {
4646
#[cfg(feature = "gc_bacon")]
4747
{
48-
rustpython_vm::object::disable();
48+
rustpython_vm::object::gc::disable();
4949
Ok(vm.new_pyobj(true))
5050
}
5151
#[cfg(not(feature = "gc_bacon"))]

vm/src/builtins/function.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ pub struct PyFunction {
3939
}
4040

4141
#[cfg(feature = "gc_bacon")]
42-
unsafe impl crate::object::Trace for PyFunction {
43-
fn trace(&self, tracer_fn: &mut crate::object::TracerFn) {
42+
unsafe impl crate::object::gc::Trace for PyFunction {
43+
fn trace(&self, tracer_fn: &mut crate::object::gc::TracerFn) {
4444
self.globals.trace(tracer_fn);
4545
self.closure.trace(tracer_fn);
4646
self.defaults_and_kwdefaults.trace(tracer_fn);

vm/src/builtins/iter.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ pub enum IterStatus<T> {
2525
}
2626

2727
#[cfg(feature = "gc_bacon")]
28-
unsafe impl<T: crate::object::Trace> crate::object::Trace for IterStatus<T> {
29-
fn trace(&self, tracer_fn: &mut crate::object::TracerFn) {
28+
unsafe impl<T: crate::object::gc::Trace> crate::object::gc::Trace for IterStatus<T> {
29+
fn trace(&self, tracer_fn: &mut crate::object::gc::TracerFn) {
3030
match self {
3131
IterStatus::Active(ref r) => r.trace(tracer_fn),
3232
IterStatus::Exhausted => (),
@@ -41,8 +41,8 @@ pub struct PositionIterInternal<T> {
4141
}
4242

4343
#[cfg(feature = "gc_bacon")]
44-
unsafe impl<T: crate::object::Trace> crate::object::Trace for PositionIterInternal<T> {
45-
fn trace(&self, tracer_fn: &mut crate::object::TracerFn) {
44+
unsafe impl<T: crate::object::gc::Trace> crate::object::gc::Trace for PositionIterInternal<T> {
45+
fn trace(&self, tracer_fn: &mut crate::object::gc::TracerFn) {
4646
self.status.trace(tracer_fn)
4747
}
4848
}

vm/src/builtins/mappingproxy.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ enum MappingProxyInner {
2727
}
2828

2929
#[cfg(feature = "gc_bacon")]
30-
unsafe impl crate::object::Trace for MappingProxyInner {
31-
fn trace(&self, tracer_fn: &mut crate::object::TracerFn) {
30+
unsafe impl crate::object::gc::Trace for MappingProxyInner {
31+
fn trace(&self, tracer_fn: &mut crate::object::gc::TracerFn) {
3232
match self {
3333
MappingProxyInner::Class(ref r) => r.trace(tracer_fn),
3434
MappingProxyInner::Mapping(ref arg) => arg.trace(tracer_fn),

vm/src/builtins/set.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,8 @@ pub(super) struct PySetInner {
153153
}
154154

155155
#[cfg(feature = "gc_bacon")]
156-
unsafe impl crate::object::Trace for PySetInner {
157-
fn trace(&self, tracer_fn: &mut crate::object::TracerFn) {
156+
unsafe impl crate::object::gc::Trace for PySetInner {
157+
fn trace(&self, tracer_fn: &mut crate::object::gc::TracerFn) {
158158
// FIXME(discord9): Rc means shared ref, so should it be traced?
159159
self.content.trace(tracer_fn)
160160
}

vm/src/builtins/traceback.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ pub struct PyTraceback {
1313
}
1414

1515
#[cfg(feature = "gc_bacon")]
16-
unsafe impl crate::object::Trace for PyTraceback {
17-
fn trace(&self, tracer_fn: &mut crate::object::TracerFn) {
16+
unsafe impl crate::object::gc::Trace for PyTraceback {
17+
fn trace(&self, tracer_fn: &mut crate::object::gc::TracerFn) {
1818
self.next.trace(tracer_fn);
1919
}
2020
}

vm/src/builtins/tuple.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -482,11 +482,11 @@ pub struct PyTupleTyped<T: TransmuteFromObject> {
482482
}
483483

484484
#[cfg(feature = "gc_bacon")]
485-
unsafe impl<T> crate::object::Trace for PyTupleTyped<T>
485+
unsafe impl<T> crate::object::gc::Trace for PyTupleTyped<T>
486486
where
487-
T: TransmuteFromObject + crate::object::Trace,
487+
T: TransmuteFromObject + crate::object::gc::Trace,
488488
{
489-
fn trace(&self, tracer_fn: &mut crate::object::TracerFn) {
489+
fn trace(&self, tracer_fn: &mut crate::object::gc::TracerFn) {
490490
self.tuple.trace(tracer_fn);
491491
}
492492
}

vm/src/builtins/type.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ pub struct PyType {
4141
}
4242

4343
#[cfg(feature = "gc_bacon")]
44-
unsafe impl crate::object::Trace for PyType {
45-
fn trace(&self, tracer_fn: &mut crate::object::TracerFn) {
44+
unsafe impl crate::object::gc::Trace for PyType {
45+
fn trace(&self, tracer_fn: &mut crate::object::gc::TracerFn) {
4646
self.base.trace(tracer_fn);
4747
self.bases.trace(tracer_fn);
4848
self.mro.trace(tracer_fn);

vm/src/dictdatatype.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ pub struct Dict<T = PyObjectRef> {
3232
}
3333

3434
#[cfg(feature = "gc_bacon")]
35-
unsafe impl<T: crate::object::Trace> crate::object::Trace for Dict<T> {
36-
fn trace(&self, tracer_fn: &mut crate::object::TracerFn) {
35+
unsafe impl<T: crate::object::gc::Trace> crate::object::gc::Trace for Dict<T> {
36+
fn trace(&self, tracer_fn: &mut crate::object::gc::TracerFn) {
3737
self.inner.trace(tracer_fn);
3838
}
3939
}
@@ -77,8 +77,8 @@ struct DictInner<T> {
7777
}
7878

7979
#[cfg(feature = "gc_bacon")]
80-
unsafe impl<T: crate::object::Trace> crate::object::Trace for DictInner<T> {
81-
fn trace(&self, tracer_fn: &mut crate::object::TracerFn) {
80+
unsafe impl<T: crate::object::gc::Trace> crate::object::gc::Trace for DictInner<T> {
81+
fn trace(&self, tracer_fn: &mut crate::object::gc::TracerFn) {
8282
self.entries
8383
.iter()
8484
.map(|v| {

vm/src/exceptions.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ use std::{
2121
io::{self, BufRead, BufReader},
2222
};
2323
#[cfg(feature = "gc_bacon")]
24-
unsafe impl crate::object::Trace for PyBaseException {
25-
fn trace(&self, tracer_fn: &mut crate::object::TracerFn) {
24+
unsafe impl crate::object::gc::Trace for PyBaseException {
25+
fn trace(&self, tracer_fn: &mut crate::object::gc::TracerFn) {
2626
self.traceback.trace(tracer_fn);
2727
self.cause.trace(tracer_fn);
2828
self.context.trace(tracer_fn);

vm/src/frame.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -349,14 +349,15 @@ impl ExecutingFrame<'_> {
349349
// Execute until return or exception:
350350
let instrs = &self.code.instructions;
351351
let mut arg_state = bytecode::OpArgState::default();
352-
#[allow(dead_code)]
352+
#[allow(unused_variables)]
353+
#[allow(unused_mut)]
353354
let mut gc_count = 0;
354355
loop {
355356
#[cfg(feature = "gc_bacon")]
356357
{
357358
gc_count += 1;
358359
if gc_count > 1000 {
359-
crate::object::try_gc();
360+
crate::object::gc::try_gc();
360361
gc_count = 0;
361362
}
362363
}

vm/src/function/argument.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ pub struct FuncArgs {
6565
}
6666

6767
#[cfg(feature = "gc_bacon")]
68-
unsafe impl crate::object::Trace for FuncArgs {
69-
fn trace(&self, tracer_fn: &mut crate::object::TracerFn) {
68+
unsafe impl crate::object::gc::Trace for FuncArgs {
69+
fn trace(&self, tracer_fn: &mut crate::object::gc::TracerFn) {
7070
self.args.trace(tracer_fn);
7171
self.kwargs.iter().map(|(_, v)| v.trace(tracer_fn)).count();
7272
}
@@ -329,11 +329,11 @@ impl<T: TryFromObject> FromArgOptional for T {
329329
pub struct KwArgs<T = PyObjectRef>(IndexMap<String, T>);
330330

331331
#[cfg(feature = "gc_bacon")]
332-
unsafe impl<T> crate::object::Trace for KwArgs<T>
332+
unsafe impl<T> crate::object::gc::Trace for KwArgs<T>
333333
where
334-
T: crate::object::Trace,
334+
T: crate::object::gc::Trace,
335335
{
336-
fn trace(&self, tracer_fn: &mut crate::object::TracerFn) {
336+
fn trace(&self, tracer_fn: &mut crate::object::gc::TracerFn) {
337337
self.0.iter().map(|(_, v)| v.trace(tracer_fn)).count();
338338
}
339339
}
@@ -396,11 +396,11 @@ impl<T> IntoIterator for KwArgs<T> {
396396
pub struct PosArgs<T = PyObjectRef>(Vec<T>);
397397

398398
#[cfg(feature = "gc_bacon")]
399-
unsafe impl<T> crate::object::Trace for PosArgs<T>
399+
unsafe impl<T> crate::object::gc::Trace for PosArgs<T>
400400
where
401-
T: crate::object::Trace,
401+
T: crate::object::gc::Trace,
402402
{
403-
fn trace(&self, tracer_fn: &mut crate::object::TracerFn) {
403+
fn trace(&self, tracer_fn: &mut crate::object::gc::TracerFn) {
404404
self.0.trace(tracer_fn)
405405
}
406406
}
@@ -490,11 +490,11 @@ pub enum OptionalArg<T = PyObjectRef> {
490490
}
491491

492492
#[cfg(feature = "gc_bacon")]
493-
unsafe impl<T> crate::object::Trace for OptionalArg<T>
493+
unsafe impl<T> crate::object::gc::Trace for OptionalArg<T>
494494
where
495-
T: crate::object::Trace,
495+
T: crate::object::gc::Trace,
496496
{
497-
fn trace(&self, tracer_fn: &mut crate::object::TracerFn) {
497+
fn trace(&self, tracer_fn: &mut crate::object::gc::TracerFn) {
498498
match self {
499499
OptionalArg::Present(ref o) => o.trace(tracer_fn),
500500
OptionalArg::Missing => (),

vm/src/function/protocol.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ pub struct ArgIterable<T = PyObjectRef> {
7878
}
7979

8080
#[cfg(feature = "gc_bacon")]
81-
unsafe impl<T: crate::object::Trace> crate::object::Trace for ArgIterable<T> {
82-
fn trace(&self, tracer_fn: &mut crate::object::TracerFn) {
81+
unsafe impl<T: crate::object::gc::Trace> crate::object::gc::Trace for ArgIterable<T> {
82+
fn trace(&self, tracer_fn: &mut crate::object::gc::TracerFn) {
8383
self.iterable.trace(tracer_fn)
8484
}
8585
}
@@ -199,8 +199,8 @@ impl TryFromObject for ArgMapping {
199199
pub struct ArgSequence<T = PyObjectRef>(Vec<T>);
200200

201201
#[cfg(feature = "gc_bacon")]
202-
unsafe impl<T: crate::object::Trace> crate::object::Trace for ArgSequence<T> {
203-
fn trace(&self, tracer_fn: &mut crate::object::TracerFn) {
202+
unsafe impl<T: crate::object::gc::Trace> crate::object::gc::Trace for ArgSequence<T> {
203+
fn trace(&self, tracer_fn: &mut crate::object::gc::TracerFn) {
204204
self.0.trace(tracer_fn);
205205
}
206206
}

0 commit comments

Comments
 (0)