core/syntax: Staging fixes
This commit is contained in:
parent
4e45d7111c
commit
2f46b763da
2 changed files with 2 additions and 44 deletions
|
@ -143,8 +143,8 @@ pub fn BufferHeader() -> BufferHeader {
|
||||||
// This is for protocols to associate extra data to thread around.
|
// This is for protocols to associate extra data to thread around.
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
#[cfg(stage0)]
|
#[cfg(stage0)]
|
||||||
#[cfg(stage1)]
|
|
||||||
type Buffer<T> = { header: BufferHeader, data: T };
|
type Buffer<T> = { header: BufferHeader, data: T };
|
||||||
|
#[cfg(stage1)]
|
||||||
#[cfg(stage2)]
|
#[cfg(stage2)]
|
||||||
pub struct Buffer<T> {
|
pub struct Buffer<T> {
|
||||||
header: BufferHeader,
|
header: BufferHeader,
|
||||||
|
@ -258,22 +258,8 @@ fn unibuffer<T: Owned>() -> ~Buffer<Packet<T>> {
|
||||||
}
|
}
|
||||||
move b
|
move b
|
||||||
}
|
}
|
||||||
#[cfg(stage1)]
|
|
||||||
fn unibuffer<T>() -> ~Buffer<Packet<T>> {
|
|
||||||
let b = ~{
|
|
||||||
header: BufferHeader(),
|
|
||||||
data: Packet {
|
|
||||||
header: PacketHeader(),
|
|
||||||
payload: None,
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
unsafe {
|
|
||||||
b.data.header.buffer = reinterpret_cast(&b);
|
|
||||||
}
|
|
||||||
move b
|
|
||||||
}
|
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
|
#[cfg(stage1)]
|
||||||
#[cfg(stage2)]
|
#[cfg(stage2)]
|
||||||
fn unibuffer<T>() -> ~Buffer<Packet<T>> {
|
fn unibuffer<T>() -> ~Buffer<Packet<T>> {
|
||||||
let b = ~Buffer {
|
let b = ~Buffer {
|
||||||
|
|
|
@ -355,34 +355,6 @@ pub impl protocol: gen_init {
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(stage0)]
|
|
||||||
fn gen_init_bounded(ext_cx: ext_ctxt) -> @ast::expr {
|
|
||||||
debug!("gen_init_bounded");
|
|
||||||
let buffer_fields = self.gen_buffer_init(ext_cx);
|
|
||||||
let buffer = quote_expr!(~{
|
|
||||||
header: ::pipes::BufferHeader(),
|
|
||||||
data: $buffer_fields,
|
|
||||||
});
|
|
||||||
|
|
||||||
let entangle_body = ext_cx.block_expr(
|
|
||||||
ext_cx.block(
|
|
||||||
self.states.map_to_vec(
|
|
||||||
|s| ext_cx.parse_stmt(
|
|
||||||
fmt!("data.%s.set_buffer(buffer)",
|
|
||||||
s.name))),
|
|
||||||
ext_cx.parse_expr(
|
|
||||||
fmt!("::ptr::addr_of(&(data.%s))",
|
|
||||||
self.states[0].name))));
|
|
||||||
|
|
||||||
quote_expr!({
|
|
||||||
let buffer = $buffer;
|
|
||||||
do ::pipes::entangle_buffer(move buffer) |buffer, data| {
|
|
||||||
$entangle_body
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
#[cfg(stage1)]
|
|
||||||
#[cfg(stage2)]
|
|
||||||
fn gen_init_bounded(ext_cx: ext_ctxt) -> @ast::expr {
|
fn gen_init_bounded(ext_cx: ext_ctxt) -> @ast::expr {
|
||||||
debug!("gen_init_bounded");
|
debug!("gen_init_bounded");
|
||||||
let buffer_fields = self.gen_buffer_init(ext_cx);
|
let buffer_fields = self.gen_buffer_init(ext_cx);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue