refactor(compiler): remove simple expression count helpers

This commit is contained in:
爱特每羊队
2026-08-05 01:10:03 +08:00
parent 3ce7fd587d
commit faa326c039
11 changed files with 1 additions and 193 deletions
@@ -3,27 +3,7 @@ use oxide_bytecode::{
module::Constant,
opcode::{self, OpCode},
};
use oxide_parser::Expression;
impl Compiler {
pub(crate) fn count_array_expression(&self, expr: &Expression, ctx: &mut CompileCtx) {
let Expression::ArrayExpression(arr) = expr else {
return;
};
ctx.alloc_reg();
ctx.projected_pc += 1;
let elem_checkpoint = ctx.reg_checkpoint();
for elem in &arr.elements {
if let Some(e) = elem.as_expression() {
self.count_expression(e, ctx);
ctx.alloc_reg();
ctx.projected_pc += 1;
ctx.projected_pc += 1;
ctx.restore_reg_checkpoint(elem_checkpoint);
}
}
}
pub(crate) fn emit_array_expression(
&self, arr: &oxide_parser::ArrayExpression, ctx: &mut CompileCtx,
) -> Result<u8, String> {
@@ -5,14 +5,6 @@ mod array;
mod object_literal;
impl Compiler {
pub(crate) fn count_object_domain(&self, expr: &Expression, ctx: &mut CompileCtx) {
match expr {
Expression::ObjectExpression(_) => self.count_object_expression(expr, ctx),
Expression::ArrayExpression(_) => self.count_array_expression(expr, ctx),
_ => {}
}
}
pub(crate) fn emit_object_domain(&self, expr: &Expression, ctx: &mut CompileCtx) -> Result<u8, String> {
match expr {
Expression::ObjectExpression(obj) => self.emit_object_expression(obj, ctx),
@@ -6,30 +6,6 @@ use oxide_bytecode::{
use oxide_parser::{Expression, ObjectPropertyKind, PropertyKey, PropertyKind};
impl Compiler {
pub(crate) fn count_object_expression(&self, expr: &Expression, ctx: &mut CompileCtx) {
let Expression::ObjectExpression(obj) = expr else {
return;
};
ctx.alloc_reg();
ctx.projected_pc += 1;
let prop_checkpoint = ctx.reg_checkpoint();
for prop in &obj.properties {
if let ObjectPropertyKind::ObjectProperty(p) = prop {
if matches!(p.kind, PropertyKind::Get | PropertyKind::Set) {
self.count_expression(&p.value, ctx);
ctx.count_load_const();
ctx.count_define_accessor();
} else {
ctx.alloc_reg();
ctx.projected_pc += 1;
self.count_expression(&p.value, ctx);
ctx.projected_pc += 1;
}
ctx.restore_reg_checkpoint(prop_checkpoint);
}
}
}
pub(crate) fn emit_object_expression(
&self, obj: &oxide_parser::ObjectExpression, ctx: &mut CompileCtx,
) -> Result<u8, String> {