Author: leo
Date: Mon Mar 13 04:39:45 2006
New Revision: 11882
Modified:
trunk/include/parrot/interpreter.h
trunk/src/inter_create.c
trunk/src/ops/core.ops
trunk/src/ops/debug.ops
trunk/src/ops/io.ops
trunk/src/ops/ops.num
trunk/src/register.c
trunk/src/sub.c
trunk/t/op/debuginfo.t
Log:
introspection
* delete set{line,file,package}, getpackage opcodes
* move get{line,file} ops to debug.ops, fill in the blanks
* adjust tests
Modified: trunk/include/parrot/interpreter.h
==============================================================================
--- trunk/include/parrot/interpreter.h (original)
+++ trunk/include/parrot/interpreter.h Mon Mar 13 04:39:45 2006
@@ -208,7 +208,7 @@
PMC *current_object; /* current object if a method call */
STRING *current_method; /* name of method */
opcode_t *current_pc; /* program counter of Sub invocation */
- String *current_package; /* The package we're currently in */
+ PMC *current_namespace; /* The namespace we're currently in */
INTVAL current_HLL; /* see also src/hll.c */
opcode_t *current_results; /* ptr into code with get_results opcode */
/* deref the constants - we need it all the time */
Modified: trunk/src/inter_create.c
==============================================================================
--- trunk/src/inter_create.c (original)
+++ trunk/src/inter_create.c Mon Mar 13 04:39:45 2006
@@ -205,9 +205,8 @@
SET_NULL_P(interpreter->evc_func_table, op_func_t *);
SET_NULL_P(interpreter->save_func_table, op_func_t *);
- /* Set up defaults for line/package/file */
- CONTEXT(interpreter->ctx)->current_package =
- string_make(interpreter, "(unknown package)", 18, NULL, 0);
+ /* clear namespace */
+ CONTEXT(interpreter->ctx)->current_namespace = PMCNULL;
SET_NULL_P(interpreter->code, struct PackFile *);
SET_NULL_P(interpreter->profile, ProfData *);
Modified: trunk/src/ops/core.ops
==============================================================================
--- trunk/src/ops/core.ops (original)
+++ trunk/src/ops/core.ops Mon Mar 13 04:39:45 2006
@@ -996,71 +996,7 @@
#######################################
-=item B<setline>(in INT)
-Set the line number for which we're currently executing code.
-
-=cut
-
-inline op setline(in INT) {
- /* TODO: not implemented yet */
- goto NEXT();
-}
-
-=item B<getline>(out INT)
-
-Get the current line number.
-
-=cut
-
-inline op getline(out INT) {
- /* TODO: not implemented yet */
- goto NEXT();
-}
-
-=item B<setfile>(in STR)
-
-Set the name of the file for which we're currently executing code.
-
-=cut
-
-inline op setfile(in STR) {
- /* TODO: not implemented yet */
- goto NEXT();
-}
-
-=item B<getfile>(out STR)
-
-Get the name of the current file.
-
-=cut
-
-inline op getfile(out STR) {
- /* TODO: not implemented yet */
- goto NEXT();
-}
-
-=item B<setpackage>(in STR)
-
-Set the name of the package for which we're currently executing code.
-
-=cut
-
-inline op setpackage(in STR) {
- CONTEXT(interpreter->ctx)->current_package = $1;
- goto NEXT();
-}
-
-=item B<getpackage>(out STR)
-
-Get the name of the current package.
-
-=cut
-
-inline op getpackage(out STR) {
- $1 = CONTEXT(interpreter->ctx)->current_package;
- goto NEXT();
-}
=back
Modified: trunk/src/ops/debug.ops
==============================================================================
--- trunk/src/ops/debug.ops (original)
+++ trunk/src/ops/debug.ops Mon Mar 13 04:39:45 2006
@@ -145,6 +145,47 @@
goto NEXT();
}
+#######################################
+
+op DELETED_setline(in INT) {
+ goto NEXT();
+}
+op DELETED_setfile(in STR) {
+ goto NEXT();
+}
+op DELETED_setpackage(in STR) {
+ goto NEXT();
+}
+op DELETED_getpackage(out STR) {
+ goto NEXT();
+}
+
+=item B<getline>(out INT)
+
+Get the current line number.
+
+=cut
+
+inline op getline(out INT) {
+ struct Parrot_Context_info info;
+ Parrot_Context_info(interpreter, CONTEXT(interpreter->ctx), &info);
+ $1 = info.line;
+ goto NEXT();
+}
+
+=item B<getfile>(out STR)
+
+Get the name of the current file.
+
+=cut
+
+inline op getfile(out STR) {
+ struct Parrot_Context_info info;
+ Parrot_Context_info(interpreter, CONTEXT(interpreter->ctx), &info);
+ $1 = string_from_cstring(interpreter, info.file, 0);
+ goto NEXT();
+}
+
=back
=cut
Modified: trunk/src/ops/io.ops
==============================================================================
--- trunk/src/ops/io.ops (original)
+++ trunk/src/ops/io.ops Mon Mar 13 04:39:45 2006
@@ -552,7 +552,7 @@
goto NEXT();
}
-op NO_SUCH_recv(out INT, in PMC, inconst STR) :base_network {
+op DELETED_recv(out INT, in PMC, inconst STR) :base_network {
goto NEXT();
}
Modified: trunk/src/ops/ops.num
==============================================================================
--- trunk/src/ops/ops.num (original)
+++ trunk/src/ops/ops.num Mon Mar 13 04:39:45 2006
@@ -114,15 +114,15 @@
runinterp_p_i 84
runinterp_p_ic 85
getinterp_p 86
-setline_i 87
-setline_ic 88
+DELETED_setline_i 87
+DELETED_setline_ic 88
getline_i 89
-setfile_s 90
-setfile_sc 91
+DELETED_setfile_s 90
+DELETED_setfile_sc 91
getfile_s 92
-setpackage_s 93
-setpackage_sc 94
-getpackage_s 95
+DELETED_setpackage_s 93
+DELETED_setpackage_sc 94
+DELETED_getpackage_s 95
sweep_ic 96
collect 97
sweepoff 98
@@ -508,7 +508,7 @@
connect_i_p_s 478
connect_i_p_sc 479
recv_i_p_s 480
-NO_SUCH_recv_i_p_sc 481
+DELETED_recv_i_p_sc 481
send_i_p_s 482
send_i_p_sc 483
poll_i_p_i_i_i 484
Modified: trunk/src/register.c
==============================================================================
--- trunk/src/register.c (original)
+++ trunk/src/register.c Mon Mar 13 04:39:45 2006
@@ -236,7 +236,6 @@
ctx->lex_pad = PMCNULL;
ctx->outer_ctx = NULL;
ctx->current_cont = NULL;
- ctx->current_package = NULL; /* XXX unused except tests */
ctx->current_method = NULL; /* XXX who clears it? */
ctx->current_object = NULL; /* XXX who clears it? */
ctx->current_HLL = 0;
@@ -252,6 +251,7 @@
ctx->runloop_level = old->runloop_level;
ctx->pred_offset = old->pred_offset;
ctx->current_HLL = old->current_HLL;
+ ctx->current_namespace = old->current_namespace;
/* end COW */
ctx->recursion_depth = old->recursion_depth;
}
Modified: trunk/src/sub.c
==============================================================================
--- trunk/src/sub.c (original)
+++ trunk/src/sub.c Mon Mar 13 04:39:45 2006
@@ -61,7 +61,7 @@
obj = (PObj*)ctx->current_method;
if (obj)
pobject_lives(interpreter, obj);
- obj = (PObj*)ctx->current_package;
+ obj = (PObj*)ctx->current_namespace;
if (obj)
pobject_lives(interpreter, obj);
obj = (PObj*)ctx->lex_pad;
Modified: trunk/t/op/debuginfo.t
==============================================================================
--- trunk/t/op/debuginfo.t (original)
+++ trunk/t/op/debuginfo.t Mon Mar 13 04:39:45 2006
@@ -24,60 +24,20 @@
=cut
-
-SKIP:
-{
- skip("getline/setline changes not finished", 3);
-pasm_output_is( <<'CODE', <<OUTPUT, "set/getline" );
- setline 1
- setline 2
- getline I0
- print I0
- print "\n"
- setline 1
- getline I0
- print I0
- print "\n"
- end
-CODE
-2
-1
-OUTPUT
-
-pasm_output_is( <<'CODE', <<OUTPUT, "set/getpackage" );
- setpackage "foo"
- setpackage "bar"
- getpackage S0
- print S0
- print "\n"
- setpackage "foo"
- getpackage S0
- print S0
- print "\n"
- end
-CODE
-bar
-foo
-OUTPUT
-
-pasm_output_is( <<'CODE', <<OUTPUT, "set/getfile" );
- setfile "foo"
- setfile "bar"
- getfile S0
- print S0
- print "\n"
- setfile "foo"
- getfile S0
- print S0
- print "\n"
- end
+pasm_output_like(<<'CODE', <<'OUTPUT', "getline, getfile");
+.pcc_sub main:
+ getfile S0
+ getline I0
+ print S0
+ print "\n"
+ print I0
+ print "\n"
+ end
CODE
-bar
-foo
+/debuginfo_\d+\.pasm
+\d/
OUTPUT
-}
-
pir_output_like( <<'CODE', <<'OUTPUT', "debug backtrace - Null PMC access" );
.sub main
print "ok 1\n"
@@ -202,5 +162,5 @@
## remember to change the number of tests :-)
-BEGIN { plan tests => 8; }
+BEGIN { plan tests => 6; }