Skip to content

Commit 959b088

Browse files
authored
Remove oparg builders (RustPython#7537)
1 parent 1c39fdb commit 959b088

File tree

2 files changed

+10
-98
lines changed

2 files changed

+10
-98
lines changed

crates/codegen/src/compile.rs

Lines changed: 6 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -9150,20 +9150,14 @@ impl Compiler {
91509150
/// Emit LOAD_ATTR for attribute access (method=false).
91519151
/// Encodes: (name_idx << 1) | 0
91529152
fn emit_load_attr(&mut self, name_idx: u32) {
9153-
let encoded = LoadAttr::builder()
9154-
.name_idx(name_idx)
9155-
.is_method(false)
9156-
.build();
9153+
let encoded = LoadAttr::new(name_idx, false);
91579154
self.emit_arg(encoded, |namei| Instruction::LoadAttr { namei })
91589155
}
91599156

91609157
/// Emit LOAD_ATTR with method flag set (for method calls).
91619158
/// Encodes: (name_idx << 1) | 1
91629159
fn emit_load_attr_method(&mut self, name_idx: u32) {
9163-
let encoded = LoadAttr::builder()
9164-
.name_idx(name_idx)
9165-
.is_method(true)
9166-
.build();
9160+
let encoded = LoadAttr::new(name_idx, true);
91679161
self.emit_arg(encoded, |namei| Instruction::LoadAttr { namei })
91689162
}
91699163

@@ -9177,44 +9171,28 @@ impl Compiler {
91779171
/// Emit LOAD_SUPER_ATTR for 2-arg super().attr access.
91789172
/// Encodes: (name_idx << 2) | 0b10 (method=0, class=1)
91799173
fn emit_load_super_attr(&mut self, name_idx: u32) {
9180-
let encoded = LoadSuperAttr::builder()
9181-
.name_idx(name_idx)
9182-
.is_load_method(false)
9183-
.has_class(true)
9184-
.build();
9174+
let encoded = LoadSuperAttr::new(name_idx, false, true);
91859175
self.emit_arg(encoded, |namei| Instruction::LoadSuperAttr { namei })
91869176
}
91879177

91889178
/// Emit LOAD_SUPER_ATTR for 2-arg super().method() call.
91899179
/// Encodes: (name_idx << 2) | 0b11 (method=1, class=1)
91909180
fn emit_load_super_method(&mut self, name_idx: u32) {
9191-
let encoded = LoadSuperAttr::builder()
9192-
.name_idx(name_idx)
9193-
.is_load_method(true)
9194-
.has_class(true)
9195-
.build();
9181+
let encoded = LoadSuperAttr::new(name_idx, true, true);
91969182
self.emit_arg(encoded, |namei| Instruction::LoadSuperAttr { namei })
91979183
}
91989184

91999185
/// Emit LOAD_SUPER_ATTR for 0-arg super().attr access.
92009186
/// Encodes: (name_idx << 2) | 0b00 (method=0, class=0)
92019187
fn emit_load_zero_super_attr(&mut self, name_idx: u32) {
9202-
let encoded = LoadSuperAttr::builder()
9203-
.name_idx(name_idx)
9204-
.is_load_method(false)
9205-
.has_class(false)
9206-
.build();
9188+
let encoded = LoadSuperAttr::new(name_idx, false, false);
92079189
self.emit_arg(encoded, |namei| Instruction::LoadSuperAttr { namei })
92089190
}
92099191

92109192
/// Emit LOAD_SUPER_ATTR for 0-arg super().method() call.
92119193
/// Encodes: (name_idx << 2) | 0b01 (method=1, class=0)
92129194
fn emit_load_zero_super_method(&mut self, name_idx: u32) {
9213-
let encoded = LoadSuperAttr::builder()
9214-
.name_idx(name_idx)
9215-
.is_load_method(true)
9216-
.has_class(false)
9217-
.build();
9195+
let encoded = LoadSuperAttr::new(name_idx, true, false);
92189196
self.emit_arg(encoded, |namei| Instruction::LoadSuperAttr { namei })
92199197
}
92209198

crates/compiler-core/src/bytecode/oparg.rs

Lines changed: 4 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -918,8 +918,8 @@ impl VarNums {
918918

919919
impl LoadAttr {
920920
#[must_use]
921-
pub fn builder() -> LoadAttrBuilder {
922-
LoadAttrBuilder::default()
921+
pub const fn new(name_idx: u32, is_method: bool) -> Self {
922+
Self::from_u32((name_idx << 1) | (is_method as u32))
923923
}
924924

925925
#[must_use]
@@ -933,36 +933,10 @@ impl LoadAttr {
933933
}
934934
}
935935

936-
#[derive(Clone, Copy, Default)]
937-
pub struct LoadAttrBuilder {
938-
name_idx: u32,
939-
is_method: bool,
940-
}
941-
942-
impl LoadAttrBuilder {
943-
#[must_use]
944-
pub const fn build(self) -> LoadAttr {
945-
let value = (self.name_idx << 1) | (self.is_method as u32);
946-
LoadAttr::from_u32(value)
947-
}
948-
949-
#[must_use]
950-
pub const fn name_idx(mut self, value: u32) -> Self {
951-
self.name_idx = value;
952-
self
953-
}
954-
955-
#[must_use]
956-
pub const fn is_method(mut self, value: bool) -> Self {
957-
self.is_method = value;
958-
self
959-
}
960-
}
961-
962936
impl LoadSuperAttr {
963937
#[must_use]
964-
pub fn builder() -> LoadSuperAttrBuilder {
965-
LoadSuperAttrBuilder::default()
938+
pub const fn new(name_idx: u32, is_load_method: bool, has_class: bool) -> Self {
939+
Self::from_u32((name_idx << 2) | (is_load_method as u32) | ((has_class as u32) << 1))
966940
}
967941

968942
#[must_use]
@@ -980,43 +954,3 @@ impl LoadSuperAttr {
980954
(self.0 & 2) == 2
981955
}
982956
}
983-
984-
#[derive(Clone, Copy, Default)]
985-
pub struct LoadSuperAttrBuilder {
986-
name_idx: u32,
987-
is_load_method: bool,
988-
has_class: bool,
989-
}
990-
991-
impl LoadSuperAttrBuilder {
992-
#[must_use]
993-
pub const fn build(self) -> LoadSuperAttr {
994-
let value =
995-
(self.name_idx << 2) | ((self.has_class as u32) << 1) | (self.is_load_method as u32);
996-
LoadSuperAttr::from_u32(value)
997-
}
998-
999-
#[must_use]
1000-
pub const fn name_idx(mut self, value: u32) -> Self {
1001-
self.name_idx = value;
1002-
self
1003-
}
1004-
1005-
#[must_use]
1006-
pub const fn is_load_method(mut self, value: bool) -> Self {
1007-
self.is_load_method = value;
1008-
self
1009-
}
1010-
1011-
#[must_use]
1012-
pub const fn has_class(mut self, value: bool) -> Self {
1013-
self.has_class = value;
1014-
self
1015-
}
1016-
}
1017-
1018-
impl From<LoadSuperAttrBuilder> for LoadSuperAttr {
1019-
fn from(builder: LoadSuperAttrBuilder) -> Self {
1020-
builder.build()
1021-
}
1022-
}

0 commit comments

Comments
 (0)