summaryrefslogtreecommitdiff
path: root/core/shared_queue.rs
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2019-06-14 13:58:20 -0400
committerRyan Dahl <ry@tinyclouds.org>2019-06-14 13:56:36 -0700
commit1361e302234b17ab8079107b134dfd0ddf288439 (patch)
treea38ce903ddbd89ee2dfd437bd8f984cb1d85695b /core/shared_queue.rs
parent3dff147d0ca1a2cd8d264d20a178d71cb38b1c4e (diff)
Revert "Refactor dispatch handling (#2452)"
Due to performance regression: https://github.com/denoland/deno/commit/dc60fe9f300043f191286ef804a365e16e455f87#commitcomment-33943711 This reverts commit dc60fe9f300043f191286ef804a365e16e455f87.
Diffstat (limited to 'core/shared_queue.rs')
-rw-r--r--core/shared_queue.rs45
1 files changed, 21 insertions, 24 deletions
diff --git a/core/shared_queue.rs b/core/shared_queue.rs
index 1460fb172..c33a37b90 100644
--- a/core/shared_queue.rs
+++ b/core/shared_queue.rs
@@ -17,7 +17,6 @@ SharedQueue Binary Layout
*/
use crate::libdeno::deno_buf;
-use libc::c_int;
const MAX_RECORDS: usize = 100;
/// Total number of records added.
@@ -153,19 +152,17 @@ impl SharedQueue {
Some(&self.bytes[off..end])
}
- pub fn push(&mut self, promise_id: c_int, record: &[u8]) -> bool {
+ pub fn push(&mut self, record: &[u8]) -> bool {
let off = self.head();
- let end = off + record.len() + 4;
+ let end = off + record.len();
let index = self.num_records();
if end > self.bytes.len() || index >= MAX_RECORDS {
debug!("WARNING the sharedQueue overflowed");
return false;
}
self.set_end(index, end);
- assert_eq!(end - off, record.len() + 4);
- let pid_bytes = promise_id.to_be_bytes();
- self.bytes[off..off + 4].copy_from_slice(&pid_bytes);
- self.bytes[off + 4..end].copy_from_slice(record);
+ assert_eq!(end - off, record.len());
+ self.bytes[off..end].copy_from_slice(record);
let u32_slice = self.as_u32_slice_mut();
u32_slice[INDEX_NUM_RECORDS] += 1;
u32_slice[INDEX_HEAD] = end as u32;
@@ -192,30 +189,30 @@ mod tests {
assert!(h > 0);
let r = vec![1u8, 2, 3, 4, 5].into_boxed_slice();
- let len = r.len() + h + 4;
- assert!(q.push(1, &r));
+ let len = r.len() + h;
+ assert!(q.push(&r));
assert_eq!(q.head(), len);
let r = vec![6, 7].into_boxed_slice();
- assert!(q.push(1, &r));
+ assert!(q.push(&r));
let r = vec![8, 9, 10, 11].into_boxed_slice();
- assert!(q.push(1, &r));
+ assert!(q.push(&r));
assert_eq!(q.num_records(), 3);
assert_eq!(q.size(), 3);
let r = q.shift().unwrap();
- assert_eq!(&r[4..], vec![1, 2, 3, 4, 5].as_slice());
+ assert_eq!(r, vec![1, 2, 3, 4, 5].as_slice());
assert_eq!(q.num_records(), 3);
assert_eq!(q.size(), 2);
let r = q.shift().unwrap();
- assert_eq!(&r[4..], vec![6, 7].as_slice());
+ assert_eq!(r, vec![6, 7].as_slice());
assert_eq!(q.num_records(), 3);
assert_eq!(q.size(), 1);
let r = q.shift().unwrap();
- assert_eq!(&r[4..], vec![8, 9, 10, 11].as_slice());
+ assert_eq!(r, vec![8, 9, 10, 11].as_slice());
assert_eq!(q.num_records(), 0);
assert_eq!(q.size(), 0);
@@ -235,19 +232,19 @@ mod tests {
#[test]
fn overflow() {
let mut q = SharedQueue::new(RECOMMENDED_SIZE);
- assert!(q.push(1, &alloc_buf(RECOMMENDED_SIZE - 1 - (4 * 2))));
+ assert!(q.push(&alloc_buf(RECOMMENDED_SIZE - 1)));
assert_eq!(q.size(), 1);
- assert!(!q.push(1, &alloc_buf(2)));
+ assert!(!q.push(&alloc_buf(2)));
assert_eq!(q.size(), 1);
- assert!(q.push(1, &alloc_buf(1)));
+ assert!(q.push(&alloc_buf(1)));
assert_eq!(q.size(), 2);
- assert_eq!(q.shift().unwrap().len(), RECOMMENDED_SIZE - 1 - 4);
+ assert_eq!(q.shift().unwrap().len(), RECOMMENDED_SIZE - 1);
assert_eq!(q.size(), 1);
- assert!(!q.push(1, &alloc_buf(1)));
+ assert!(!q.push(&alloc_buf(1)));
- assert_eq!(q.shift().unwrap().len(), 1 + 4);
+ assert_eq!(q.shift().unwrap().len(), 1);
assert_eq!(q.size(), 0);
}
@@ -255,11 +252,11 @@ mod tests {
fn full_records() {
let mut q = SharedQueue::new(RECOMMENDED_SIZE);
for _ in 0..MAX_RECORDS {
- assert!(q.push(1, &alloc_buf(1)))
+ assert!(q.push(&alloc_buf(1)))
}
- assert_eq!(q.push(1, &alloc_buf(1)), false);
+ assert_eq!(q.push(&alloc_buf(1)), false);
// Even if we shift one off, we still cannot push a new record.
- assert_eq!(q.shift().unwrap().len(), 1 + 4);
- assert_eq!(q.push(1, &alloc_buf(1)), false);
+ assert_eq!(q.shift().unwrap().len(), 1);
+ assert_eq!(q.push(&alloc_buf(1)), false);
}
}