diff options
author | Gurusamy Sarathy <gsar@cpan.org> | 1999-11-13 02:17:53 +0000 |
---|---|---|
committer | Gurusamy Sarathy <gsar@cpan.org> | 1999-11-13 02:17:53 +0000 |
commit | 971a9dd36d83520d7040365d2791ad56b6d39411 (patch) | |
tree | 2bb4f700b96a8e36132040891ef26db29f3d45a9 /win32/perllib.c | |
parent | 11faa288e292c27cb2ddc4ccdc483b523d26ce19 (diff) | |
download | perl-971a9dd36d83520d7040365d2791ad56b6d39411.tar.gz |
cloned interpreters now actually run and pass all but 55/10386
subtests; various subtle bugs, new and old, observed when running
cloned interpreters have been fixed
still to do:
| * dup psig_ptr table
| * merge PADOP GVs support with "our" SVs (existing PADOPs are too
| simple-minded and grab one pad entry each, heavily bloating
| the pad by not avoiding dups)
| * overloaded constants are not really immutable--they need to
| be PADOPs
| * allocator for constants and OPs need to be spelled differently
| (shared vs interpreter-local allocations)
| * optree refcounting is still missing locking (macros are in place)
| * curstackinfo, {mark,scope,save,ret}stack need to be cloned so
| perl_clone() can be called from within runops*()
p4raw-id: //depot/perl@4553
Diffstat (limited to 'win32/perllib.c')
-rw-r--r-- | win32/perllib.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/win32/perllib.c b/win32/perllib.c index 61798faf1c..0cf21cb627 100644 --- a/win32/perllib.c +++ b/win32/perllib.c @@ -1556,12 +1556,14 @@ RunPerl(int argc, char **argv, char **env) exitstatus = perl_parse(my_perl, xs_init, argc, argv, env); if (!exitstatus) { -#if 0 /* def USE_ITHREADS */ /* XXXXXX testing */ +#ifdef USE_ITHREADS /* XXXXXX testing */ extern PerlInterpreter * perl_clone(pTHXx_ IV flags); PerlInterpreter *new_perl = perl_clone(my_perl, 0); + Perl_push_scope(new_perl); /* ENTER; (hack in lieu of perl_destruct()) */ exitstatus = perl_run( new_perl ); - /* perl_destruct(new_perl); perl_free(new_perl); */ + perl_destruct(new_perl); perl_free(new_perl); + SetPerlInterpreter(my_perl); #else exitstatus = perl_run( my_perl ); #endif |