From 59afe010cdf2ad7802001cacfd08b436aded8f35 Mon Sep 17 00:00:00 2001 From: pjh456 <147148383@qq.com> Date: Mon, 5 Oct 2026 08:51:57 +0000 Subject: [PATCH] =?UTF-8?q?perf:=20=E5=AE=9E=E5=8F=82=E6=89=93=E5=8C=85?= =?UTF-8?q?=E7=BC=93=E5=86=B2=E5=9B=9E=E9=80=80=20Vec=EF=BC=88A/B=20?= =?UTF-8?q?=E5=AE=9E=E6=B5=8B=E6=97=A0=E5=8F=AF=E6=B5=8B=E6=94=B6=E7=9B=8A?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cargo.lock | 36 +++++++++++++++++----------------- Cargo.toml | 2 +- crates/oxide_vm/src/vm/call.rs | 8 ++------ 3 files changed, 21 insertions(+), 25 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c3d9b133..23e8b06c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1095,7 +1095,7 @@ dependencies = [ [[package]] name = "oxide_builtins" -version = "0.8.2" +version = "0.8.3" dependencies = [ "chrono", "fast-float", @@ -1120,7 +1120,7 @@ dependencies = [ [[package]] name = "oxide_bytecode" -version = "0.8.2" +version = "0.8.3" dependencies = [ "num-bigint", "oxide_log", @@ -1128,7 +1128,7 @@ dependencies = [ [[package]] name = "oxide_cfg" -version = "0.8.2" +version = "0.8.3" dependencies = [ "oxide_bytecode", "oxide_emit", @@ -1139,7 +1139,7 @@ dependencies = [ [[package]] name = "oxide_cli" -version = "0.8.2" +version = "0.8.3" dependencies = [ "ansi_term", "bumpalo", @@ -1159,7 +1159,7 @@ dependencies = [ [[package]] name = "oxide_code_cache" -version = "0.8.2" +version = "0.8.3" dependencies = [ "lru", "oxide_bytecode", @@ -1168,7 +1168,7 @@ dependencies = [ [[package]] name = "oxide_compiler" -version = "0.8.2" +version = "0.8.3" dependencies = [ "oxide_bytecode", "oxide_cfg", @@ -1187,7 +1187,7 @@ dependencies = [ [[package]] name = "oxide_dce" -version = "0.8.2" +version = "0.8.3" dependencies = [ "oxide_bytecode", "oxide_cfg", @@ -1201,7 +1201,7 @@ dependencies = [ [[package]] name = "oxide_emit" -version = "0.8.2" +version = "0.8.3" dependencies = [ "num-bigint", "oxc_allocator", @@ -1216,7 +1216,7 @@ dependencies = [ [[package]] name = "oxide_ir" -version = "0.8.2" +version = "0.8.3" dependencies = [ "oxide_bytecode", "oxide_log", @@ -1225,7 +1225,7 @@ dependencies = [ [[package]] name = "oxide_kernel" -version = "0.8.2" +version = "0.8.3" dependencies = [ "bumpalo", "dashmap", @@ -1240,7 +1240,7 @@ dependencies = [ [[package]] name = "oxide_liveness" -version = "0.8.2" +version = "0.8.3" dependencies = [ "oxide_bytecode", "oxide_cfg", @@ -1252,7 +1252,7 @@ dependencies = [ [[package]] name = "oxide_log" -version = "0.8.2" +version = "0.8.3" dependencies = [ "tracing", "tracing-appender", @@ -1261,7 +1261,7 @@ dependencies = [ [[package]] name = "oxide_parser" -version = "0.8.2" +version = "0.8.3" dependencies = [ "oxc_allocator", "oxc_ast", @@ -1276,7 +1276,7 @@ dependencies = [ [[package]] name = "oxide_regalloc" -version = "0.8.2" +version = "0.8.3" dependencies = [ "oxide_bytecode", "oxide_cfg", @@ -1292,7 +1292,7 @@ dependencies = [ [[package]] name = "oxide_runtime_api" -version = "0.8.2" +version = "0.8.3" dependencies = [ "num-bigint", "num-traits", @@ -1304,7 +1304,7 @@ dependencies = [ [[package]] name = "oxide_test262" -version = "0.8.2" +version = "0.8.3" dependencies = [ "oxide_bytecode", "oxide_compiler", @@ -1321,7 +1321,7 @@ dependencies = [ [[package]] name = "oxide_types" -version = "0.8.2" +version = "0.8.3" dependencies = [ "bumpalo", "hashbrown 0.14.5", @@ -1333,7 +1333,7 @@ dependencies = [ [[package]] name = "oxide_vm" -version = "0.8.2" +version = "0.8.3" dependencies = [ "bumpalo", "chrono", diff --git a/Cargo.toml b/Cargo.toml index 86fd5536..c6f8d450 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,7 +22,7 @@ members = [ ] [workspace.package] -version = "0.8.2" +version = "0.8.3" edition = "2021" license = "MIT" rust-version = "1.80" diff --git a/crates/oxide_vm/src/vm/call.rs b/crates/oxide_vm/src/vm/call.rs index dd7f9f97..6aa8c2c8 100644 --- a/crates/oxide_vm/src/vm/call.rs +++ b/crates/oxide_vm/src/vm/call.rs @@ -6,7 +6,6 @@ use std::sync::Arc; use oxide_runtime_api::NativeResult; use oxide_types::object::{Cell, JsObject}; use oxide_types::value::JsValue; -use smallvec::SmallVec; use super::frames::{CallFrame, FrameArgs, FrameContinuation}; use super::{native_fn_ptr_to_fn, Vm}; @@ -14,14 +13,11 @@ use crate::native::NativeFn; use crate::{vm_debug, vm_trace}; impl Vm { - fn pack_sync_native_call_args( - &mut self, receiver: JsValue, callee: JsValue, args: &[JsValue], - ) -> SmallVec<[u8; 256]> { + fn pack_sync_native_call_args(&mut self, receiver: JsValue, callee: JsValue, args: &[JsValue]) -> Vec { self.regs[253] = receiver; self.regs[254] = callee; - // 实参寄存器号列表容量恒 ≤ 254(253 实参 + receiver),栈内缓冲免每次 native 调用堆分配。 - let mut arg_regs = SmallVec::new(); + let mut arg_regs = Vec::with_capacity(args.len() + 1); arg_regs.push(253); for (idx, arg) in args.iter().enumerate() { let reg = (Self::SYNC_NATIVE_ARG_BASE + idx) as u8;