1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

YJIT: fold the "asm_comments" feature into "disasm" (#6591)

Previously, enabling only "disasm" didn't actually build. Since these
two features are closely related and we don't really use one without the
other, let's simplify and merge the two features together.
This commit is contained in:
Alan Wu 2022-10-19 14:03:07 -04:00 committed by GitHub
parent bc939d2937
commit 5ca23caa20
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
Notes: git 2022-10-19 18:03:29 +00:00
Merged-By: maximecb <maximecb@ruby-lang.org>
7 changed files with 12 additions and 13 deletions

View file

@ -3754,12 +3754,12 @@ AS_CASE(["${YJIT_SUPPORT}"],
], ],
[dev], [ [dev], [
rb_rust_target_subdir=debug rb_rust_target_subdir=debug
CARGO_BUILD_ARGS='--features stats,disasm,asm_comments' CARGO_BUILD_ARGS='--features stats,disasm'
AC_DEFINE(RUBY_DEBUG, 1) AC_DEFINE(RUBY_DEBUG, 1)
], ],
[dev_nodebug], [ [dev_nodebug], [
rb_rust_target_subdir=dev_nodebug rb_rust_target_subdir=dev_nodebug
CARGO_BUILD_ARGS='--profile dev_nodebug --features stats,disasm,asm_comments' CARGO_BUILD_ARGS='--profile dev_nodebug --features stats,disasm'
], ],
[stats], [ [stats], [
rb_rust_target_subdir=stats rb_rust_target_subdir=stats

View file

@ -22,7 +22,6 @@ capstone = { version = "0.10.0", optional = true }
# For debugging, `make V=1` shows exact cargo invocation. # For debugging, `make V=1` shows exact cargo invocation.
disasm = ["capstone"] disasm = ["capstone"]
stats = [] stats = []
asm_comments = []
[profile.dev] [profile.dev]
opt-level = 0 opt-level = 0

View file

@ -8,7 +8,7 @@ use crate::backend::x86_64::JMP_PTR_BYTES;
use crate::backend::arm64::JMP_PTR_BYTES; use crate::backend::arm64::JMP_PTR_BYTES;
use crate::virtualmem::WriteError; use crate::virtualmem::WriteError;
#[cfg(feature = "asm_comments")] #[cfg(feature = "disasm")]
use std::collections::BTreeMap; use std::collections::BTreeMap;
use crate::codegen::CodegenGlobals; use crate::codegen::CodegenGlobals;
@ -69,7 +69,7 @@ pub struct CodeBlock {
label_refs: Vec<LabelRef>, label_refs: Vec<LabelRef>,
// Comments for assembly instructions, if that feature is enabled // Comments for assembly instructions, if that feature is enabled
#[cfg(feature = "asm_comments")] #[cfg(feature = "disasm")]
asm_comments: BTreeMap<usize, Vec<String>>, asm_comments: BTreeMap<usize, Vec<String>>,
// True for OutlinedCb // True for OutlinedCb
@ -101,7 +101,7 @@ impl CodeBlock {
label_addrs: Vec::new(), label_addrs: Vec::new(),
label_names: Vec::new(), label_names: Vec::new(),
label_refs: Vec::new(), label_refs: Vec::new(),
#[cfg(feature = "asm_comments")] #[cfg(feature = "disasm")]
asm_comments: BTreeMap::new(), asm_comments: BTreeMap::new(),
outlined, outlined,
dropped_bytes: false, dropped_bytes: false,
@ -239,7 +239,7 @@ impl CodeBlock {
/// Add an assembly comment if the feature is on. /// Add an assembly comment if the feature is on.
/// If not, this becomes an inline no-op. /// If not, this becomes an inline no-op.
#[cfg(feature = "asm_comments")] #[cfg(feature = "disasm")]
pub fn add_comment(&mut self, comment: &str) { pub fn add_comment(&mut self, comment: &str) {
let cur_ptr = self.get_write_ptr().into_usize(); let cur_ptr = self.get_write_ptr().into_usize();
@ -251,11 +251,11 @@ impl CodeBlock {
this_line_comments.push(comment.to_string()); this_line_comments.push(comment.to_string());
} }
} }
#[cfg(not(feature = "asm_comments"))] #[cfg(not(feature = "disasm"))]
#[inline] #[inline]
pub fn add_comment(&mut self, _: &str) {} pub fn add_comment(&mut self, _: &str) {}
#[cfg(feature = "asm_comments")] #[cfg(feature = "disasm")]
pub fn comments_at(&self, pos: usize) -> Option<&Vec<String>> { pub fn comments_at(&self, pos: usize) -> Option<&Vec<String>> {
self.asm_comments.get(&pos) self.asm_comments.get(&pos)
} }

View file

@ -413,7 +413,7 @@ fn basic_capstone_usage() -> std::result::Result<(), capstone::Error> {
} }
#[test] #[test]
#[cfg(feature = "asm_comments")] #[cfg(feature = "disasm")]
fn block_comments() { fn block_comments() {
let mut cb = super::CodeBlock::new_dummy(4096); let mut cb = super::CodeBlock::new_dummy(4096);

View file

@ -724,7 +724,7 @@ impl Assembler
match insn { match insn {
Insn::Comment(text) => { Insn::Comment(text) => {
if cfg!(feature = "asm_comments") { if cfg!(feature = "disasm") {
cb.add_comment(text); cb.add_comment(text);
} }
}, },

View file

@ -388,7 +388,7 @@ impl Assembler
match insn { match insn {
Insn::Comment(text) => { Insn::Comment(text) => {
if cfg!(feature = "asm_comments") { if cfg!(feature = "disasm") {
cb.add_comment(text); cb.add_comment(text);
} }
}, },

View file

@ -510,7 +510,7 @@ impl From<VALUE> for u16 {
} }
/// Produce a Ruby string from a Rust string slice /// Produce a Ruby string from a Rust string slice
#[cfg(feature = "asm_comments")] #[cfg(feature = "disasm")]
pub fn rust_str_to_ruby(str: &str) -> VALUE { pub fn rust_str_to_ruby(str: &str) -> VALUE {
unsafe { rb_utf8_str_new(str.as_ptr() as *const _, str.len() as i64) } unsafe { rb_utf8_str_new(str.as_ptr() as *const _, str.len() as i64) }
} }