decl.c (objc_get_current_scope, [...]): New functions, to be called from ObjC++.
authorZiemowit Laski <zlaski@apple.com>
Fri, 10 Sep 2004 20:47:34 +0000 (20:47 +0000)
committerZiemowit Laski <zlaski@gcc.gnu.org>
Fri, 10 Sep 2004 20:47:34 +0000 (20:47 +0000)
[gcc/cp/ChangeLog]
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++.

From-SVN: r87321

gcc/cp/ChangeLog
gcc/cp/decl.c

index ab3da7f06b434df3a6e8f698196f8462ae6f5793..2de9a9f450f051919af4b726d445ec887104bb95 100644 (file)
@@ -1,3 +1,8 @@
+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,
index 84a5d9a8da9c02cd3c07767cb68125dd5a8f2da3..f2d8fc2f564ce81a9b47cc8d55131c8ef2cba04c 100644 (file)
@@ -403,6 +403,38 @@ pop_labels (tree block)
   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.