Open p5pRT opened 10 years ago
I decided to try something novel. Replacing the Perl stack\, which is a very-often-bounds-checked malloc block\, with the Win32 C stack (its not the interp's OS thread's stack\, but a thread stack without any thread). There are around 160 calls to Perl_stack_grow\, and often in hot opcodes like pp_undef\, pp_shift\, pp_padsv\, pp_padrange\, and pp_aelemfast. Plus we now have fancy microchips called MMUs and support for them in AT&T SVR4. My proposal\, replace the Perl stack (and maybe more stacks like mortal stack and save stack if this works) with a self allocating/expanding memory block\, no more runtime bounds checks+function call branches. EXTEND macro is a noop. The bounds check is a SEGV. In POSIX land\, I think this scheme would be a SIGSEGV handler that calls mprotect to turn reserved address space into R/W memory. Reserved address space is free. So I hacked up a POC which is attached. And most test files pass (the others crash). So far the only 2 remaining crash/panics problems to resolve is
-address space exhaustion on 32 bits\, op/threads.t trys to launch 100 threads simultaniously\, and Module::CoreList causes huge C stack recursion in what I guess is deeply nested tied hashes\, and each recursion of magic creates a new perl stack -pp_split puts a AvREAL AV * into PL_curstack/PL_stack_sp for unknown to me reason\, then XPUSHs (EXTEND is a noop) onto faux-stack causing heap corruption
There are some API design problems of how get the code integrated in a sane way into blead.
We have SvLEN == 0 for foreign PV buffers. But what is the equivalent for AVs?
Should PERL_FLEXIBLE_EXCEPTIONS come back since I'm use MSC's
__try/__catch?
http://perl5.git.perl.org/perl.git/commitdiff/766f891612bf493b0430beb068ead367d70cdef6
http://www.nntp.perl.org/group/perl.perl5.porters/2004/07/msg93066.html
In pp_mapwhile there was code starting at a very high address in the Perl stack and wrote backwards towards lower addresses. This broke/crashed since "guard pages" must be sequentially accesses\, Win32 alloca/_chkstk (see http://gcc.gnu.org/git/?p=gcc.git;a=blob;f=libgcc/config/i386/cygwin.S#l53 )/C99 non-const length array declarations have to call alloca/_chkstk to touch each page in sequence every 4096 bytes to allocate the block and move the guard/trap page down. IDK if this is necessary since no perl macros write backwards/lowering addresses to the perl stack and the couple rare times its found (like in pp_mapwhile) can be fixed by hand. The other choice\, I dont like\, is for the EXTEND macro to be
# define EXTEND(p\,n) (void)(UNLIKELY( (4096/sizeof(SV*)) \< (SSize_t)(n)) && \ (sp = stack_grow(sp\,p\, (SSize_t) (n))))
which will constant fold away by C compiler for all const "n"s but won't optimize away for non-const "n"s.
Currently I set the maximum VM size of Perl stack to 32 MB\, which is
( 62000000[maximum # of SVs I could push() into a @array in PP before OOM] /8[reasonable largest list processing with enough src array\, dest array\, and perl stack space to process the data set] )*4[bytes per SV*]
For comparison\, the Win32 C stack's default (and all Win32 Perls ever) maximum size is fixed at 1MB. After 1 MB it stops self-allocating and just crashes. There is a Win32 C compiler option to set it as high as you want but I know Perl and I dont think any other apps ever touch the setting.
How Windows/ReactOS self-allocates a thread's C stack http://doxygen.reactos.org/d5/d43/pagfault_8c_source.html#l00029 .
The rest of this the result of a "nmake test" on self allocating stack perl and my notes on each test failure. If there is no note above the test name\, it means I didn't investigate the failure.
--------------------------------------------------------------- x2p/s2p.t ......................................................... ok
Test Summary Report -------------------
\|/Heap corruption\, pp_split swaps Perl stack (PL_stack_sp) with random AV op/push.t (Wstat: 1280 Tes ts: 60 Failed: 0) Non-zero exit status: 5
\|/pp_split+Error #6: UNADDRESSABLE ACCESS: writing 0x1147cb28-0x1147cb2c 4 byte(s) # 0 perl520.dll!Perl_av_clear [c:\perl519\src\av.c:481] # 1 perl520.dll!Perl_pp_split [c:\perl519\src\pp.c:5473] # 2 perl520.dll!Perl_runops_debug [c:\perl519\src\dump.c:2459] # 3 perl520.dll!S_run_body [c:\perl519\src\win32\perl.c:2459] # 4 perl520.dll!perl_run [c:\perl519\src\win32\perl.c:2375] # 5 perl520.dll!RunPerl [c:\perl519\src\win32\perllib.c:258] # 6 main [c:\perl519\src\win32\perlmain.c:23] op/split.t (Wstat: 1280 Tes ts: 0 Failed: 0) Non-zero exit status: 5 Parse errors: No plan found in TAP output
\|/ creates 100 threads in 1 process\, address space exhaustion op/threads.t (Wstat: 256 Test s: 9 Failed: 0) Non-zero exit status: 1 Parse errors: Bad plan. You planned 27 tests but ran 9.
\|/Heap corruption\, pp_split swaps Perl stack (PL_stack_sp) with random AV ../cpan/Text-Tabs/t/sep.t (Wstat: 1280 Tes ts: 25 Failed: 0) Non-zero exit status: 5 ../cpan/Text-Tabs/t/sep2.t (Wstat: 1280 Tes ts: 25 Failed: 0) Non-zero exit status: 5 ../cpan/Text-Tabs/t/tabs.t (Wstat: 2304 Tes ts: 11 Failed: 0) Non-zero exit status: 9 ../cpan/Text-Tabs/t/wrap.t (Wstat: 1280 Tes ts: 30 Failed: 0) Non-zero exit status: 5
\|/Address space exhaustion at
http://perl5.git.perl.org/perl.git/blob/90b0b922bfc0b803c3769f65fbf086e6eab214fd:/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm#l35
ntdll.dll!_DbgBreakPoint@0()
perl520.dll!Perl_new_stackinfo(interpreter * my_perl=0x003641e4\,
long stitems=32\, long cxitems=41) Line 78 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4\,
sv * sv=0x08acfa24\, const magic * mg=0x08ae75e4\, sv * meth=0x028fe44c\,
unsigned long flags=0\, unsigned long argc=1\, ...) Line 1781 + 0x76 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4\, sv
* sv=0x08acfa24\, const magic * mg=0x08ae75e4\, sv * meth=0x028fe44c\,
unsigned long flags=0\, int n=1\, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4\, sv *
sv=0x08acfa24\, const magic * mg=0x08ae75e4\, sv * meth=0x028fe44c) Line
1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4\,
sv * sv=0x08acfa24\, const magic * mg=0x08ae75e4) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4\, hv *
hv=0x08bf0b24\, sv * keysv=0x08acfa04\, const char * key=0x089ff4b4\,
unsigned int klen=8\, int flags=0\, int action=8\, sv * val=0x00000000\,
unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line
4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4)
Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4\, sv *
sv=0x028fe44c\, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4\,
sv * sv=0x08acfac4\, const magic * mg=0x08ae7654\, sv * meth=0x028fe44c\,
unsigned long flags=0\, unsigned long argc=0\, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4\, sv
* sv=0x08acfac4\, const magic * mg=0x08ae7654\, sv * meth=0x028fe44c\,
unsigned long flags=0\, int n=1\, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4\, sv *
sv=0x08acfac4\, const magic * mg=0x08ae7654\, sv * meth=0x028fe44c) Line
1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4\,
sv * sv=0x08acfac4\, const magic * mg=0x08ae7654) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4\, hv *
hv=0x08bf3294\, sv * keysv=0x08acfaa4\, const char * key=0x089ff584\,
unsigned int klen=8\, int flags=0\, int action=8\, sv * val=0x00000000\,
unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line
4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4)
Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4\, sv *
sv=0x028fe44c\, volatile long flags=4098) Line 2759 + 0x36 C
******cut see attachment for entire callstack*****
../dist/Module-CoreList/t/corelist.t (Wstat:
256 Test
s: 13 Failed: 0)
Non-zero exit status: 1
Parse errors: Bad plan. You planned 25 tests but ran 13.
\|/Same as above\, address space exhaustion ../dist/Module-CoreList/t/deprecated.t (Wstat: 256 Test s: 3 Failed: 0) Non-zero exit status: 1 Parse errors: Bad plan. You planned 9 tests but ran 3. ../dist/Module-CoreList/t/is_core.t (Wstat: 256 Test s: 2 Failed: 0) Non-zero exit status: 1 Parse errors: Bad plan. You planned 34 tests but ran 2. ../dist/Module-CoreList/t/utils.t (Wstat: 256 Test s: 2 Failed: 0) Non-zero exit status: 1 Parse errors: Bad plan. You planned 9 tests but ran 2. \|/Heap corruption\, pp_split swaps Perl stack (PL_stack_sp) with random AV ../lib/Tie/Array/stdpush.t (Wstat: 1280 Tes ts: 60 Failed: 0) Non-zero exit status: 5 Files=2409\, Tests=691333\, 3367 wallclock secs (146.34 usr + 4.20 sys = 150.55 C PU) Result: FAIL NMAKE : fatal error U1077: '..\perl.exe' : return code '0x6' Stop.
C:\perl519\src\win32> -------------------------------------------------------------------
commit fc3093b45eb9ff0790ca25118825401fb7e1c7e4 Author: Daniel Dragan \bulk88@​hotmail\.com Date: Mon May 19 23:07:26 2014 -0400
WIP replace Perl stack with C style stack on Win32
Address space exhaustion at http://perl5.git.perl.org/perl.git/blob/90b0b922bfc0b803c3769f65fbf086e6eab214fd:/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm#l35
ntdll.dll!_DbgBreakPoint@0()
perl520.dll!Perl_new_stackinfo(interpreter * my_perl=0x003641e4, long stitems=32, long cxitems=41) Line 78 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08acfa24, const magic * mg=0x08ae75e4, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=1, ...) Line 1781 + 0x76 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08acfa24, const magic * mg=0x08ae75e4, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08acfa24, const magic * mg=0x08ae75e4, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08acfa24, const magic * mg=0x08ae75e4) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08bf0b24, sv * keysv=0x08acfa04, const char * key=0x089ff4b4, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08acfac4, const magic * mg=0x08ae7654, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08acfac4, const magic * mg=0x08ae7654, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08acfac4, const magic * mg=0x08ae7654, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08acfac4, const magic * mg=0x08ae7654) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08bf3294, sv * keysv=0x08acfaa4, const char * key=0x089ff584, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08acfb64, const magic * mg=0x08ae76c4, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08acfb64, const magic * mg=0x08ae76c4, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08acfb64, const magic * mg=0x08ae76c4, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08acfb64, const magic * mg=0x08ae76c4) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08bf3734, sv * keysv=0x08acfb44, const char * key=0x089ff654, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08acfc04, const magic * mg=0x08ae7914, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08acfc04, const magic * mg=0x08ae7914, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08acfc04, const magic * mg=0x08ae7914, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08acfc04, const magic * mg=0x08ae7914) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08bf3974, sv * keysv=0x08acfbe4, const char * key=0x089ff724, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08acfca4, const magic * mg=0x08ae8b1c, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08acfca4, const magic * mg=0x08ae8b1c, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08acfca4, const magic * mg=0x08ae8b1c, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08acfca4, const magic * mg=0x08ae8b1c) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08bf3ea4, sv * keysv=0x08acfc84, const char * key=0x089ffb7c, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08acfd44, const magic * mg=0x08ae8b8c, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08acfd44, const magic * mg=0x08ae8b8c, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08acfd44, const magic * mg=0x08ae8b8c, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08acfd44, const magic * mg=0x08ae8b8c) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08bf6dac, sv * keysv=0x08acfd24, const char * key=0x089ffe2c, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08acfde4, const magic * mg=0x08ae8d34, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08acfde4, const magic * mg=0x08ae8d34, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08acfde4, const magic * mg=0x08ae8d34, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08acfde4, const magic * mg=0x08ae8d34) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08bfa654, sv * keysv=0x08acfdc4, const char * key=0x089fff6c, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08acfe84, const magic * mg=0x08ae8da4, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08acfe84, const magic * mg=0x08ae8da4, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08acfe84, const magic * mg=0x08ae8da4, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08acfe84, const magic * mg=0x08ae8da4) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08bfc0fc, sv * keysv=0x08acfe64, const char * key=0x08a0003c, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08acff24, const magic * mg=0x08ae8e84, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08acff24, const magic * mg=0x08ae8e84, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08acff24, const magic * mg=0x08ae8e84, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08acff24, const magic * mg=0x08ae8e84) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08bffccc, sv * keysv=0x08acff04, const char * key=0x08a0010c, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08acffc4, const magic * mg=0x08ae8e14, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08acffc4, const magic * mg=0x08ae8e14, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08acffc4, const magic * mg=0x08ae8e14, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08acffc4, const magic * mg=0x08ae8e14) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08bfff3c, sv * keysv=0x08acffa4, const char * key=0x08a001dc, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad0064, const magic * mg=0x08ae901c, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad0064, const magic * mg=0x08ae901c, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad0064, const magic * mg=0x08ae901c, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad0064, const magic * mg=0x08ae901c) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c031d4, sv * keysv=0x08ad0034, const char * key=0x08a00534, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad0104, const magic * mg=0x08ae9c54, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad0104, const magic * mg=0x08ae9c54, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad0104, const magic * mg=0x08ae9c54, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad0104, const magic * mg=0x08ae9c54) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c08c84, sv * keysv=0x08ad00e4, const char * key=0x08a02d1c, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad01a4, const magic * mg=0x08ae9d2c, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad01a4, const magic * mg=0x08ae9d2c, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad01a4, const magic * mg=0x08ae9d2c, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad01a4, const magic * mg=0x08ae9d2c) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c0c5b4, sv * keysv=0x08ad0184, const char * key=0x08a02e5c, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad0244, const magic * mg=0x08aea594, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad0244, const magic * mg=0x08aea594, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad0244, const magic * mg=0x08aea594, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad0244, const magic * mg=0x08aea594) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c0e72c, sv * keysv=0x08ad0224, const char * key=0x08a02f9c, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5764, const magic * mg=0x08aea604, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5764, const magic * mg=0x08aea604, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5764, const magic * mg=0x08aea604, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5764, const magic * mg=0x08aea604) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c0ea0c, sv * keysv=0x08ad5744, const char * key=0x08a03a44, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5804, const magic * mg=0x08aea674, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5804, const magic * mg=0x08aea674, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5804, const magic * mg=0x08aea674, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5804, const magic * mg=0x08aea674) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c117e4, sv * keysv=0x08ad57e4, const char * key=0x08a03004, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad58a4, const magic * mg=0x08aeba7c, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad58a4, const magic * mg=0x08aeba7c, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad58a4, const magic * mg=0x08aeba7c, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad58a4, const magic * mg=0x08aeba7c) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c13bb4, sv * keysv=0x08ad5884, const char * key=0x08a04274, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5944, const magic * mg=0x08aebaec, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5944, const magic * mg=0x08aebaec, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5944, const magic * mg=0x08aebaec, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5944, const magic * mg=0x08aebaec) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c1685c, sv * keysv=0x08ad5924, const char * key=0x089ff244, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad59e4, const magic * mg=0x08aebc94, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad59e4, const magic * mg=0x08aebc94, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad59e4, const magic * mg=0x08aebc94, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad59e4, const magic * mg=0x08aebc94) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c18d8c, sv * keysv=0x08ad59c4, const char * key=0x08a069e4, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5a84, const magic * mg=0x08aebdf4, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5a84, const magic * mg=0x08aebdf4, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5a84, const magic * mg=0x08aebdf4, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5a84, const magic * mg=0x08aebdf4) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c1addc, sv * keysv=0x08ad5a64, const char * key=0x08a06b9c, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5b24, const magic * mg=0x08aebf54, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5b24, const magic * mg=0x08aebf54, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5b24, const magic * mg=0x08aebf54, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5b24, const magic * mg=0x08aebf54) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c1ea7c, sv * keysv=0x08ad5b04, const char * key=0x08a074ec, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5bc4, const magic * mg=0x08aec0b4, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5bc4, const magic * mg=0x08aec0b4, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5bc4, const magic * mg=0x08aec0b4, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5bc4, const magic * mg=0x08aec0b4) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c2e984, sv * keysv=0x08ad5ba4, const char * key=0x08a075bc, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5c64, const magic * mg=0x08aec214, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5c64, const magic * mg=0x08aec214, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5c64, const magic * mg=0x08aec214, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5c64, const magic * mg=0x08aec214) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c2ea04, sv * keysv=0x08ad5c44, const char * key=0x08a07874, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5d04, const magic * mg=0x08aec3e4, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5d04, const magic * mg=0x08aec3e4, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5d04, const magic * mg=0x08aec3e4, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5d04, const magic * mg=0x08aec3e4) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c2ea84, sv * keysv=0x08ad5ce4, const char * key=0x08a090d4, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5da4, const magic * mg=0x08aec71c, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5da4, const magic * mg=0x08aec71c, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5da4, const magic * mg=0x08aec71c, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5da4, const magic * mg=0x08aec71c) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c2eb04, sv * keysv=0x08ad5d84, const char * key=0x08a0934c, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5e44, const magic * mg=0x08aec374, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5e44, const magic * mg=0x08aec374, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5e44, const magic * mg=0x08aec374, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5e44, const magic * mg=0x08aec374) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c2eb84, sv * keysv=0x08ad5e24, const char * key=0x08a094e4, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5ee4, const magic * mg=0x08aeeb8c, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5ee4, const magic * mg=0x08aeeb8c, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5ee4, const magic * mg=0x08aeeb8c, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5ee4, const magic * mg=0x08aeeb8c) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c2ec04, sv * keysv=0x08ad5ec4, const char * key=0x08a097a4, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5f84, const magic * mg=0x08aeebfc, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5f84, const magic * mg=0x08aeebfc, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5f84, const magic * mg=0x08aeebfc, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad5f84, const magic * mg=0x08aeebfc) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c2ec84, sv * keysv=0x08ad5f64, const char * key=0x08a09afc, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6024, const magic * mg=0x08aeecd4, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6024, const magic * mg=0x08aeecd4, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6024, const magic * mg=0x08aeecd4, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6024, const magic * mg=0x08aeecd4) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c2ed04, sv * keysv=0x08ad6004, const char * key=0x08a09bcc, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad60c4, const magic * mg=0x08aeed44, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad60c4, const magic * mg=0x08aeed44, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad60c4, const magic * mg=0x08aeed44, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad60c4, const magic * mg=0x08aeed44) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c34714, sv * keysv=0x08ad60a4, const char * key=0x08a09c9c, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6164, const magic * mg=0x08aeee1c, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6164, const magic * mg=0x08aeee1c, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6164, const magic * mg=0x08aeee1c, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6164, const magic * mg=0x08aeee1c) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c34794, sv * keysv=0x08ad6144, const char * key=0x08a09f04, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6204, const magic * mg=0x08aeee8c, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6204, const magic * mg=0x08aeee8c, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6204, const magic * mg=0x08aeee8c, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6204, const magic * mg=0x08aeee8c) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c34814, sv * keysv=0x08ad61e4, const char * key=0x08a0a494, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad62a4, const magic * mg=0x08aeeefc, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad62a4, const magic * mg=0x08aeeefc, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad62a4, const magic * mg=0x08aeeefc, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad62a4, const magic * mg=0x08aeeefc) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c34894, sv * keysv=0x08ad6284, const char * key=0x08a0a724, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6344, const magic * mg=0x08aeef6c, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6344, const magic * mg=0x08aeef6c, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6344, const magic * mg=0x08aeef6c, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6344, const magic * mg=0x08aeef6c) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c34914, sv * keysv=0x08ad6324, const char * key=0x08a0c924, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad63e4, const magic * mg=0x08aeefdc, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad63e4, const magic * mg=0x08aeefdc, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad63e4, const magic * mg=0x08aeefdc, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad63e4, const magic * mg=0x08aeefdc) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c34c14, sv * keysv=0x08ad63c4, const char * key=0x08a0ca5c, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6484, const magic * mg=0x08aef414, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6484, const magic * mg=0x08aef414, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6484, const magic * mg=0x08aef414, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6484, const magic * mg=0x08aef414) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c34c94, sv * keysv=0x08ad6464, const char * key=0x08a0cc3c, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6524, const magic * mg=0x08aef484, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6524, const magic * mg=0x08aef484, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6524, const magic * mg=0x08aef484, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6524, const magic * mg=0x08aef484) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c34d14, sv * keysv=0x08ad6504, const char * key=0x08a0cd0c, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad65c4, const magic * mg=0x08aef4f4, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad65c4, const magic * mg=0x08aef4f4, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad65c4, const magic * mg=0x08aef4f4, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad65c4, const magic * mg=0x08aef4f4) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c34d94, sv * keysv=0x08ad65a4, const char * key=0x08a0cddc, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6664, const magic * mg=0x08aef5d4, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6664, const magic * mg=0x08aef5d4, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6664, const magic * mg=0x08aef5d4, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ad6664, const magic * mg=0x08aef5d4) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c34e14, sv * keysv=0x08ad6644, const char * key=0x08a0ceac, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08adcc34, const magic * mg=0x08aefe34, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08adcc34, const magic * mg=0x08aefe34, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08adcc34, const magic * mg=0x08aefe34, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08adcc34, const magic * mg=0x08aefe34) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c34e94, sv * keysv=0x08ad66e4, const char * key=0x08a0cf7c, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08adccd4, const magic * mg=0x08aeff0c, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08adccd4, const magic * mg=0x08aeff0c, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08adccd4, const magic * mg=0x08aeff0c, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08adccd4, const magic * mg=0x08aeff0c) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c34f14, sv * keysv=0x08adccb4, const char * key=0x08a0d2ac, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08adcd74, const magic * mg=0x08aef564, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08adcd74, const magic * mg=0x08aef564, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08adcd74, const magic * mg=0x08aef564, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08adcd74, const magic * mg=0x08aef564) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c34f94, sv * keysv=0x08adcd54, const char * key=0x08a0cfe4, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ae3714, const magic * mg=0x08af082c, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ae3714, const magic * mg=0x08af082c, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ae3714, const magic * mg=0x08af082c, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ae3714, const magic * mg=0x08af082c) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c35014, sv * keysv=0x08ae3634, const char * key=0x08a0d7fc, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08adce04, const magic * mg=0x08af089c, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08adce04, const magic * mg=0x08af089c, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08adce04, const magic * mg=0x08af089c, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08adce04, const magic * mg=0x08af089c) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c35094, sv * keysv=0x08adcde4, const char * key=0x08a0d93c, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ae3824, const magic * mg=0x08af2164, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ae3824, const magic * mg=0x08af2164, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ae3824, const magic * mg=0x08af2164, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ae3824, const magic * mg=0x08af2164) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c35114, sv * keysv=0x08ae3804, const char * key=0x08a0da0c, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08adcef4, const magic * mg=0x08af21d4, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08adcef4, const magic * mg=0x08af21d4, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08adcef4, const magic * mg=0x08af21d4, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08adcef4, const magic * mg=0x08af21d4) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c35194, sv * keysv=0x08ae3914, const char * key=0x08a0ed7c, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08adcf94, const magic * mg=0x08af22ac, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08adcf94, const magic * mg=0x08af22ac, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08adcf94, const magic * mg=0x08af22ac, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08adcf94, const magic * mg=0x08af22ac) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c35214, sv * keysv=0x08adcf74, const char * key=0x08a10f54, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08add034, const magic * mg=0x08af231c, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08add034, const magic * mg=0x08af231c, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08add034, const magic * mg=0x08af231c, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08add034, const magic * mg=0x08af231c) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c35414, sv * keysv=0x08add014, const char * key=0x08a112ac, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08add0d4, const magic * mg=0x08af23f4, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08add0d4, const magic * mg=0x08af23f4, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08add0d4, const magic * mg=0x08af23f4, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08add0d4, const magic * mg=0x08af23f4) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c35494, sv * keysv=0x08add0b4, const char * key=0x08a115b4, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08add104, const magic * mg=0x08af2464, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08add104, const magic * mg=0x08af2464, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08add104, const magic * mg=0x08af2464, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08add104, const magic * mg=0x08af2464) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c35514, sv * keysv=0x08add0e4, const char * key=0x08a0f0b4, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08add134, const magic * mg=0x08a1c6ec, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08add134, const magic * mg=0x08a1c6ec, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08add134, const magic * mg=0x08a1c6ec, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08add134, const magic * mg=0x08a1c6ec) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c35594, sv * keysv=0x08add114, const char * key=0x08a1dfdc, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08add164, const magic * mg=0x02976074, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08add164, const magic * mg=0x02976074, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08add164, const magic * mg=0x02976074, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08add164, const magic * mg=0x02976074) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c35614, sv * keysv=0x08add144, const char * key=0x08a1e244, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08add194, const magic * mg=0x029e1b64, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08add194, const magic * mg=0x029e1b64, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08add194, const magic * mg=0x029e1b64, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08add194, const magic * mg=0x029e1b64) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c35694, sv * keysv=0x08add174, const char * key=0x08a1791c, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08add1c4, const magic * mg=0x0299ee24, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08add1c4, const magic * mg=0x0299ee24, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08add1c4, const magic * mg=0x0299ee24, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08add1c4, const magic * mg=0x0299ee24) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c39134, sv * keysv=0x08add1a4, const char * key=0x08a1db34, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08add1f4, const magic * mg=0x08a5fa14, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08add1f4, const magic * mg=0x08a5fa14, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08add1f4, const magic * mg=0x08a5fa14, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08add1f4, const magic * mg=0x08a5fa14) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c391b4, sv * keysv=0x08add1d4, const char * key=0x08a14234, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08add224, const magic * mg=0x08a504fc, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08add224, const magic * mg=0x08a504fc, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08add224, const magic * mg=0x08a504fc, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08add224, const magic * mg=0x08a504fc) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c39234, sv * keysv=0x08add204, const char * key=0x08a15034, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08add254, const magic * mg=0x08b0f784, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08add254, const magic * mg=0x08b0f784, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08add254, const magic * mg=0x08b0f784, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08add254, const magic * mg=0x08b0f784) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c392b4, sv * keysv=0x08add234, const char * key=0x08a168bc, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08add274, const magic * mg=0x08a504bc, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08add274, const magic * mg=0x08a504bc, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08add274, const magic * mg=0x08a504bc, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08add274, const magic * mg=0x08a504bc) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c39334, sv * keysv=0x08add264, const char * key=0x08a1154c, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08add2a4, const magic * mg=0x08a7827c, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08add2a4, const magic * mg=0x08a7827c, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08add2a4, const magic * mg=0x08a7827c, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08add2a4, const magic * mg=0x08a7827c) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c39534, sv * keysv=0x08add284, const char * key=0x08a07aa4, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!Perl_call_sv(interpreter * my_perl=0x003641e4, sv * sv=0x028fe44c, volatile long flags=4098) Line 2759 + 0x36 C
perl520.dll!Perl_magic_methcall(interpreter * my_perl=0x003641e4, sv * sv=0x08ae3954, const magic * mg=0x08b0fc0c, sv * meth=0x028fe44c, unsigned long flags=0, unsigned long argc=0, ...) Line 1806 + 0x12 C
perl520.dll!S_magic_methcall1(interpreter * my_perl=0x003641e4, sv * sv=0x08ae3954, const magic * mg=0x08b0fc0c, sv * meth=0x028fe44c, unsigned long flags=0, int n=1, sv * val=0x00000000) Line 1841 + 0x25 C
perl520.dll!S_magic_methpack(interpreter * my_perl=0x003641e4, sv * sv=0x08ae3954, const magic * mg=0x08b0fc0c, sv * meth=0x028fe44c) Line 1852 + 0x1b C
perl520.dll!Perl_magic_existspack(interpreter * my_perl=0x003641e4, sv * sv=0x08ae3954, const magic * mg=0x08b0fc0c) Line 1960 + 0x57 C
perl520.dll!Perl_hv_common(interpreter * my_perl=0x003641e4, hv * hv=0x08c395b4, sv * keysv=0x08ae3934, const char * key=0x08a2be64, unsigned int klen=8, int flags=0, int action=8, sv * val=0x00000000, unsigned long hash=0) Line 501 + 0x20 C
perl520.dll!Perl_pp_exists(interpreter * my_perl=0x003641e4) Line 4725 + 0x1d C
perl520.dll!Perl_runops_debug(interpreter * my_perl=0x003641e4) Line 2459 + 0xd C
perl520.dll!S_run_body(interpreter * my_perl=0x003641e4, long oldscope=1) Line 2459 + 0xd C
perl520.dll!perl_run(interpreter * my_perl=0x003641e4) Line 2378 C
perl520.dll!RunPerl(int argc=3, char * * argv=0x00362cf0, char * * env=0x00365820) Line 258 + 0x9 C++
perl.exe!main(int argc=3, char * * argv=0x00362cf0, char * * env=0x00363280) Line 23 + 0x12 C
perl.exe!mainCRTStartup() Line 398 + 0xe C
kernel32.dll!_BaseProcessStart@4() + 0x23
On Mon May 19 21:52:25 2014\, bulk88 wrote:
I decided to try something novel. Replacing the Perl stack\, which is a very-often-bounds-checked malloc block\, with the Win32 C stack (its not the interp's OS thread's stack\, but a thread stack without any thread). There are around 160 calls to Perl_stack_grow\, and often in hot opcodes like pp_undef\, pp_shift\, pp_padsv\, pp_padrange\, and pp_aelemfast. Plus we now have fancy microchips called MMUs and support for them in AT&T SVR4. My proposal\, replace the Perl stack (and maybe more stacks like mortal stack and save stack if this works) with a self allocating/expanding memory block\, no more runtime bounds checks+function call branches. EXTEND macro is a noop. The bounds check is a SEGV. In POSIX land\, I think this scheme would be a SIGSEGV handler that calls mprotect to turn reserved address space into R/W memory. Reserved address space is free. So I hacked up a POC which is attached. And most test files pass (the others crash). So far the only 2 remaining crash/panics problems to resolve is
-address space exhaustion on 32 bits\, op/threads.t trys to launch 100 threads simultaniously\, and Module::CoreList causes huge C stack recursion in what I guess is deeply nested tied hashes\, and each recursion of magic creates a new perl stack -pp_split puts a AvREAL AV * into PL_curstack/PL_stack_sp for unknown to me reason\, then XPUSHs (EXTEND is a noop) onto faux-stack causing heap corruption
Wouldn't it be simpler to just use an anonymous file mapping?
Without SEC_COMMIT you're just allocating address space\, similar to using MAP_NORESERVE for anonymous mmap() on Linux (and Solaris.)
Unfortunately MAP_NORESERVE isn't standardized and doesn't seem to be available on the BSDs (anonymous mapping also isn't standardized\, but appears to be more commonly implemented.)
The main problem I see is one you've touched on - address space exhaustion on 32-bit platforms.
The current mechanism allows for a large stack in a single thread\, many threads with small stacks\, a small stack with large SVs and other variations I'm not going to enumerate.
Allocating large sections of address space would limit the way that a perl prcoess could use[1] memory too much.
Tony
[1] over-use\, as many would say :)
The RT System itself - Status changed from 'new' to 'open'
I already wrote a response and posted it a week ago\, but somehow it never made it\, so I am retyping it from memory. (logged out?/cookies)
On Tue May 20 22:30:53 2014\, tonyc wrote:
Wouldn't it be simpler to just use an anonymous file mapping?
No. Using a file mapping means having to keep track of a kernel file handle inaddition to the pointer to the memory block. Anon file mappings are for inter-process shared memory. Perl has no reason to share the perl stack with another process. Also file mappings are used for sliding memory "windows" into a larger file (for example\, for files too large to memory map entirely). Again that has no use for perl. Both VirtualAlloc and null/invalid file handle CreateFileMapping memory is subject to standard ejection from physical memory to paging file rules. CreateFileMapping is just alot more complicated for no benefit.
-- bulk88 ~ bulk88 at hotmail.com
I thought about the self allocating concept on *nix. Is an sbrk and/or mmap region of pages\, when initially allocated and NULL filled\, COWed to a single inter-process shared page of NULLs until it is written to\, making the page "dirty" and then being added to the non-shared private pool of the process?
If this is true\, the idea on *nix\, this idea in this commit\, can just allocates a large region of pages\, and not "reserve" address space (which later would require a mprotect call in the segv handler to allocate)\, but keeps the pages allocated from the moment of address space allocation creation? Thus removing the need for a segv handler. Of course this is highly specific to the design of the *nix kernel I think. Since if it can't COW/map together new NULL filled pages until they are first written to\, this idea will burn physical memory like crazy.
After some more work on the concept\, I've given up on trying to extract from pp_split\, the swap the perl stack with a GV AV or pad AV\, then PUSHs onto the AvREAL (I think) AV trick from Perl 3.0 from http://perl5.git.perl.org/perl.git/commitdiff/a687059cbaf2c6fdccb5e0fae2aee80ec15625a8 . Here is a diff of where this swap perl stack with a random AV code came from. If you look in the 3.0 patch\, the only part of the code that is recognizable to blead today is the comment "/* temporarily switch stacks */". I'm guessing this trick was a memory optimization.
--- C:\perl521\src\do_splitold.txt
+++ C:\perl521\src\do_splitnew.txt
@@ -1,94 +1,189 @@
int
-do_split(spat,retary,sarg,ptrmaxsarg,sargoff,cushion)
+do_split(str,spat,limit,gimme,arglast)
+STR *str;
register SPAT *spat;
-STR ***retary;
-register STR **sarg;
-int *ptrmaxsarg;
-int sargoff;
-int cushion;
+register int limit;
+int gimme;
+int *arglast;
{
- register char *s = str_get(sarg[1]);
- char *strend = s + sarg[1]->str_cur;
+ register ARRAY *ary = stack;
+ STR **st = ary->ary_array;
+ register int sp = arglast[0] + 1;
+ register char *s = str_get(st[sp]);
+ char *strend = s + st[sp--]->str_cur;
register STR *dstr;
register char *m;
- register ARRAY *ary;
- static ARRAY *myarray = Null(ARRAY*);
int iters = 0;
int i;
+ char *orig;
+ int origlimit = limit;
+ int realarray = 0;
if (!spat || !s)
fatal("panic: do_split");
else if (spat->spat_runtime) {
- m = str_get(eval(spat->spat_runtime,Null(STR***),-1));
- if (!*m || (*m == ' ' && !m[1])) {
- m = "\\s+";
+ nointrp = "|)";
+ sp = eval(spat->spat_runtime,G_SCALAR,sp);
+ st = stack->ary_array;
+ m = str_get(dstr = st[sp--]);
+ nointrp = "";
+ if (!dstr->str_cur || (*m == ' ' && dstr->str_cur == 1)) {
+ str_set(dstr,"\\s+");
+ m = dstr->str_ptr;
spat->spat_flags |= SPAT_SKIPWHITE;
}
- if (spat->spat_runtime->arg_type == O_ITEM &&
- spat->spat_runtime[1].arg_type == A_SINGLE) {
+ if (spat->spat_regexp)
+ regfree(spat->spat_regexp);
+ spat->spat_regexp = regcomp(m,m+dstr->str_cur,
+ spat->spat_flags & SPAT_FOLD,1);
+ if (spat->spat_flags & SPAT_KEEP ||
+ (spat->spat_runtime->arg_type == O_ITEM &&
+ (spat->spat_runtime[1].arg_type & A_MASK) == A_SINGLE) ) {
arg_free(spat->spat_runtime); /* it won't change, so */
spat->spat_runtime = Nullarg; /* no point compiling again */
}
- spat->spat_regexp = regcomp(m,spat->spat_flags & SPAT_FOLD,1);
}
#ifdef DEBUGGING
if (debug & 8) {
deb("2.SPAT /%s/\n",spat->spat_regexp->precomp);
}
#endif
- if (retary)
- ary = myarray;
+ ary = stab_xarray(spat->spat_repl[1].arg_ptr.arg_stab);
+ if (ary && ((ary->ary_flags & ARF_REAL) || gimme != G_ARRAY)) {
+ ary->ary_flags |= ARF_REAL;
+ realarray = 1;
+ ary->ary_fill = -1;
+ sp = -1; /* temporarily switch stacks */
+ }
else
- ary = spat->spat_repl[1].arg_ptr.arg_stab->stab_array;
- if (!ary)
- myarray = ary = anew(Nullstab);
- ary->ary_fill = -1;
+ ary = stack;
+ orig = s;
if (spat->spat_flags & SPAT_SKIPWHITE) {
while (isspace(*s))
s++;
}
+ if (!limit)
+ limit = 10001;
if (spat->spat_short) {
i = spat->spat_short->str_cur;
- while (*s && (m = fbminstr(s, strend, spat->spat_short))) {
- dstr = str_new(m-s);
- str_nset(dstr,s,m-s);
- astore(ary, iters++, dstr);
- if (iters > 10000)
- fatal("Substitution loop");
- s = m + i;
+ if (i == 1) {
+ i = *spat->spat_short->str_ptr;
+ while (--limit) {
+ for (m = s; m < strend && *m != i; m++) ;
+ if (m >= strend)
+ break;
+ if (realarray)
+ dstr = Str_new(30,m-s);
+ else
+ dstr = str_static(&str_undef);
+ str_nset(dstr,s,m-s);
+ (void)astore(ary, ++sp, dstr);
+ s = m + 1;
+ }
+ }
+ else {
+#ifndef lint
+ while (s < strend && --limit &&
+ (m=fbminstr((unsigned char*)s, (unsigned char*)strend,
+ spat->spat_short)) )
+#endif
+ {
+ if (realarray)
+ dstr = Str_new(31,m-s);
+ else
+ dstr = str_static(&str_undef);
+ str_nset(dstr,s,m-s);
+ (void)astore(ary, ++sp, dstr);
+ s = m + i;
+ }
}
}
else {
- while (*s && regexec(spat->spat_regexp, s, strend, (iters == 0), 1,
- Nullstr)) {
+ while (s < strend && --limit &&
+ regexec(spat->spat_regexp, s, strend, orig, 1, Nullstr, TRUE) ) {
+ if (spat->spat_regexp->subbase
+ && spat->spat_regexp->subbase != orig) {
+ m = s;
+ s = orig;
+ orig = spat->spat_regexp->subbase;
+ s = orig + (m - s);
+ strend = s + (strend - m);
+ }
m = spat->spat_regexp->startp[0];
- if (spat->spat_regexp->subbase)
- s = spat->spat_regexp->subbase;
- dstr = str_new(m-s);
+ if (realarray)
+ dstr = Str_new(32,m-s);
+ else
+ dstr = str_static(&str_undef);
str_nset(dstr,s,m-s);
- astore(ary, iters++, dstr);
- if (iters > 10000)
- fatal("Substitution loop");
+ (void)astore(ary, ++sp, dstr);
+ if (spat->spat_regexp->nparens) {
+ for (i = 1; i <= spat->spat_regexp->nparens; i++) {
+ s = spat->spat_regexp->startp[i];
+ m = spat->spat_regexp->endp[i];
+ if (realarray)
+ dstr = Str_new(33,m-s);
+ else
+ dstr = str_static(&str_undef);
+ str_nset(dstr,s,m-s);
+ (void)astore(ary, ++sp, dstr);
+ }
+ }
s = spat->spat_regexp->endp[0];
}
}
- if (*s) { /* ignore field after final "whitespace" */
- dstr = str_new(0); /* if they interpolate, it's null anyway */
- str_set(dstr,s);
- astore(ary, iters++, dstr);
+ if (realarray)
+ iters = sp + 1;
+ else
+ iters = sp - arglast[0];
+ if (iters > 9999)
+ fatal("Split loop");
+ if (s < strend || origlimit) { /* keep field after final delim? */
+ if (realarray)
+ dstr = Str_new(34,strend-s);
+ else
+ dstr = str_static(&str_undef);
+ str_nset(dstr,s,strend-s);
+ (void)astore(ary, ++sp, dstr);
+ iters++;
}
else {
- while (iters > 0 && !*str_get(afetch(ary,iters-1)))
- iters--;
+#ifndef I286
+ while (iters > 0 && ary->ary_array[sp]->str_cur == 0)
+ iters--,sp--;
+#else
+ char *zaps;
+ int zapb;
+
+ if (iters > 0) {
+ zaps = str_get(afetch(ary,sp,FALSE));
+ zapb = (int) *zaps;
+ }
+
+ while (iters > 0 && (!zapb)) {
+ iters--,sp--;
+ if (iters > 0) {
+ zaps = str_get(afetch(ary,iters-1,FALSE));
+ zapb = (int) *zaps;
+ }
+ }
+#endif
}
- if (retary) {
- *ptrmaxsarg = iters + sargoff;
- sarg = (STR**)saferealloc((char*)(sarg - sargoff),
- (iters+2+cushion+sargoff)*sizeof(STR*)) + sargoff;
-
- for (i = 1; i <= iters; i++)
- sarg[i] = afetch(ary,i-1);
- *retary = sarg;
+ if (realarray) {
+ ary->ary_fill = sp;
+ if (gimme == G_ARRAY) {
+ sp++;
+ astore(stack, arglast[0] + 1 + sp, Nullstr);
+ Copy(ary->ary_array, stack->ary_array + arglast[0] + 1, sp, STR*);
+ return arglast[0] + sp;
+ }
}
- return iters;
+ else {
+ if (gimme == G_ARRAY)
+ return sp;
+ }
+ sp = arglast[0] + 1;
+ str_numset(str,(double)iters);
+ STABSET(str);
+ st[sp] = str;
+ return sp;
}
My next step after the REXTEND workaround (R=real)\, is to benchmark this since its stable enough to run now.
-- bulk88 ~ bulk88 at hotmail.com
On Mon Jun 02 22:54:57 2014\, bulk88 wrote:
My next step after the REXTEND workaround (R=real)\, is to benchmark this since its stable enough to run now.
noextend (self allocating stack) perl is reliable 2% faster on perlbench
ext noext ext2 noext2 --- ----- ---- ------ arith/mixed 100 98 100 98 arith/trig 100 98 100 98 array/copy 100 99 101 99 array/foreach 100 101 99 101 array/index 100 110 100 109 array/pop 100 104 101 102 array/shift 100 102 101 101 array/sort-num 100 101 101 102 array/sort 100 97 100 98 call/0arg 100 103 98 104 call/1arg 100 100 98 99 call/2arg 100 109 103 109 call/9arg 100 101 100 102 call/empty 100 98 100 99 call/fib 100 99 99 99 call/method 100 99 101 99 call/wantarray 100 102 100 101 hash/copy 100 91 99 95 hash/each 100 102 101 101 hash/foreach-sort 100 101 100 101 hash/foreach 100 101 98 101 hash/get 100 103 103 103 hash/set 100 102 98 104 loop/for-c 100 104 102 105 loop/for-range-const 100 106 100 107 loop/for-range 100 116 99 118 loop/getline 100 101 100 101 loop/while-my 100 101 99 102 loop/while 100 107 100 106 re/const 100 99 100 99 re/w 100 100 101 99 startup/fewmod - - - - startup/lotsofsub - - - - startup/noprog 100 102 101 114 string/base64 100 99 100 100 string/htmlparser 100 99 100 99 string/index-const 100 90 101 95 string/index-var 100 126 99 127 string/ipol 100 96 101 95 string/tr 100 101 101 101
AVERAGE 100 102 100 102
Results saved in file:///C|/sources/perlbench/benchres-004/index.html
C:\sources\perlbench>perl perlbench-run -c 100000 noext=C:\perl521\noextend\bin\
Now to reverse the order of the perls\, to squeeze out outside effects
noext ext noext2 ext2 ----- --- ------ ---- arith/mixed 100 102 100 102 arith/trig 100 102 100 102 array/copy 100 101 101 101 array/foreach 100 98 101 98 array/index 100 91 101 92 array/pop 100 98 99 99 array/shift 100 99 100 100 array/sort-num 100 99 100 100 array/sort 100 103 100 103 call/0arg 100 95 99 95 call/1arg 100 96 99 99 call/2arg 100 94 100 91 call/9arg 100 96 99 97 call/empty 100 102 100 102 call/fib 100 96 100 101 call/method 100 103 102 103 call/wantarray 100 99 101 99 hash/copy 100 99 108 102 hash/each 100 99 99 99 hash/foreach-sort 100 98 99 98 hash/foreach 100 100 100 99 hash/get 100 104 103 101 hash/set 100 99 99 98 loop/for-c 100 96 101 97 loop/for-range-const 100 93 110 93 loop/for-range 100 84 99 84 loop/getline 100 99 99 98 loop/while-my 100 98 101 97 loop/while 100 94 101 94 re/const 100 101 99 101 re/w 100 101 101 101 startup/fewmod - - 100 - startup/lotsofsub - - - - startup/noprog 100 91 91 87 string/base64 100 100 100 101 string/htmlparser 100 100 99 100 string/index-const 100 110 106 110 string/index-var 100 78 100 78 string/ipol 100 105 98 105 string/tr 100 99 100 99
AVERAGE 100 98 100 98
Results saved in file:///C|/sources/perlbench/benchres-005/index.html
C:\sources\perlbench>
the largest difference was string/index-var at 26% faster. Many of the tests are noise\, since they are less than 2% faster or upto 2% slower\, and testing regular perl (regular malloc stack) against regular perlshows it can be 1-2% faster\, which means that is noise. The largest perf decrease with no extend perl was 5% slower on string/index-const and string/ipol.
This means more optimizing since I am looking things up with syscalls instead of caching them. Or a 4096 byte initial stack is too small and needs to be 8k. Or EXTEND() needs to be similar to win32 alloca and do something special if the extend request is more than 4096/sizeof(SV*) to do just 1 VM syscall to get multiple pages instead of address faulting and SEH exception dispatch and VM syscalls numerous times (once for each page).
-- bulk88 ~ bulk88 at hotmail.com
On Tue Jun 03 17:46:19 2014\, bulk88 wrote:
the largest difference was string/index-var at 26% faster. Many of the tests are noise\, since they are less than 2% faster or upto 2% slower\, and testing regular perl (regular malloc stack) against regular perlshows it can be 1-2% faster\, which means that is noise. The largest perf decrease with no extend perl was 5% slower on string/index-const and string/ipol.
This means more optimizing since I am looking things up with syscalls instead of caching them. Or a 4096 byte initial stack is too small and needs to be 8k. Or EXTEND() needs to be similar to win32 alloca and do something special if the extend request is more than 4096/sizeof(SV*) to do just 1 VM syscall to get multiple pages instead of address faulting and SEH exception dispatch and VM syscalls numerous times (once for each page).
With some changes\, string/index-const is now faster\, but some other things are slower and more jittery. "hash/get" and "hash/copy" was 5% faster on the 2nd run of the same binary than on the first run.
ext noext ext2 noext2 --- ----- ---- ------ arith/mixed 100 97 100 97 arith/trig 100 100 100 99 array/copy 100 100 101 100 array/foreach 100 99 101 101 array/index 100 105 100 104 array/pop 100 102 100 103 array/shift 100 101 100 102 array/sort-num 100 100 100 100 array/sort 100 99 100 100 call/0arg 100 99 100 100 call/1arg 100 101 101 102 call/2arg 100 99 100 100 call/9arg 100 113 100 114 call/empty 100 103 98 102 call/fib 100 107 102 108 call/method 100 102 100 102 call/wantarray 100 104 99 104 hash/copy 100 94 100 100 hash/each 100 108 99 107 hash/foreach-sort 100 101 100 101 hash/foreach 100 94 100 94 hash/get 100 119 105 119 hash/set 100 101 102 102 loop/for-c 100 95 100 94 loop/for-range-const 100 104 100 104 loop/for-range 100 104 101 103 loop/getline 100 97 100 102 loop/while-my 100 104 99 104 loop/while 100 105 100 104 re/const 100 102 100 103 re/w 100 103 100 103 startup/fewmod 100 112 - 81 startup/lotsofsub - - - - startup/noprog 100 95 98 93 string/base64 100 100 99 101 string/htmlparser 100 97 101 97 string/index-const 100 105 95 106 string/index-var 100 101 99 101 string/ipol 100 96 100 95 string/tr 100 93 101 94
AVERAGE 100 102 100 101
Results saved in file:///C|/sources/perlbench/benchres-006/index.html
noext ext noext2 ext2 ----- --- ------ ---- arith/mixed 100 103 100 103 arith/trig 100 102 100 101 array/copy 100 100 100 99 array/foreach 100 101 101 101 array/index 100 96 100 95 array/pop 100 97 99 97 array/shift 100 99 100 99 array/sort-num 100 101 100 100 array/sort 100 101 100 101 call/0arg 100 101 99 100 call/1arg 100 99 100 99 call/2arg 100 102 99 101 call/9arg 100 89 100 89 call/empty 100 96 99 96 call/fib 100 94 100 95 call/method 100 97 100 97 call/wantarray 100 96 100 96 hash/copy 100 107 107 112 hash/each 100 93 99 94 hash/foreach-sort 100 100 101 102 hash/foreach 100 106 100 107 hash/get 100 88 101 87 hash/set 100 99 100 99 loop/for-c 100 107 101 106 loop/for-range-const 100 95 98 95 loop/for-range 100 97 101 97 loop/getline 100 101 95 101 loop/while-my 100 97 99 96 loop/while 100 95 98 94 re/const 100 98 99 97 re/w 100 98 100 98 startup/fewmod 100 111 71 111 startup/lotsofsub - - - - startup/noprog 100 104 98 111 string/base64 100 98 100 99 string/htmlparser 100 104 100 103 string/index-const 100 94 100 90 string/index-var 100 99 100 99 string/ipol 100 99 100 100 string/tr 100 110 101 110
AVERAGE 100 99 99 99
I moved the try/catch to a more global location\, thinking the overhead up setting up the Win32 OS exception handler and removing it was causing overhead. Apparently\, runops_standard is entered and left 100s-1000s of times in a typical process's life.
perl521.dll!Perl_runops_standard(interpreter * my_perl=0x00364694) Line 42 C perl521.dll!Perl_call_sv(interpreter * my_perl=0x00364694\, sv * sv=0x027fcb94\, volatile long flags=13) Line 2773 + 0xc C perl521.dll!Perl_call_list(interpreter * my_perl=0x00364694\, long oldscope=2\, av * paramList=0x027fcc04) Line 4891 C perl521.dll!S_process_special_blocks(interpreter * my_perl=0x00070023\, long floor=37\, const char * const fullname=0x02808c40\, gv * const gv=0x027fcc14\, cv * const cv=0x027fcb94) Line 8121 C perl521.dll!Perl_newATTRSUB_x(interpreter * my_perl=0x00000000\, long floor=37\, op * o=0x02808a50\, op * proto=0x00000000\, void * attrs=0x2802d28c\, op * block=0x02808a70\, char o_is_gv=0) Line 8081 + 0x13 C perl521.dll!Perl_utilize(interpreter * my_perl=0x00000000\, int aver=1\, long floor=37\, op * version=0x00000000\, op * idop=0x00000000\, op * arg=0x02808848) Line 5447 + 0x7b C perl521.dll!Perl_yyparse(interpreter * my_perl=0x00364694\, int gramtype=1) Line 398 + 0x16 C perl521.dll!S_parse_body(interpreter * my_perl=0x00000000\, char * * env=0x00362a20\, void (interpreter *)* xsinit=0x280b4ca8) Line 2300 + 0xd C perl521.dll!perl_parse(interpreter * my_perl=0x00364694\, void (interpreter *)* xsinit=0x280b4ca8\, int argc=2\, char * * argv=0x00362478\, char * * env=0x00362a20) Line 1610 C perl521.dll!RunPerl(int argc=2\, char * * argv=0x00362478\, char * * env=0x00362a20) Line 254 + 0x12 C perl.exe!mainCRTStartup() Line 398 + 0xe C kernel32.dll!_BaseProcessStart@4() + 0x23
perl521.dll!Perl_runops_standard(interpreter * my_perl=0x00364694) Line 42 C perl521.dll!Perl_call_sv(interpreter * my_perl=0x00364694\, sv * sv=0x027fcd54\, volatile long flags=13) Line 2773 + 0xc C perl521.dll!Perl_call_list(interpreter * my_perl=0x00364694\, long oldscope=9\, av * paramList=0x027fccc4) Line 4891 C perl521.dll!S_process_special_blocks(interpreter * my_perl=0x00070023\, long floor=163\, const char * const fullname=0x02808c40\, gv * const gv=0x027fcd94\, cv * const cv=0x027fcd54) Line 8121 C perl521.dll!Perl_newATTRSUB_x(interpreter * my_perl=0x00000000\, long floor=163\, op * o=0x028103e8\, op * proto=0x00000000\, void * attrs=0x2802d28c\, op * block=0x02810004\, char o_is_gv=0) Line 8081 + 0x13 C perl521.dll!Perl_utilize(interpreter * my_perl=0x00000000\, int aver=1\, long floor=163\, op * version=0x00000000\, op * idop=0x027fcce4\, op * arg=0x00000000) Line 5447 + 0x7b C perl521.dll!Perl_yyparse(interpreter * my_perl=0x00364694\, int gramtype=1) Line 398 + 0x16 C perl521.dll!S_doeval(interpreter * my_perl=0x00364694\, int gimme=2\, cv * outside=0x00000000\, unsigned long seq=0\, hv * hh=0x00000000) Line 3504 C perl521.dll!Perl_pp_require(interpreter * my_perl=0x0280546c) Line 4161 + 0x21 C perl521.dll!Perl_runops_standard(interpreter * my_perl=0x00364694) Line 42 + 0x4 C perl521.dll!Perl_call_sv(interpreter * my_perl=0x00364694\, sv * sv=0x027fcd54\, volatile long flags=13) Line 2773 + 0xc C perl521.dll!Perl_call_list(interpreter * my_perl=0x00364694\, long oldscope=2\, av * paramList=0x027fcc04) Line 4891 C perl521.dll!S_process_special_blocks(interpreter * my_perl=0x00070023\, long floor=37\, const char * const fullname=0x02808c40\, gv * const gv=0x027fcc14\, cv * const cv=0x027fcb94) Line 8121 C perl521.dll!Perl_newATTRSUB_x(interpreter * my_perl=0x00000000\, long floor=37\, op * o=0x02808a50\, op * proto=0x00000000\, void * attrs=0x2802d28c\, op * block=0x02808a70\, char o_is_gv=0) Line 8081 + 0x13 C perl521.dll!Perl_utilize(interpreter * my_perl=0x00000000\, int aver=1\, long floor=37\, op * version=0x00000000\, op * idop=0x00000000\, op * arg=0x02808848) Line 5447 + 0x7b C perl521.dll!Perl_yyparse(interpreter * my_perl=0x00364694\, int gramtype=1) Line 398 + 0x16 C perl521.dll!S_parse_body(interpreter * my_perl=0x00000000\, char * * env=0x00362a20\, void (interpreter *)* xsinit=0x280b4ca8) Line 2300 + 0xd C perl521.dll!perl_parse(interpreter * my_perl=0x00364694\, void (interpreter *)* xsinit=0x280b4ca8\, int argc=2\, char * * argv=0x00362478\, char * * env=0x00362a20) Line 1610 C perl521.dll!RunPerl(int argc=2\, char * * argv=0x00362478\, char * * env=0x00362a20) Line 254 + 0x12 C perl.exe!mainCRTStartup() Line 398 + 0xe C kernel32.dll!_BaseProcessStart@4() + 0x23
perl521.dll!Perl_runops_standard(interpreter * my_perl=0x00364694) Line 42 C perl521.dll!S_fold_constants(interpreter * my_perl=0x00364694\, op * o=0x02816080) Line 3598 C perl521.dll!Perl_newUNOP(interpreter * my_perl=0x00364694\, long type=20\, long flags=0\, op * first=0x028160bc) Line 4296 + 0x16 C perl521.dll!Perl_yyparse(interpreter * my_perl=0x00364694\, int gramtype=6) Line 1200 C perl521.dll!S_doeval(interpreter * my_perl=0x047f0004\, int gimme=2\, cv * outside=0x00364694\, unsigned long seq=2\, hv * hh=0x00000000) Line 3504 C perl521.dll!Perl_pp_require(interpreter * my_perl=0x0280988c) Line 4161 + 0x21 C perl521.dll!Perl_runops_standard(interpreter * my_perl=0x00364694) Line 42 + 0x4 C perl521.dll!Perl_call_sv(interpreter * my_perl=0x00364694\, sv * sv=0x00000006\, volatile long flags=0) Line 2773 + 0xc C perl521.dll!Perl_call_list(interpreter * my_perl=0x00364694\, long oldscope=9\, av * paramList=0x027fccc4) Line 4891 C perl521.dll!S_process_special_blocks(interpreter * my_perl=0x00070023\, long floor=148\, const char * const fullname=0x02808c40\, gv * const gv=0x027fcd94\, cv * const cv=0x027fcd64) Line 8121 C perl521.dll!Perl_newATTRSUB_x(interpreter * my_perl=0x00000000\, long floor=148\, op * o=0x0281174c\, op * proto=0x00000000\, void * attrs=0x2802d28c\, op * block=0x0281176c\, char o_is_gv=0) Line 8081 + 0x13 C perl521.dll!Perl_utilize(interpreter * my_perl=0x00364694\, int aver=1\, long floor=148\, op * version=0x00000000\, op * idop=0x00000000\, op * arg=0x00000000) Line 5447 + 0x7b C perl521.dll!Perl_yyparse(interpreter * my_perl=0x00364694\, int gramtype=1) Line 398 + 0x16 C perl521.dll!S_doeval(interpreter * my_perl=0x047f0004\, int gimme=2\, cv * outside=0x00364694\, unsigned long seq=0\, hv * hh=0x00000000) Line 3504 C perl521.dll!Perl_pp_require(interpreter * my_perl=0x0280546c) Line 4161 + 0x21 C perl521.dll!Perl_runops_standard(interpreter * my_perl=0x00364694) Line 42 + 0x4 C perl521.dll!Perl_call_sv(interpreter * my_perl=0x00364694\, sv * sv=0x00000006\, volatile long flags=0) Line 2773 + 0xc C perl521.dll!Perl_call_list(interpreter * my_perl=0x00364694\, long oldscope=2\, av * paramList=0x027fcc04) Line 4891 C perl521.dll!S_process_special_blocks(interpreter * my_perl=0x00070023\, long floor=37\, const char * const fullname=0x02808c40\, gv * const gv=0x027fcc14\, cv * const cv=0x027fcb94) Line 8121 C perl521.dll!Perl_newATTRSUB_x(interpreter * my_perl=0x00000000\, long floor=37\, op * o=0x02808a50\, op * proto=0x00000000\, void * attrs=0x2802d28c\, op * block=0x02808a70\, char o_is_gv=0) Line 8081 + 0x13 C perl521.dll!Perl_utilize(interpreter * my_perl=0x00364694\, int aver=1\, long floor=37\, op * version=0x00000000\, op * idop=0x00000000\, op * arg=0x02808848) Line 5447 + 0x7b C perl521.dll!Perl_yyparse(interpreter * my_perl=0x00364694\, int gramtype=1) Line 398 + 0x16 C perl521.dll!S_parse_body(interpreter * my_perl=0x00364694\, char * * env=0x00362a20\, void (interpreter *)* xsinit=0x280b4ca8) Line 2300 + 0xd C perl521.dll!perl_parse(interpreter * my_perl=0x00364694\, void (interpreter *)* xsinit=0x280b4ca8\, int argc=2\, char * * argv=0x00362478\, char * * env=0x00362a20) Line 1610 C perl521.dll!RunPerl(int argc=2\, char * * argv=0x00362478\, char * * env=0x00362a20) Line 254 + 0x12 C perl.exe!mainCRTStartup() Line 398 + 0xe C kernel32.dll!_BaseProcessStart@4() + 0x23
perl521.dll!Perl_runops_standard(interpreter * my_perl=0x00364694) Line 38 C perl521.dll!S_fold_constants(interpreter * my_perl=0x00364694\, op * o=0x02835adc) Line 3598 C perl521.dll!Perl_convert(interpreter * my_perl=0x00364694\, long type=68\, long flags=0\, op * o=0x0012f2cc) Line 3741 + 0x16 C perl521.dll!Perl_yyparse(interpreter * my_perl=0x00364694\, int gramtype=68) Line 865 C perl521.dll!S_doeval(interpreter * my_perl=0x0012f2d0\, int gimme=2\, cv * outside=0x0012f2cc\, unsigned long seq=100\, hv * hh=0x00000000) Line 3504 C perl521.dll!Perl_pp_require(interpreter * my_perl=0x02820dd4) Line 4161 + 0x21 C perl521.dll!Perl_runops_standard(interpreter * my_perl=0x00364694) Line 42 + 0x4 C perl521.dll!Perl_call_sv(interpreter * my_perl=0x066f0000\, sv * sv=0x02832768\, volatile long flags=42149792) Line 2773 + 0xc C perl521.dll!Perl_call_list(interpreter * my_perl=0x00364694\, long oldscope=17\, av * paramList=0x0282491c) Line 4891 C perl521.dll!S_process_special_blocks(interpreter * my_perl=0x00070023\, long floor=301\, const char * const fullname=0x02808c40\, gv * const gv=0x028249fc\, cv * const cv=0x0282499c) Line 8121 C perl521.dll!Perl_newATTRSUB_x(interpreter * my_perl=0x00000000\, long floor=301\, op * o=0x02832724\, op * proto=0x00000000\, void * attrs=0x2802d28c\, op * block=0x02832744\, char o_is_gv=0) Line 8081 + 0x13 C perl521.dll!Perl_utilize(interpreter * my_perl=0x0012f2cc\, int aver=1\, long floor=301\, op * version=0x00000000\, op * idop=0x00000000\, op * arg=0x00000000) Line 5447 + 0x7b C perl521.dll!Perl_yyparse(interpreter * my_perl=0x00364694\, int gramtype=1) Line 398 + 0x16 C perl521.dll!S_doeval(interpreter * my_perl=0x0012f2d0\, int gimme=2\, cv * outside=0x0012f2cc\, unsigned long seq=99\, hv * hh=0x00000000) Line 3504 C perl521.dll!Perl_pp_require(interpreter * my_perl=0x0280a3e4) Line 4161 + 0x21 C perl521.dll!Perl_runops_standard(interpreter * my_perl=0x00364694) Line 42 + 0x4 C perl521.dll!Perl_call_sv(interpreter * my_perl=0x066f0000\, sv * sv=0x02832768\, volatile long flags=42149792) Line 2773 + 0xc C perl521.dll!Perl_call_list(interpreter * my_perl=0x00364694\, long oldscope=10\, av * paramList=0x027fccf4) Line 4891 C perl521.dll!S_process_special_blocks(interpreter * my_perl=0x00070023\, long floor=190\, const char * const fullname=0x02808c40\, gv * const gv=0x0282423c\, cv * const cv=0x0282467c) Line 8121 C perl521.dll!Perl_newATTRSUB_x(interpreter * my_perl=0x00000000\, long floor=190\, op * o=0x02809da4\, op * proto=0x00000000\, void * attrs=0x2802d28c\, op * block=0x02809dc4\, char o_is_gv=0) Line 8081 + 0x13 C perl521.dll!Perl_utilize(interpreter * my_perl=0x0012f2cc\, int aver=1\, long floor=190\, op * version=0x00000000\, op * idop=0x00000000\, op * arg=0x00000000) Line 5447 + 0x7b C perl521.dll!Perl_yyparse(interpreter * my_perl=0x00364694\, int gramtype=1) Line 398 + 0x16 C perl521.dll!S_doeval(interpreter * my_perl=0x0012f2d0\, int gimme=2\, cv * outside=0x0012f2cc\, unsigned long seq=25\, hv * hh=0x00000000) Line 3504 C perl521.dll!Perl_pp_require(interpreter * my_perl=0x0280988c) Line 4161 + 0x21 C perl521.dll!Perl_runops_standard(interpreter * my_perl=0x00364694) Line 42 + 0x4 C perl521.dll!Perl_call_sv(interpreter * my_perl=0x066f0000\, sv * sv=0x02832768\, volatile long flags=42149792) Line 2773 + 0xc C perl521.dll!Perl_call_list(interpreter * my_perl=0x00364694\, long oldscope=2\, av * paramList=0x027fcc04) Line 4891 C perl521.dll!S_process_special_blocks(interpreter * my_perl=0x00070023\, long floor=37\, const char * const fullname=0x02808c40\, gv * const gv=0x027fcc14\, cv * const cv=0x027fcb94) Line 8121 C perl521.dll!Perl_newATTRSUB_x(interpreter * my_perl=0x00000000\, long floor=37\, op * o=0x02808a50\, op * proto=0x00000000\, void * attrs=0x2802d28c\, op * block=0x02808a70\, char o_is_gv=0) Line 8081 + 0x13 C perl521.dll!Perl_utilize(interpreter * my_perl=0x0012f2cc\, int aver=1\, long floor=37\, op * version=0x00000000\, op * idop=0x00000000\, op * arg=0x02808848) Line 5447 + 0x7b C perl521.dll!Perl_yyparse(interpreter * my_perl=0x00364694\, int gramtype=1) Line 398 + 0x16 C perl521.dll!S_parse_body(interpreter * my_perl=0x0012f2cc\, char * * env=0x00362a20\, void (interpreter *)* xsinit=0x280b4ca8) Line 2300 + 0xd C perl521.dll!perl_parse(interpreter * my_perl=0x00364694\, void (interpreter *)* xsinit=0x280b4ca8\, int argc=2\, char * * argv=0x00362478\, char * * env=0x00362a20) Line 1610 C perl521.dll!RunPerl(int argc=2\, char * * argv=0x00362478\, char * * env=0x00362a20) Line 254 + 0x12 C perl.exe!mainCRTStartup() Line 398 + 0xe C kernel32.dll!_BaseProcessStart@4() + 0x23
perl521.dll!Perl_runops_standard(interpreter * my_perl=0x00364694) Line 38 C perl521.dll!Perl_call_sv(interpreter * my_perl=0x00364694\, sv * sv=0x02869da4\, volatile long flags=4098) Line 2758 + 0x20 C perl521.dll!Perl_magic_methcall(interpreter * my_perl=0x00000000\, sv * sv=0x02838b44\, const magic * mg=0x02809da4\, sv * meth=0x02869da4\, unsigned long flags=0\, unsigned long argc=0\, ...) Line 1810 + 0xe C perl521.dll!S_magic_methcall1(interpreter * my_perl=0x0012f808\, sv * sv=0x02838b44\, const magic * mg=0x00364694\, sv * meth=0x02869da4\, unsigned long flags=0\, int n=1\, sv * val=0x00000000) Line 1845 + 0x17 C perl521.dll!S_magic_methpack(interpreter * my_perl=0x00000000\, sv * sv=0x02838b44\, const magic * mg=0x00364694\, sv * meth=0x02869da4) Line 1856 + 0x15 C perl521.dll!Perl_magic_getpack(interpreter * my_perl=0x00364694\, sv * sv=0x02838b44\, magic * mg=0x02809da4) Line 1869 + 0x2f C perl521.dll!Perl_mg_get(interpreter * my_perl=0x00364694\, sv * sv=0x02838b44) Line 205 C perl521.dll!Perl_sv_setsv_flags(interpreter * my_perl=0x00364694\, sv * dstr=0x0282491c\, sv * sstr=0x0000000a\, const long flags=1538) Line 4237 C perl521.dll!Perl_pp_aassign(interpreter * my_perl=0x028f000c) Line 1175 + 0xe C perl521.dll!Perl_runops_standard(interpreter * my_perl=0x00364694) Line 42 + 0x4 C perl521.dll!Perl_call_sv(interpreter * my_perl=0x00364694\, sv * sv=0x02869da4\, volatile long flags=4098) Line 2773 + 0xc C perl521.dll!Perl_call_list(interpreter * my_perl=0x00364694\, long oldscope=2\, av * paramList=0x027fcc04) Line 4891 C perl521.dll!S_process_special_blocks(interpreter * my_perl=0x00070023\, long floor=37\, const char * const fullname=0x02808c40\, gv * const gv=0x027fcc14\, cv * const cv=0x027fcb94) Line 8121 C perl521.dll!Perl_newATTRSUB_x(interpreter * my_perl=0x00000000\, long floor=37\, op * o=0x02808a50\, op * proto=0x00000000\, void * attrs=0x2802d28c\, op * block=0x02808a70\, char o_is_gv=0) Line 8081 + 0x13 C perl521.dll!Perl_utilize(interpreter * my_perl=0x00000000\, int aver=1\, long floor=37\, op * version=0x00000000\, op * idop=0x00000000\, op * arg=0x02808848) Line 5447 + 0x7b C perl521.dll!Perl_yyparse(interpreter * my_perl=0x00364694\, int gramtype=1) Line 398 + 0x16 C perl521.dll!S_parse_body(interpreter * my_perl=0x00000000\, char * * env=0x00362a20\, void (interpreter *)* xsinit=0x280b4ca8) Line 2300 + 0xd C perl521.dll!perl_parse(interpreter * my_perl=0x00364694\, void (interpreter *)* xsinit=0x280b4ca8\, int argc=2\, char * * argv=0x00362478\, char * * env=0x00362a20) Line 1610 C perl521.dll!RunPerl(int argc=2\, char * * argv=0x00362478\, char * * env=0x00362a20) Line 254 + 0x12 C perl.exe!mainCRTStartup() Line 398 + 0xe C kernel32.dll!_BaseProcessStart@4() + 0x23
And after all that painful stuff above\, runops is called for one final time as
perl521.dll!Perl_pp_leavesub(interpreter * my_perl=0x00364694) Line 2463 + 0x1 C perl521.dll!Perl_runops_standard(interpreter * my_perl=0x00364694) Line 42 + 0x4 C perl521.dll!S_run_body(interpreter * my_perl=0x7c36b01a\, long oldscope=1) Line 2458 + 0xa C perl521.dll!perl_run(interpreter * my_perl=0x00364694) Line 2374 + 0x8 C perl521.dll!RunPerl(int argc=2\, char * * argv=0x00362478\, char * * env=0x00362a20) Line 261 + 0x8 C perl.exe!mainCRTStartup() Line 398 + 0xe C kernel32.dll!_BaseProcessStart@4() + 0x23
But it might not be the source of all slowness\, since some things improved\, and some got worse.
-- bulk88 ~ bulk88 at hotmail.com
I created a version of self allocating stacks\, where EXTEND still has the normal overhead but instead of malloc mem\, it uses OS VM directly. Only 3 functions in the binary are different (create the stack AV\, dup it\, free it and RunPerl). After taking about an hour of time to make the benchmarks below\, it shows\, that using a VM block instead of an malloc block is usually "slower"\, and in some cases faster. I wonder if what I am testing is function alignment\, or is the 0x1000 alignment of OS VM causing cache associativity collisions and cache misses.
ext extvm ext2 extvm2 --- ----- ---- ------ arith/mixed 100 97 100 97 arith/trig 100 94 100 94 array/copy 100 95 100 96 array/foreach 100 96 100 96 array/index 100 107 100 106 array/pop 100 100 101 99 array/shift 100 98 100 98 array/sort-num 100 100 100 100 array/sort 100 99 100 99 call/0arg 100 99 99 99 call/1arg 100 101 100 101 call/2arg 100 99 100 99 call/9arg 100 106 100 107 call/empty 100 100 100 100 call/fib 100 112 102 112 call/method 100 98 100 98 call/wantarray 100 103 100 103 hash/copy 100 101 98 105 hash/each 100 103 100 104 hash/foreach-sort 100 100 100 99 hash/foreach 100 98 100 99 hash/get 100 120 99 111 hash/set 100 102 101 104 loop/for-c 100 104 100 103 loop/for-range-const 100 79 100 79 loop/for-range 100 78 100 78 loop/getline 100 98 100 98 loop/while-my 100 101 100 101 loop/while 100 89 100 89 re/const 100 101 100 101 re/w 100 102 102 100 startup/fewmod 100 96 95 89 startup/lotsofsub 100 67 101 67 startup/noprog 100 100 103 101 string/base64 100 101 100 101 string/htmlparser 100 99 100 99 string/index-const 100 110 104 111 string/index-var 100 98 100 98 string/ipol 100 102 106 103 string/tr 100 95 100 95
AVERAGE 100 99 100 98
Results saved in file:///C|/sources/perlbench/benchres-009/index.html
C:\sources\perlbench>
-- bulk88 ~ bulk88 at hotmail.com
On Mon Jun 02 22:54:57 2014\, bulk88 wrote:
I thought about the self allocating concept on *nix. Is an sbrk and/or mmap region of pages\, when initially allocated and NULL filled\, COWed to a single inter-process shared page of NULLs until it is written to\, making the page "dirty" and then being added to the non-shared private pool of the process?
That would be implementation dependent.
POSIX doesn't discuss anonymous mappings. POSIX 2008 doesn't discuss brk()/sbrk() (they've been removed)
Tony
This work seems to have died without a resolution. Barring further submissions from @bulk88 (PR please!) I suggest closing this case.
Migrated from rt.perl.org#121923 (status was 'open')
Searchable as RT121923$