File tree Expand file tree Collapse file tree 4 files changed +46
-11
lines changed Expand file tree Collapse file tree 4 files changed +46
-11
lines changed Original file line number Diff line number Diff line change 2
2
refs/heads/master: 19dfec2aaf746535de1521f68421f9980dbf25de
3
3
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4
4
refs/heads/snap-stage3: 2f46b763da2c098913884f101b6d71d69af41b49
5
- refs/heads/try: 8dfab498ef21d332a50c36059db7eacabb58cbcb
5
+ refs/heads/try: e22aa029fb4d923dc03748b435abd6330933b473
6
6
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
7
7
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
8
8
refs/heads/try2: a810c03263670238bccd64cabb12a23a46e3a278
Original file line number Diff line number Diff line change @@ -143,14 +143,9 @@ pub fn BufferHeader() -> BufferHeader {
143
143
// This is for protocols to associate extra data to thread around.
144
144
#[ doc( hidden) ]
145
145
#[ cfg( stage0) ]
146
- type Buffer < T : Owned > = {
147
- header : BufferHeader ,
148
- data : T ,
149
- } ;
150
- #[ doc( hidden) ]
151
146
#[ cfg( stage1) ]
147
+ type Buffer < T > = { header : BufferHeader , data : T } ;
152
148
#[ cfg( stage2) ]
153
- #[ cfg( stage3) ]
154
149
pub struct Buffer < T > {
155
150
header : BufferHeader ,
156
151
data : T ,
@@ -247,7 +242,6 @@ pub fn mk_packet<T: Owned>() -> Packet<T> {
247
242
payload : None ,
248
243
}
249
244
}
250
-
251
245
#[ doc( hidden) ]
252
246
#[ cfg( stage0) ]
253
247
fn unibuffer < T : Owned > ( ) -> ~Buffer < Packet < T > > {
@@ -264,10 +258,23 @@ fn unibuffer<T: Owned>() -> ~Buffer<Packet<T>> {
264
258
}
265
259
move b
266
260
}
267
- #[ doc( hidden) ]
268
261
#[ cfg( stage1) ]
262
+ fn unibuffer < T > ( ) -> ~Buffer < Packet < T > > {
263
+ let b = ~{
264
+ header: BufferHeader ( ) ,
265
+ data: Packet {
266
+ header : PacketHeader ( ) ,
267
+ payload : None ,
268
+ }
269
+ } ;
270
+
271
+ unsafe {
272
+ b. data . header . buffer = reinterpret_cast ( & b) ;
273
+ }
274
+ move b
275
+ }
276
+ #[ doc( hidden) ]
269
277
#[ cfg( stage2) ]
270
- #[ cfg( stage3) ]
271
278
fn unibuffer < T > ( ) -> ~Buffer < Packet < T > > {
272
279
let b = ~Buffer {
273
280
header : BufferHeader ( ) ,
Original file line number Diff line number Diff line change @@ -486,7 +486,7 @@ pub mod tests {
486
486
res.recv();
487
487
}
488
488
489
- #[test] #[should_fail] #[ignore(reason = " random red " )]
489
+ #[test] #[should_fail] #[ignore(cfg(windows) )]
490
490
pub fn exclusive_unwrap_conflict() {
491
491
let x = exclusive(~~" hello");
492
492
let x2 = ~mut Some(x.clone());
Original file line number Diff line number Diff line change @@ -355,6 +355,34 @@ pub impl protocol: gen_init {
355
355
}))
356
356
}
357
357
358
+ #[cfg(stage0)]
359
+ fn gen_init_bounded(ext_cx: ext_ctxt) -> @ast::expr {
360
+ debug!(" gen_init_bounded");
361
+ let buffer_fields = self.gen_buffer_init(ext_cx);
362
+ let buffer = quote_expr!(~{
363
+ header: ::pipes::BufferHeader(),
364
+ data: $buffer_fields,
365
+ });
366
+
367
+ let entangle_body = ext_cx.block_expr(
368
+ ext_cx.block(
369
+ self.states.map_to_vec(
370
+ |s| ext_cx.parse_stmt(
371
+ fmt!(" data. %s. set_buffer_( buffer) ",
372
+ s.name))),
373
+ ext_cx.parse_expr(
374
+ fmt!(" :: ptr:: addr_of( & ( data. %s) ) ",
375
+ self.states[0].name))));
376
+
377
+ quote_expr!({
378
+ let buffer = $buffer;
379
+ do ::pipes::entangle_buffer(move buffer) |buffer, data| {
380
+ $entangle_body
381
+ }
382
+ })
383
+ }
384
+ #[cfg(stage1)]
385
+ #[cfg(stage2)]
358
386
fn gen_init_bounded(ext_cx: ext_ctxt) -> @ast::expr {
359
387
debug!(" gen_init_bounded");
360
388
let buffer_fields = self.gen_buffer_init(ext_cx);
You can’t perform that action at this time.
0 commit comments