summaryrefslogtreecommitdiff
path: root/yjit/src
diff options
context:
space:
mode:
authorwhtsht <[email protected]>2024-10-01 08:00:54 +0900
committerGitHub <[email protected]>2024-09-30 16:00:54 -0700
commitaf63b4f8b7a659ab78a75af97416c042ca357a3b (patch)
tree6e8f0f8f9bacb193dc582c6ed1ca655526af2b26 /yjit/src
parent30507a4aed83ee0712fbe84875b1d9bec1f1dd70 (diff)
Return an Iterator Instead of a Vector in `addrs_to_pages` Method (#11725)
* Returning an iterator instead of a vec * Avoid changing the meaning of end_page --------- Co-authored-by: Takashi Kokubun <[email protected]>
Notes
Notes: Merged-By: k0kubun <[email protected]>
Diffstat (limited to 'yjit/src')
-rw-r--r--yjit/src/asm/mod.rs6
-rw-r--r--yjit/src/codegen.rs2
2 files changed, 4 insertions, 4 deletions
diff --git a/yjit/src/asm/mod.rs b/yjit/src/asm/mod.rs
index bd56074b96..a113a41c73 100644
--- a/yjit/src/asm/mod.rs
+++ b/yjit/src/asm/mod.rs
@@ -432,7 +432,7 @@ impl CodeBlock {
}
/// Convert an address range to memory page indexes against a num_pages()-sized array.
- pub fn addrs_to_pages(&self, start_addr: CodePtr, end_addr: CodePtr) -> Vec<usize> {
+ pub fn addrs_to_pages(&self, start_addr: CodePtr, end_addr: CodePtr) -> impl Iterator<Item = usize> {
let mem_start = self.mem_block.borrow().start_ptr().raw_addr(self);
let mem_end = self.mem_block.borrow().mapped_end_ptr().raw_addr(self);
assert!(mem_start <= start_addr.raw_addr(self));
@@ -441,12 +441,12 @@ impl CodeBlock {
// Ignore empty code ranges
if start_addr == end_addr {
- return vec![];
+ return (0..0).into_iter();
}
let start_page = (start_addr.raw_addr(self) - mem_start) / self.page_size;
let end_page = (end_addr.raw_addr(self) - mem_start - 1) / self.page_size;
- (start_page..=end_page).collect() // TODO: consider returning an iterator
+ (start_page..end_page + 1).into_iter()
}
/// Get a (possibly dangling) direct pointer to the current write position
diff --git a/yjit/src/codegen.rs b/yjit/src/codegen.rs
index a105ab9791..d3aac992aa 100644
--- a/yjit/src/codegen.rs
+++ b/yjit/src/codegen.rs
@@ -10563,7 +10563,7 @@ impl CodegenGlobals {
let cfunc_exit_code = gen_full_cfunc_return(&mut ocb).unwrap();
let ocb_end_addr = ocb.unwrap().get_write_ptr();
- let ocb_pages = ocb.unwrap().addrs_to_pages(ocb_start_addr, ocb_end_addr);
+ let ocb_pages = ocb.unwrap().addrs_to_pages(ocb_start_addr, ocb_end_addr).collect();
// Mark all code memory as executable
cb.mark_all_executable();