@@ -33,63 +33,64 @@ use syntax::visit::visit_crate;
3333use core:: hashmap:: HashMap ;
3434
3535pub enum LangItem {
36- FreezeTraitLangItem , // 0
37- CopyTraitLangItem , // 1
38- SendTraitLangItem , // 2
39- SizedTraitLangItem , // 3
40-
41- DropTraitLangItem , // 4
42-
43- AddTraitLangItem , // 5
44- SubTraitLangItem , // 6
45- MulTraitLangItem , // 7
46- DivTraitLangItem , // 8
47- RemTraitLangItem , // 9
48- NegTraitLangItem , // 10
49- NotTraitLangItem , // 11
50- BitXorTraitLangItem , // 11
51- BitAndTraitLangItem , // 13
52- BitOrTraitLangItem , // 14
53- ShlTraitLangItem , // 15
54- ShrTraitLangItem , // 16
55- IndexTraitLangItem , // 17
56-
57- EqTraitLangItem , // 18
58- OrdTraitLangItem , // 19
59-
60- StrEqFnLangItem , // 20
61- UniqStrEqFnLangItem , // 21
62- AnnihilateFnLangItem , // 22
63- LogTypeFnLangItem , // 23
64- FailFnLangItem , // 24
65- FailBoundsCheckFnLangItem , // 25
66- ExchangeMallocFnLangItem , // 26
67- ExchangeFreeFnLangItem , // 27
68- MallocFnLangItem , // 28
69- FreeFnLangItem , // 29
70- BorrowAsImmFnLangItem , // 30
71- BorrowAsMutFnLangItem , // 31
72- ReturnToMutFnLangItem , // 32
73- CheckNotBorrowedFnLangItem , // 33
74- StrDupUniqFnLangItem , // 34
75- RecordBorrowFnLangItem , // 35
76- UnrecordBorrowFnLangItem , // 36
77-
78- StartFnLangItem , // 37
79-
80- TyDescStructLangItem , // 38
81- TyVisitorTraitLangItem , // 39
82- OpaqueStructLangItem , // 40
36+ FreezeTraitLangItem , // 0
37+ CopyTraitLangItem , // 1
38+ SendTraitLangItem , // 2
39+ SizedTraitLangItem , // 3
40+
41+ DropTraitLangItem , // 4
42+
43+ AddTraitLangItem , // 5
44+ SubTraitLangItem , // 6
45+ MulTraitLangItem , // 7
46+ DivTraitLangItem , // 8
47+ RemTraitLangItem , // 9
48+ NegTraitLangItem , // 10
49+ NotTraitLangItem , // 11
50+ BitXorTraitLangItem , // 11
51+ BitAndTraitLangItem , // 13
52+ BitOrTraitLangItem , // 14
53+ ShlTraitLangItem , // 15
54+ ShrTraitLangItem , // 16
55+ IndexTraitLangItem , // 17
56+
57+ EqTraitLangItem , // 18
58+ OrdTraitLangItem , // 19
59+
60+ StrEqFnLangItem , // 20
61+ UniqStrEqFnLangItem , // 21
62+ AnnihilateFnLangItem , // 22
63+ LogTypeFnLangItem , // 23
64+ FailFnLangItem , // 24
65+ FailBoundsCheckFnLangItem , // 25
66+ ExchangeMallocFnLangItem , // 26
67+ ClosureExchangeMallocFnLangItem , // 27
68+ ExchangeFreeFnLangItem , // 28
69+ MallocFnLangItem , // 29
70+ FreeFnLangItem , // 30
71+ BorrowAsImmFnLangItem , // 31
72+ BorrowAsMutFnLangItem , // 32
73+ ReturnToMutFnLangItem , // 33
74+ CheckNotBorrowedFnLangItem , // 34
75+ StrDupUniqFnLangItem , // 35
76+ RecordBorrowFnLangItem , // 36
77+ UnrecordBorrowFnLangItem , // 37
78+
79+ StartFnLangItem , // 38
80+
81+ TyDescStructLangItem , // 39
82+ TyVisitorTraitLangItem , // 40
83+ OpaqueStructLangItem , // 41
8384}
8485
8586pub struct LanguageItems {
86- items : [ Option < def_id > , ..41 ]
87+ items : [ Option < def_id > , ..42 ]
8788}
8889
8990impl LanguageItems {
9091 pub fn new ( ) -> LanguageItems {
9192 LanguageItems {
92- items : [ None , ..41 ]
93+ items : [ None , ..42 ]
9394 }
9495 }
9596
@@ -129,22 +130,23 @@ impl LanguageItems {
129130 24 => "fail_" ,
130131 25 => "fail_bounds_check" ,
131132 26 => "exchange_malloc" ,
132- 27 => "exchange_free" ,
133- 28 => "malloc" ,
134- 29 => "free" ,
135- 30 => "borrow_as_imm" ,
136- 31 => "borrow_as_mut" ,
137- 32 => "return_to_mut" ,
138- 33 => "check_not_borrowed" ,
139- 34 => "strdup_uniq" ,
140- 35 => "record_borrow" ,
141- 36 => "unrecord_borrow" ,
142-
143- 37 => "start" ,
144-
145- 38 => "ty_desc" ,
146- 39 => "ty_visitor" ,
147- 40 => "opaque" ,
133+ 27 => "closure_exchange_malloc" ,
134+ 28 => "exchange_free" ,
135+ 29 => "malloc" ,
136+ 30 => "free" ,
137+ 31 => "borrow_as_imm" ,
138+ 32 => "borrow_as_mut" ,
139+ 33 => "return_to_mut" ,
140+ 34 => "check_not_borrowed" ,
141+ 35 => "strdup_uniq" ,
142+ 36 => "record_borrow" ,
143+ 37 => "unrecord_borrow" ,
144+
145+ 38 => "start" ,
146+
147+ 39 => "ty_desc" ,
148+ 40 => "ty_visitor" ,
149+ 41 => "opaque" ,
148150
149151 _ => "???"
150152 }
@@ -237,6 +239,9 @@ impl LanguageItems {
237239 pub fn exchange_malloc_fn ( & self ) -> def_id {
238240 self . items [ ExchangeMallocFnLangItem as uint ] . get ( )
239241 }
242+ pub fn closure_exchange_malloc_fn ( & self ) -> def_id {
243+ self . items [ ClosureExchangeMallocFnLangItem as uint ] . get ( )
244+ }
240245 pub fn exchange_free_fn ( & self ) -> def_id {
241246 self . items [ ExchangeFreeFnLangItem as uint ] . get ( )
242247 }
@@ -327,6 +332,7 @@ impl<'self> LanguageItemCollector<'self> {
327332 item_refs. insert ( @"fail_bounds_check",
328333 FailBoundsCheckFnLangItem as uint ) ;
329334 item_refs. insert ( @"exchange_malloc", ExchangeMallocFnLangItem as uint ) ;
335+ item_refs. insert ( @"closure_exchange_malloc", ClosureExchangeMallocFnLangItem as uint ) ;
330336 item_refs. insert ( @"exchange_free", ExchangeFreeFnLangItem as uint ) ;
331337 item_refs. insert ( @"malloc", MallocFnLangItem as uint ) ;
332338 item_refs. insert ( @"free", FreeFnLangItem as uint ) ;
0 commit comments