[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