+2004-09-10 Ziemowit Laski <zlaski@apple.com>
+
+ * decl.c (objc_get_current_scope, objc_mark_locals_volatile):
+ New functions, to be called from ObjC++.
+
2004-09-10 Kazu Hirata <kazu@cs.umass.edu>
* class.c, cp-tree.h, decl.c, decl2.c, mangle.c,
named_labels = NULL;
}
+/* The following two routines are used to interface to Objective-C++.
+ The binding level is purposely treated as an opaque type. */
+
+void *
+objc_get_current_scope (void)
+{
+ return current_binding_level;
+}
+
+/* The following routine is used by the NeXT-style SJLJ exceptions;
+ variables get marked 'volatile' so as to not be clobbered by
+ _setjmp()/_longjmp() calls. */
+
+void
+objc_mark_locals_volatile (void *enclosing_blk)
+{
+ struct cp_binding_level *scope;
+
+ for (scope = current_binding_level;
+ scope && scope != enclosing_blk && scope->kind == sk_block;
+ scope = scope->level_chain)
+ {
+ tree decl;
+
+ for (decl = scope->names; decl; decl = TREE_CHAIN (decl))
+ {
+ DECL_REGISTER (decl) = 0;
+ TREE_THIS_VOLATILE (decl) = 1;
+ }
+ }
+}
+
/* Exit a binding level.
Pop the level off, and restore the state of the identifier-decl mappings
that were in effect when this level was entered.