[svn:parrot] r47691 - in branches/gsoc_instrument: . runtime/parrot/library/Instrument src/dynpmc

khairul at svn.parrot.org khairul at svn.parrot.org
Fri Jun 18 18:31:13 UTC 2010


Author: khairul
Date: Fri Jun 18 18:31:12 2010
New Revision: 47691
URL: https://trac.parrot.org/parrot/changeset/47691

Log:
beginnings of updated hook callback interface.

Added:
   branches/gsoc_instrument/src/dynpmc/instrumentop.pmc   (contents, props changed)
Modified:
   branches/gsoc_instrument/MANIFEST
   branches/gsoc_instrument/runtime/parrot/library/Instrument/Instrument.pir
   branches/gsoc_instrument/src/dynpmc/Defines.in
   branches/gsoc_instrument/src/dynpmc/Rules.in
   branches/gsoc_instrument/src/dynpmc/instrument.pmc

Modified: branches/gsoc_instrument/MANIFEST
==============================================================================
--- branches/gsoc_instrument/MANIFEST	Fri Jun 18 16:46:25 2010	(r47690)
+++ branches/gsoc_instrument/MANIFEST	Fri Jun 18 18:31:12 2010	(r47691)
@@ -1277,6 +1277,7 @@
 src/dynpmc/foo2.pmc                                         []
 src/dynpmc/gziphandle.pmc                                   []
 src/dynpmc/instrument.pmc                                   []
+src/dynpmc/instrumentop.pmc                                 []
 src/dynpmc/main.pasm                                        []
 src/dynpmc/os.pmc                                           []
 src/dynpmc/pccmethod_test.pmc                               []

Modified: branches/gsoc_instrument/runtime/parrot/library/Instrument/Instrument.pir
==============================================================================
--- branches/gsoc_instrument/runtime/parrot/library/Instrument/Instrument.pir	Fri Jun 18 16:46:25 2010	(r47690)
+++ branches/gsoc_instrument/runtime/parrot/library/Instrument/Instrument.pir	Fri Jun 18 18:31:12 2010	(r47691)
@@ -14,7 +14,7 @@
 
 .include 'call_bits.pasm'
 .loadlib 'bit_ops'
-.loadlib 'instrument'
+.loadlib 'instrument_group'
 
 .sub '__instrument_lib_init' :init :load :anon
     .local pmc lib

Modified: branches/gsoc_instrument/src/dynpmc/Defines.in
==============================================================================
--- branches/gsoc_instrument/src/dynpmc/Defines.in	Fri Jun 18 16:46:25 2010	(r47690)
+++ branches/gsoc_instrument/src/dynpmc/Defines.in	Fri Jun 18 18:31:12 2010	(r47691)
@@ -11,7 +11,7 @@
     $(DYNEXT_DIR)/rotest$(LOAD_EXT) \
     $(DYNEXT_DIR)/rational$(LOAD_EXT) \
     $(DYNEXT_DIR)/subproxy$(LOAD_EXT) \
-    $(DYNEXT_DIR)/instrument$(LOAD_EXT) 
+    $(DYNEXT_DIR)/instrument_group$(LOAD_EXT)
 
 DYNPMC_FOO = \
     src/dynpmc/foo.pmc \
@@ -21,6 +21,14 @@
     src/dynpmc/foo$(O) \
     src/dynpmc/foo2$(O)
 
+DYNPMC_INSTRUMENT = \
+    src/dynpmc/instrument.pmc \
+    src/dynpmc/instrumentop.pmc
+
+DYNPMC_INSTRUMENT_OBJS = \
+    src/dynpmc/instrument$(O) \
+    src/dynpmc/instrumentop$(O)
+
 DYNPMC_H_FILES = \
     include/parrot/caches.h \
     include/parrot/call.h \

Modified: branches/gsoc_instrument/src/dynpmc/Rules.in
==============================================================================
--- branches/gsoc_instrument/src/dynpmc/Rules.in	Fri Jun 18 16:46:25 2010	(r47690)
+++ branches/gsoc_instrument/src/dynpmc/Rules.in	Fri Jun 18 18:31:12 2010	(r47691)
@@ -178,11 +178,18 @@
 	$(PMC2CD) src/dynpmc/subproxy.pmc
 	
 
-$(DYNEXT_DIR)/instrument$(LOAD_EXT): src/dynpmc/instrument$(O)
-	$(LD)  @ld_out@$(DYNEXT_DIR)/instrument$(LOAD_EXT) src/dynpmc/instrument$(O) $(LINKARGS)
+$(DYNEXT_DIR)/instrument_group$(LOAD_EXT): $(DYNPMC_INSTRUMENT_OBJS) src/dynpmc/instrument_group$(O)
+	$(LD)  @ld_out@$(DYNEXT_DIR)/instrument_group$(LOAD_EXT) src/dynpmc/instrument_group$(O) $(DYNPMC_INSTRUMENT_OBJS) $(LINKARGS)
 #IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
 #IF(cygwin or hpux):   $(CHMOD) 0775 $@
 
