Commit 80aa8340 by Ziemowit Laski Committed by Ziemowit Laski

decl.c (objc_get_current_scope, [...]): New functions, to be called from ObjC++.

[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
parent 375d2edc
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> 2004-09-10 Kazu Hirata <kazu@cs.umass.edu>
* class.c, cp-tree.h, decl.c, decl2.c, mangle.c, * class.c, cp-tree.h, decl.c, decl2.c, mangle.c,
......
...@@ -403,6 +403,38 @@ pop_labels (tree block) ...@@ -403,6 +403,38 @@ pop_labels (tree block)
named_labels = NULL; 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. /* Exit a binding level.
Pop the level off, and restore the state of the identifier-decl mappings Pop the level off, and restore the state of the identifier-decl mappings
that were in effect when this level was entered. that were in effect when this level was entered.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment