[phc-internals] [phc commit] r1118 - in trunk: . src/hir_to_mir src/process_ir

codesite-noreply at google.com codesite-noreply at google.com
Mon Mar 31 13:20:15 IST 2008


Author: paul.biggar
Date: Mon Mar 31 05:19:41 2008
New Revision: 1118

Added:
   trunk/src/process_ir/Clone_blank_mixins.cpp
   trunk/src/process_ir/Clone_blank_mixins.h
Modified:
   trunk/Makefile.am
   trunk/Makefile.in
   trunk/src/hir_to_mir/Lower_control_flow.cpp
   trunk/src/process_ir/General.h

Log:
Copying line number and filenames into each new IR construct is very 
verbose. This adds Clone_blank_mixins, which will visit() a node 
running copy_mixins_from.

Also add header guards and copyright to General.h.


Modified: trunk/Makefile.am
==============================================================================
--- trunk/Makefile.am	(original)
+++ trunk/Makefile.am	Mon Mar 31 05:19:41 2008
@@ -173,6 +173,8 @@
 	src/process_hir/HIR_to_AST.h							\
 	src/process_hir/HIR_unparser.cpp						\
 	src/process_hir/HIR_unparser.h						\
+	src/process_ir/Clone_blank_mixins.cpp				\
+	src/process_ir/Clone_blank_mixins.h					\
 	src/process_ir/debug.cpp								\
 	src/process_ir/debug.h									\
 	src/process_ir/Foreach.h								\

Modified: trunk/Makefile.in
==============================================================================
--- trunk/Makefile.in	(original)
+++ trunk/Makefile.in	Mon Mar 31 05:19:41 2008
@@ -299,9 +299,10 @@
 	Process_includes.$(OBJEXT) Remove_concat_null.$(OBJEXT) \
 	Remove_parser_temporaries.$(OBJEXT) \
 	Strip_unparser_attributes.$(OBJEXT) Token_conversion.$(OBJEXT) \
-	HIR_unparser.$(OBJEXT) debug.$(OBJEXT) fresh.$(OBJEXT) \
-	General.$(OBJEXT) IR.$(OBJEXT) PHP_unparser.$(OBJEXT) \
-	Goto_uppering.$(OBJEXT) MIR_unparser.$(OBJEXT)
+	HIR_unparser.$(OBJEXT) Clone_blank_mixins.$(OBJEXT) \
+	debug.$(OBJEXT) fresh.$(OBJEXT) General.$(OBJEXT) IR.$(OBJEXT) \
+	PHP_unparser.$(OBJEXT) Goto_uppering.$(OBJEXT) \
+	MIR_unparser.$(OBJEXT)
 src_phc_OBJECTS = $(am_src_phc_OBJECTS)
 am__DEPENDENCIES_1 =
 src_phc_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
@@ -695,6 +696,8 @@
 	src/process_hir/HIR_to_AST.h							\
 	src/process_hir/HIR_unparser.cpp						\
 	src/process_hir/HIR_unparser.h						\
+	src/process_ir/Clone_blank_mixins.cpp				\
+	src/process_ir/Clone_blank_mixins.h					\
 	src/process_ir/debug.cpp								\
 	src/process_ir/debug.h									\
 	src/process_ir/Foreach.h								\
@@ -1127,6 +1130,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/AST_visitor.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/AttrMap.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Boolean.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Clone_blank_mixins.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Comment_ifs.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Compile_C.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/DOT_unparser.Po at am__quote@
@@ -2272,6 +2276,20 @@
  @AMDEP_TRUE@@am__fastdepCXX_FALSE@	
source='src/process_hir/HIR_unparser.cpp' object='HIR_unparser.obj' 
libtool=no @AMDEPBACKSLASH@
  @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
  @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o 
HIR_unparser.obj `if test -f 'src/process_hir/HIR_unparser.cpp'; then 
$(CYGPATH_W) 'src/process_hir/HIR_unparser.cpp'; else 
$(CYGPATH_W) '$(srcdir)/src/process_hir/HIR_unparser.cpp'; fi`
+
+Clone_blank_mixins.o: src/process_ir/Clone_blank_mixins.cpp
+ at am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT 
Clone_blank_mixins.o -MD -MP -MF $(DEPDIR)/Clone_blank_mixins.Tpo -c -o 
Clone_blank_mixins.o `test -f 'src/process_ir/Clone_blank_mixins.cpp' ||
 echo '$(srcdir)/'`src/process_ir/Clone_blank_mixins.cpp
+ at am__fastdepCXX_TRUE@	mv -f $(DEPDIR)/Clone_blank_mixins.Tpo $(DEPDIR)/Clone_blank_mixins.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	
source='src/process_ir/Clone_blank_mixins.cpp' 
object='Clone_blank_mixins.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o 
Clone_blank_mixins.o `test -f 'src/process_ir/Clone_blank_mixins.cpp' ||
 echo '$(srcdir)/'`src/process_ir/Clone_blank_mixins.cpp
