[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