upgrade rustyline

This commit is contained in:
Mark Thom
2021-11-28 20:36:09 -07:00
parent 529c401eee
commit 1a86ad5cec
4 changed files with 144 additions and 123 deletions

View File

@@ -373,51 +373,42 @@ impl Arena {
unsafe fn drop_slab_in_place(value: &mut AllocSlab) {
match value.header.tag() {
ArenaHeaderTag::Integer => {
ptr::drop_in_place(value.payload_offset() as *mut Integer);
ptr::drop_in_place(value.payload_offset::<Integer>());
}
ArenaHeaderTag::Rational => {
ptr::drop_in_place(value.payload_offset() as *mut Rational);
ptr::drop_in_place(value.payload_offset::<Rational>());
}
ArenaHeaderTag::InputFileStream => {
ptr::drop_in_place(value.payload_offset() as *mut InputFileStream);
ptr::drop_in_place(value.payload_offset::<InputFileStream>());
}
ArenaHeaderTag::OutputFileStream => {
ptr::drop_in_place(value.payload_offset() as *mut OutputFileStream);
ptr::drop_in_place(value.payload_offset::<OutputFileStream>());
}
ArenaHeaderTag::NamedTcpStream => {
ptr::drop_in_place(value.payload_offset() as *mut NamedTcpStream);
ptr::drop_in_place(value.payload_offset::<NamedTcpStream>());
}
ArenaHeaderTag::NamedTlsStream => {
ptr::drop_in_place(value.payload_offset() as *mut NamedTlsStream);
ptr::drop_in_place(value.payload_offset::<NamedTlsStream>());
}
// ArenaHeaderTag::PausedPrologStream => {
// // idea: PausedPrologStream with only the buffer of unread characters.
// // no stream to be wrapped, no nuttin'.
// ptr::drop_in_place(value.payload_offset() as *mut PausedPrologStream);
// }
ArenaHeaderTag::ReadlineStream => {
ptr::drop_in_place(value.payload_offset() as *mut ReadlineStream);
ptr::drop_in_place(value.payload_offset::<ReadlineStream>());
}
ArenaHeaderTag::StaticStringStream => {
ptr::drop_in_place(value.payload_offset() as *mut StaticStringStream);
ptr::drop_in_place(value.payload_offset::<StaticStringStream>());
}
ArenaHeaderTag::ByteStream => {
ptr::drop_in_place(value.payload_offset() as *mut ByteStream);
ptr::drop_in_place(value.payload_offset::<ByteStream>());
}
ArenaHeaderTag::OssifiedOpDir => {
ptr::drop_in_place(
mem::transmute::<_, *mut OssifiedOpDir>(value.payload_offset())
);
ptr::drop_in_place(value.payload_offset::<OssifiedOpDir>());
}
ArenaHeaderTag::LiveLoadState | ArenaHeaderTag::InactiveLoadState => {
ptr::drop_in_place(
mem::transmute::<_, *mut LiveLoadState>(value.payload_offset())
);
ptr::drop_in_place(value.payload_offset::<LiveLoadState>());
}
ArenaHeaderTag::Dropped => {
}
ArenaHeaderTag::TcpListener => {
ptr::drop_in_place(value.payload_offset() as *mut TcpListener);
ptr::drop_in_place(value.payload_offset::<TcpListener>());
}
ArenaHeaderTag::F64 | ArenaHeaderTag::StandardOutputStream |
ArenaHeaderTag::StandardErrorStream | ArenaHeaderTag::NullStream => {
@@ -458,10 +449,10 @@ impl AllocSlab {
self.header.size() as usize + mem::size_of::<AllocSlab>()
}
fn payload_offset(&self) -> *const u8 {
fn payload_offset<T>(&self) -> *mut T {
let mut ptr = (self as *const AllocSlab) as usize;
ptr += mem::size_of::<AllocSlab>();
ptr as *const u8
ptr as *mut T
}
}

View File

@@ -237,11 +237,6 @@ impl Write for NamedTlsStream {
}
}
/*
#[derive(Debug)]
pub struct NullStream {}
*/
#[derive(Debug)]
pub struct StandardOutputStream {}
@@ -375,65 +370,6 @@ macro_rules! arena_allocated_impl_for_stream {
};
}
/*
pub mod testing {
use super::PausedPrologStream;
impl PausedPrologStream {
#[allow(dead_code)]
pub fn write_test_input(&mut self, string: &str) {
self.bytes.extend(string.as_bytes().iter().rev());
}
}
}
*/
/*
impl ArenaAllocated for PausedPrologStream {
type PtrToAllocated = TypedArenaPtr<PausedPrologStream>;
#[inline]
fn tag() -> ArenaHeaderTag {
ArenaHeaderTag::PausedPrologStream
}
#[inline]
fn size(&self) -> usize {
mem::size_of::<PausedPrologStream>()
}
#[inline]
fn copy_to_arena(self, dst: *mut Self) -> Self::PtrToAllocated {
unsafe {
ptr::write(dst, self);
TypedArenaPtr::new(dst as *mut Self)
}
}
}
#[derive(Debug)]
pub struct PausedPrologStream {
bytes: Vec<u8>,
paused_stream: Stream,
}
impl PausedPrologStream {
#[inline]
pub fn new() -> Self {
PausedPrologStream {
bytes: vec![],
paused_stream: Stream::Null(StreamOptions::default()),
}
}
}
impl Read for PausedPrologStream {
#[inline]
fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
self.paused_stream.read(buf)
}
}
*/
arena_allocated_impl_for_stream!(CharReader<ByteStream>, ByteStream);
arena_allocated_impl_for_stream!(CharReader<InputFileStream>, InputFileStream);
arena_allocated_impl_for_stream!(OutputFileStream, OutputFileStream);
@@ -593,21 +529,6 @@ impl Stream {
}
}
/*
fn unpause_stream(&mut self) {
let stream_inst = match self {
Stream::PausedProlog(paused) if paused.bytes.is_empty() => {
mem::replace(&mut paused.paused_stream, Stream::Null(StreamOptions::default()))
}
_ => {
return;
}
};
*self = stream_inst;
}
*/
#[inline]
pub(crate) fn add_lines_read(&mut self, incr_num_lines_read: usize) {
match self {