+
+Clone_blank_mixins.obj: src/process_ir/Clone_blank_mixins.cpp
+ at am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT 
Clone_blank_mixins.obj -MD -MP -MF $(DEPDIR)/Clone_blank_mixins.Tpo -c 
-o Clone_blank_mixins.obj `if test 
-f 'src/process_ir/Clone_blank_mixins.cpp'; then 
$(CYGPATH_W) 'src/process_ir/Clone_blank_mixins.cpp'; else 
$(CYGPATH_W) '$(srcdir)/src/process_ir/Clone_blank_mixins.cpp'; fi`
+ at am__fastdepCXX_TRUE@	mv -f $(DEPDIR)/Clone_blank_mixins.Tpo $(DEPDIR)/Clone_blank_mixins.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	
source='src/process_ir/Clone_blank_mixins.cpp' 
object='Clone_blank_mixins.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o 
Clone_blank_mixins.obj `if test 
-f 'src/process_ir/Clone_blank_mixins.cpp'; then 
$(CYGPATH_W) 'src/process_ir/Clone_blank_mixins.cpp'; else 
$(CYGPATH_W) '$(srcdir)/src/process_ir/Clone_blank_mixins.cpp'; fi`

 debug.o: src/process_ir/debug.cpp
  @am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT debug.o -MD 
-MP -MF $(DEPDIR)/debug.Tpo -c -o debug.o `test 
-f 'src/process_ir/debug.cpp' || echo '$(srcdir)/'`src/process_ir/debug.cpp

Modified: trunk/src/hir_to_mir/Lower_control_flow.cpp
==============================================================================
--- trunk/src/hir_to_mir/Lower_control_flow.cpp	(original)
+++ trunk/src/hir_to_mir/Lower_control_flow.cpp	Mon Mar 31 05:19:41 2008
@@ -265,6 +265,7 @@
 			array_name->clone (),
 			iter->clone ()));

+	clone_blank_mixins_from (in, out);
 }

 /* Convert

Added: trunk/src/process_ir/Clone_blank_mixins.cpp
==============================================================================
--- (empty file)
+++ trunk/src/process_ir/Clone_blank_mixins.cpp	Mon Mar 31 05:19:41 2008
@@ -0,0 +1,30 @@
+/*
+ * phc -- the open source PHP compiler
+ * See doc/license/README.license for licensing information
+ *
+ * Clone mixins from a particular node, avoiding precisely inserting
+ * mixin following code everywhere.
+ */
+
+
+#include "General.h"
+#include "Clone_blank_mixins.h"
+
+#define create_clone_blank_mixins(IR)																\
+void clone_blank_mixins_from (IR::Node* source, IR::Node* container)			 
			\
+{																												\
+	container->visit (new Clone_blank_mixins<IR::Node, IR::Visitor>  
(source));			\
+}																												\
+void clone_blank_mixins_from (IR::Node* source, List<IR::Statement*>*  
containers)	\
+{																												\
+	for_lci (containers, IR::Statement, i)															\
+	{																											\
+		(*i)->visit (new Clone_blank_mixins<IR::Node, IR::Visitor>  
(source));			\
+	}																											\
+}
+
+create_clone_blank_mixins (AST)
+create_clone_blank_mixins (HIR)
+create_clone_blank_mixins (MIR)
+
+#undef create_clone_blank_mixins

Added: trunk/src/process_ir/Clone_blank_mixins.h
==============================================================================
--- (empty file)
+++ trunk/src/process_ir/Clone_blank_mixins.h	Mon Mar 31 05:19:41 2008
@@ -0,0 +1,50 @@
+/*
+ * phc -- the open source PHP compiler
+ * See doc/license/README.license for licensing information
+ *
+ * Clone mixins from a particular node, avoiding precisely inserting
+ * mixin following code everywhere.
+ */
+
+#ifndef PHC_CLONE_BLANK_MIXINS
+#define PHC_CLONE_BLANK_MIXINS
+
+#include "AST.h"
+#include "HIR.h"
+#include "MIR.h"
+#include "AST_visitor.h"
+#include "HIR_visitor.h"
+#include "MIR_visitor.h"
+
+template
+<
+	class Node,
+	class Visitor
+>
+class Clone_blank_mixins : public Visitor
+{
+private:
+	Node* source;
+
+public:
+	Clone_blank_mixins (Node* source) : source (source)
+	{
+	}
+
+	void pre_node (Node* in)
+	{
+		if (in->attrs->size () == 0)
+			in->clone_mixin_from (source);
+	}
+};
+
+void clone_blank_mixins_from (AST::Node* source, AST::Node* container);
+void clone_blank_mixins_from (AST::Node* source, 
List<AST::Statement*>* containers);
+
+void clone_blank_mixins_from (HIR::Node* source, HIR::Node* container);
+void clone_blank_mixins_from (HIR::Node* source, 
List<HIR::Statement*>* containers);
+
+void clone_blank_mixins_from (MIR::Node* source, MIR::Node* container);
+void clone_blank_mixins_from (MIR::Node* source, 
List<MIR::Statement*>* containers);
+
+#endif // PHC_CLONE_BLANK_MIXINS

Modified: trunk/src/process_ir/General.h
==============================================================================
--- trunk/src/process_ir/General.h	(original)
+++ trunk/src/process_ir/General.h	Mon Mar 31 05:19:41 2008
@@ -1,5 +1,16 @@
+/*
+ * phc -- the open source PHP compiler
+ * See doc/license/README.license for licensing information
+ *
+ * Convenience functions and headers
+ */
+
+#ifndef PHC_GENERAL
+#define PHC_GENERAL
+
 #include "debug.h"
 #include "Foreach.h"
+#include "Clone_blank_mixins.h"

 #include "HIR.h"
 #include "AST.h"
@@ -17,3 +28,5 @@
 /* Parse CODE into a list of AST statements, using NODE as the source for
  * filenames and line numbers. */
 List<AST::Statement*>* parse_to_ast (String* code, AST::Node* node);
+
+#endif // PHC_GENERAL


More information about the phc-internals mailing list