diff options
author | Leon Brocard <acme@astray.com> | 2008-03-26 10:53:43 +0000 |
---|---|---|
committer | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2008-03-26 11:17:38 +0000 |
commit | 9df8f87f35bbd21fa58b4d70ffdb1ad756f24463 (patch) | |
tree | 59bc97fb77cc3a262f0ed660b1f6981df55c84e2 /pod/perlhack.pod | |
parent | 2ae0a74966707398e37b803bd8871b91077f0ff6 (diff) | |
download | perl-9df8f87f35bbd21fa58b4d70ffdb1ad756f24463.tar.gz |
Re: [PATCH] perlhack.pod update walkthrough
From: "Leon Brocard" <acme@astray.com>
Message-ID: <a92222c80803260353k6cae53eieea909aed0a967b5@mail.gmail.com>
p4raw-id: //depot/perl@33570
Diffstat (limited to 'pod/perlhack.pod')
-rw-r--r-- | pod/perlhack.pod | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/pod/perlhack.pod b/pod/perlhack.pod index d76261d0c3..cf38f03980 100644 --- a/pod/perlhack.pod +++ b/pod/perlhack.pod @@ -760,8 +760,11 @@ This is very high-level code, enough to fit on a single screen, and it resembles the code found in L<perlembed>; most of the real action takes place in F<perl.c> +F<perlmain.c> is generated by L<writemain> from F<miniperlmain.c> at +make time, so you should make perl to follow this along. + First, F<perlmain.c> allocates some memory and constructs a Perl -interpreter: +interpreter, along these lines: 1 PERL_SYS_INIT3(&argc,&argv,&env); 2 @@ -790,16 +793,19 @@ later: C<PerlMem_malloc> is either your system's C<malloc>, or Perl's own C<malloc> as defined in F<malloc.c> if you selected that option at configure time. -Next, in line 7, we construct the interpreter; this sets up all the -special variables that Perl needs, the stacks, and so on. +Next, in line 7, we construct the interpreter using perl_construct, +also in F<perl.c>; this sets up all the special variables that Perl +needs, the stacks, and so on. Now we pass Perl the command line options, and tell it to go: exitstatus = perl_parse(my_perl, xs_init, argc, argv, (char **)NULL); - if (!exitstatus) { - exitstatus = perl_run(my_perl); - } + if (!exitstatus) + perl_run(my_perl); + + exitstatus = perl_destruct(my_perl); + perl_free(my_perl); C<perl_parse> is actually a wrapper around C<S_parse_body>, as defined in F<perl.c>, which processes the command line options, sets up any @@ -3112,10 +3118,10 @@ then finally report any memory problems. =head2 valgrind The excellent valgrind tool can be used to find out both memory leaks -and illegal memory accesses. As of August 2003 it unfortunately works -only on x86 (ELF) Linux. The special "test.valgrind" target can be used -to run the tests under valgrind. Found errors and memory leaks are -logged in files named F<testfile.valgrind>. +and illegal memory accesses. As of version 3.3.0, Valgrind only +supports Linux on x86, x86-64 and PowerPC. The special "test.valgrind" +target can be used to run the tests under valgrind. Found errors +and memory leaks are logged in files named F<testfile.valgrind>. Valgrind also provides a cachegrind tool, invoked on perl as: |