mirror of
https://github.com/RustPython/RustPython.git
synced 2026-10-28 18:59:04 +08:00
Remove oparg builders (#7537)
This commit is contained in:
1 parent
844fdf3a8d
commit
dbf64f873f
2 files changed
+10
-98
No files matched your search
@@ -9150,20 +9150,14 @@ impl Compiler {
|
||||
/// Emit LOAD_ATTR for attribute access (method=false).
|
||||
/// Encodes: (name_idx << 1) | 0
|
||||
fn emit_load_attr(&mut self, name_idx: u32) {
|
||||
let encoded = LoadAttr::builder()
|
||||
.name_idx(name_idx)
|
||||
.is_method(false)
|
||||
.build();
|
||||
let encoded = LoadAttr::new(name_idx, false);
|
||||
self.emit_arg(encoded, |namei| Instruction::LoadAttr { namei })
|
||||
}
|
||||
|
||||
/// Emit LOAD_ATTR with method flag set (for method calls).
|
||||
/// Encodes: (name_idx << 1) | 1
|
||||
fn emit_load_attr_method(&mut self, name_idx: u32) {
|
||||
let encoded = LoadAttr::builder()
|
||||
.name_idx(name_idx)
|
||||
.is_method(true)
|
||||
.build();
|
||||
let encoded = LoadAttr::new(name_idx, true);
|
||||
self.emit_arg(encoded, |namei| Instruction::LoadAttr { namei })
|
||||
}
|
||||
|
||||
@@ -9177,44 +9171,28 @@ impl Compiler {
|
||||
/// Emit LOAD_SUPER_ATTR for 2-arg super().attr access.
|
||||
/// Encodes: (name_idx << 2) | 0b10 (method=0, class=1)
|
||||
fn emit_load_super_attr(&mut self, name_idx: u32) {
|
||||
let encoded = LoadSuperAttr::builder()
|
||||
.name_idx(name_idx)
|
||||
.is_load_method(false)
|
||||
.has_class(true)
|
||||
.build();
|
||||
let encoded = LoadSuperAttr::new(name_idx, false, true);
|
||||
self.emit_arg(encoded, |namei| Instruction::LoadSuperAttr { namei })
|
||||
}
|
||||
|
||||
/// Emit LOAD_SUPER_ATTR for 2-arg super().method() call.
|
||||
/// Encodes: (name_idx << 2) | 0b11 (method=1, class=1)
|
||||
fn emit_load_super_method(&mut self, name_idx: u32) {
|
||||
let encoded = LoadSuperAttr::builder()
|
||||
.name_idx(name_idx)
|
||||
.is_load_method(true)
|
||||
.has_class(true)
|
||||
.build();
|
||||
let encoded = LoadSuperAttr::new(name_idx, true, true);
|
||||
self.emit_arg(encoded, |namei| Instruction::LoadSuperAttr { namei })
|
||||
}
|
||||
|
||||
/// Emit LOAD_SUPER_ATTR for 0-arg super().attr access.
|
||||
/// Encodes: (name_idx << 2) | 0b00 (method=0, class=0)
|
||||
fn emit_load_zero_super_attr(&mut self, name_idx: u32) {
|
||||
let encoded = LoadSuperAttr::builder()
|
||||
.name_idx(name_idx)
|
||||
.is_load_method(false)
|
||||
.has_class(false)
|
||||
.build();
|
||||
let encoded = LoadSuperAttr::new(name_idx, false, false);
|
||||
self.emit_arg(encoded, |namei| Instruction::LoadSuperAttr { namei })
|
||||
}
|
||||
|
||||
/// Emit LOAD_SUPER_ATTR for 0-arg super().method() call.
|
||||
/// Encodes: (name_idx << 2) | 0b01 (method=1, class=0)
|
||||
fn emit_load_zero_super_method(&mut self, name_idx: u32) {
|
||||
let encoded = LoadSuperAttr::builder()
|
||||
.name_idx(name_idx)
|
||||
.is_load_method(true)
|
||||
.has_class(false)
|
||||
.build();
|
||||
let encoded = LoadSuperAttr::new(name_idx, true, false);
|
||||
self.emit_arg(encoded, |namei| Instruction::LoadSuperAttr { namei })
|
||||
}
|
||||
|
||||
|
||||
@@ -918,8 +918,8 @@ impl VarNums {
|
||||
|
||||
impl LoadAttr {
|
||||
#[must_use]
|
||||
pub fn builder() -> LoadAttrBuilder {
|
||||
LoadAttrBuilder::default()
|
||||
pub const fn new(name_idx: u32, is_method: bool) -> Self {
|
||||
Self::from_u32((name_idx << 1) | (is_method as u32))
|
||||
}
|
||||
|
||||
#[must_use]
|
||||
@@ -933,36 +933,10 @@ impl LoadAttr {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Default)]
|
||||
pub struct LoadAttrBuilder {
|
||||
name_idx: u32,
|
||||
is_method: bool,
|
||||
}
|
||||
|
||||
impl LoadAttrBuilder {
|
||||
#[must_use]
|
||||
pub const fn build(self) -> LoadAttr {
|
||||
let value = (self.name_idx << 1) | (self.is_method as u32);
|
||||
LoadAttr::from_u32(value)
|
||||
}
|
||||
|
||||
#[must_use]
|
||||
pub const fn name_idx(mut self, value: u32) -> Self {
|
||||
self.name_idx = value;
|
||||
self
|
||||
}
|
||||
|
||||
#[must_use]
|
||||
pub const fn is_method(mut self, value: bool) -> Self {
|
||||
self.is_method = value;
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
impl LoadSuperAttr {
|
||||
#[must_use]
|
||||
pub fn builder() -> LoadSuperAttrBuilder {
|
||||
LoadSuperAttrBuilder::default()
|
||||
pub const fn new(name_idx: u32, is_load_method: bool, has_class: bool) -> Self {
|
||||
Self::from_u32((name_idx << 2) | (is_load_method as u32) | ((has_class as u32) << 1))
|
||||
}
|
||||
|
||||
#[must_use]
|
||||
@@ -980,43 +954,3 @@ impl LoadSuperAttr {
|
||||
(self.0 & 2) == 2
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Default)]
|
||||
pub struct LoadSuperAttrBuilder {
|
||||
name_idx: u32,
|
||||
is_load_method: bool,
|
||||
has_class: bool,
|
||||
}
|
||||
|
||||
impl LoadSuperAttrBuilder {
|
||||
#[must_use]
|
||||
pub const fn build(self) -> LoadSuperAttr {
|
||||
let value =
|
||||
(self.name_idx << 2) | ((self.has_class as u32) << 1) | (self.is_load_method as u32);
|
||||
LoadSuperAttr::from_u32(value)
|
||||
}
|
||||
|
||||
#[must_use]
|
||||
pub const fn name_idx(mut self, value: u32) -> Self {
|
||||
self.name_idx = value;
|
||||
self
|
||||
}
|
||||
|
||||
#[must_use]
|
||||
pub const fn is_load_method(mut self, value: bool) -> Self {
|
||||
self.is_load_method = value;
|
||||
self
|
||||
}
|
||||
|
||||
#[must_use]
|
||||
pub const fn has_class(mut self, value: bool) -> Self {
|
||||
self.has_class = value;
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
impl From<LoadSuperAttrBuilder> for LoadSuperAttr {
|
||||
fn from(builder: LoadSuperAttrBuilder) -> Self {
|
||||
builder.build()
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user