dotgnu-pnet-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Dotgnu-pnet-commits] CVS: pnet/cscc/csharp cs_grammar.y,1.43,1.44 cs_d


From: Gopal.V <address@hidden>
Subject: [Dotgnu-pnet-commits] CVS: pnet/cscc/csharp cs_grammar.y,1.43,1.44 cs_defs.tc,1.9,1.10 cs_misc.tc,1.11,1.12
Date: Thu, 12 Dec 2002 11:59:57 -0500

Update of /cvsroot/dotgnu-pnet/pnet/cscc/csharp
In directory subversions:/tmp/cvs-serv20184/cscc/csharp

Modified Files:
        cs_grammar.y cs_defs.tc cs_misc.tc 
Log Message:
Filter destructor calls for System.Object


Index: cs_grammar.y
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/cscc/csharp/cs_grammar.y,v
retrieving revision 1.43
retrieving revision 1.44
diff -C2 -r1.43 -r1.44
*** cs_grammar.y        10 Dec 2002 23:08:59 -0000      1.43
--- cs_grammar.y        12 Dec 2002 16:59:54 -0000      1.44
***************
*** 3274,3279 ****
                                   by wrapping the method body with a try block 
whose
                                   finally clause always calls its parent */
!                               body = ILNode_InvocationExpression_create
!                                                       
(ILNode_BaseAccess_create(name), 0);
                                body = ILNode_Try_create
                                                        ($6, 0, 
ILNode_FinallyClause_create(body));
--- 3274,3282 ----
                                   by wrapping the method body with a try block 
whose
                                   finally clause always calls its parent */
!                               /* Note: BaseDestructor filters out these calls 
for 
!                                                System.Object class */
!                               body = ILNode_BaseDestructor_create(
!                                                       
ILNode_InvocationExpression_create
!                                                       
(ILNode_BaseAccess_create(name), 0));
                                body = ILNode_Try_create
                                                        ($6, 0, 
ILNode_FinallyClause_create(body));

Index: cs_defs.tc
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/cscc/csharp/cs_defs.tc,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -r1.9 -r1.10
*** cs_defs.tc  10 Dec 2002 23:08:59 -0000      1.9
--- cs_defs.tc  12 Dec 2002 16:59:54 -0000      1.10
***************
*** 146,149 ****
--- 146,153 ----
        ILNode *stmt;
  }
+ %node ILNode_BaseDestructor ILNode_Dummy =
+ {
+       ILNode *destructor;
+ }
  
  /*

Index: cs_misc.tc
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/cscc/csharp/cs_misc.tc,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -r1.11 -r1.12
*** cs_misc.tc  10 Dec 2002 00:16:04 -0000      1.11
--- cs_misc.tc  12 Dec 2002 16:59:54 -0000      1.12
***************
*** 613,615 ****
--- 613,639 ----
        return value;
  }
+ ILNode_SemAnalysis(ILNode_BaseDestructor)
+ {
+       ILNode_MethodDeclaration *caller;
+       ILType *type;
+       
+       caller= info->currentMethod;
  
+       if(!caller)
+       {
+               CCErrorOnLine(yygetfilename(node), yygetlinenum(node),
+                         "cannot call base destructors outside a method ");
+               return CSSemValueDefault;
+       }
+       
+       type = ILType_FromClass(ILMethod_Owner(caller->methodInfo));
+       if(ILTypeIsObjectClass(type))
+       {
+               return CSSemValueDefault;
+       }
+       return ILNode_SemAnalysis(node->destructor,info,&(node->destructor));
+ }
+ ILNode_GenDiscard(ILNode_BaseDestructor)
+ {
+       ILNode_GenDiscard(node->destructor,info);
+ }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]