aboutsummaryrefslogtreecommitdiff
path: root/src/boot
diff options
context:
space:
mode:
authorGraydon Hoare <[email protected]>2010-06-25 23:55:36 -0700
committerGraydon Hoare <[email protected]>2010-06-25 23:55:36 -0700
commit9236ad28460c78b6dc72dcefb1d5c9fa6d932463 (patch)
tree52f87f1d2409df192317781d9b4687535aa2f1cc /src/boot
parentFix register-use bugs in sweep pass, factor sweep pass out and call twice for... (diff)
downloadrust-9236ad28460c78b6dc72dcefb1d5c9fa6d932463.tar.xz
rust-9236ad28460c78b6dc72dcefb1d5c9fa6d932463.zip
Further attempts to convince mem_ctrl to be sane.
Diffstat (limited to 'src/boot')
-rw-r--r--src/boot/me/transutil.ml4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/boot/me/transutil.ml b/src/boot/me/transutil.ml
index c430e034..7cfe89d7 100644
--- a/src/boot/me/transutil.ml
+++ b/src/boot/me/transutil.ml
@@ -127,7 +127,9 @@ let slot_mem_ctrl (slot:Ast.slot) : mem_ctrl =
then MEM_gc
else MEM_rc_struct
| Ast.MODE_exterior _ ->
- MEM_rc_opaque
+ if type_has_state ty
+ then MEM_gc
+ else MEM_rc_opaque
| _ ->
MEM_interior
;;