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
This commit is contained in:
Ziemowit Laski 2004-09-10 20:47:34 +00:00 committed by Ziemowit Laski
parent 375d2edc9f
commit 80aa8340eb
2 changed files with 37 additions and 0 deletions

View 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,

View 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.