+src/dynpmc/instrument_group$(O): src/dynpmc/instrument.c src/dynpmc/instrumentop.c $(DYNPMC_H_FILES)
+
+src/dynpmc/instrument_group.c: $(DYNPMC_INSTRUMENT_OBJS)
+	$(PMC2C) --library instrument_group --c $(DYNPMC_INSTRUMENT)
+	$(MV) instrument_group.c src/dynpmc/instrument_group.c
+	$(MV) instrument_group.h src/dynpmc/instrument_group.h
+
 src/dynpmc/pmc_instrument.h : src/dynpmc/instrument.c
 
 src/dynpmc/instrument$(O): src/dynpmc/instrument.c $(DYNPMC_H_FILES) \
@@ -194,4 +201,13 @@
 src/dynpmc/instrument.dump: src/dynpmc/instrument.pmc vtable.dump $(CLASS_O_FILES)
 	$(PMC2CD) src/dynpmc/instrument.pmc
 
+src/dynpmc/pmc_instrumentop.h : src/dynpmc/instrumentop.c
+
+src/dynpmc/instrumentop$(O): src/dynpmc/instrumentop.c $(DYNPMC_H_FILES) \
+    src/dynpmc/pmc_instrumentop.h
+
+src/dynpmc/instrumentop.c: src/dynpmc/instrumentop.dump
+	$(PMC2CC) src/dynpmc/instrumentop.pmc
 
+src/dynpmc/instrumentop.dump: src/dynpmc/instrumentop.pmc vtable.dump $(CLASS_O_FILES)
+	$(PMC2CD) src/dynpmc/instrumentop.pmc

Modified: branches/gsoc_instrument/src/dynpmc/instrument.pmc
==============================================================================
--- branches/gsoc_instrument/src/dynpmc/instrument.pmc	Fri Jun 18 16:46:25 2010	(r47690)
+++ branches/gsoc_instrument/src/dynpmc/instrument.pmc	Fri Jun 18 18:31:12 2010	(r47691)
@@ -85,7 +85,7 @@
 static PMC          *probe_list_remove(PARROT_INTERP, probe_list_t *list, probe_node_t *node);
 static probe_node_t *probe_list_find(PARROT_INTERP, probe_list_t *list, PMC *val);
 
-pmclass Instrument auto_attrs dynpmc provides hash {
+pmclass Instrument auto_attrs dynpmc provides hash group instrument_group {
     ATTR Parrot_Interp  supervised;  /* The interpreter running the code */
     ATTR PMC           *probes;      /* A list of probes registered. */
     ATTR PMC           *evt_dispatcher;

Added: branches/gsoc_instrument/src/dynpmc/instrumentop.pmc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/gsoc_instrument/src/dynpmc/instrumentop.pmc	Fri Jun 18 18:31:12 2010	(r47691)
@@ -0,0 +1,58 @@
+/*
+Copyright (C) 2010, Parrot Foundation.
+$Id$
+
+=head1 NAME
+
+src/dynpmc/instrumentop.pmc - Interface to current executing opcode info.
+
+=head1 DESCRIPTION
+
+C<InstrumentOp> is a PMC class that provides an interface to obtain
+information about the current executing op.
+
+=head2 Methods
+
+=over 4
+
+=cut
+
+*/
+
+#include "parrot/parrot.h"
+
+pmclass InstrumentOp auto_attrs dynpmc group instrument_group {
+    ATTR Parrot_Interp  interp;
+    ATTR opcode_t      *pc;
+
+    VTABLE void init() {
+        SETATTR_InstrumentOp_interp(INTERP, SELF, NULL);
+        SETATTR_InstrumentOp_pc(INTERP, SELF, NULL);
+    }
+
+    VTABLE void init_pmc(PMC *interp_pmc) {
+        Parrot_InstrumentOp_attributes * const attr = PARROT_INSTRUMENTOP(SELF);
+
+        attr->interp = (Parrot_Interp) VTABLE_get_pointer(INTERP, interp_pmc);
+        attr->pc     = NULL;
+    }
+
+    VTABLE void set_pointer(void *vptr_pc) {
+        SETATTR_InstrumentOp_pc(INTERP, SELF, (opcode_t *) vptr_pc);
+    }
+
+    VTABLE void * get_pointer() {
+        opcode_t *pc;
+        GETATTR_InstrumentOp_pc(INTERP, SELF, pc);
+
+        return (void *) pc;
+    }
+
+}
+
+/*
+ * Local variables:
+ *   c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */


More information about the parrot-commits mailing list