Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

multiple evaluation problems in Perl_nextargv #12603

Closed
p5pRT opened this issue Nov 22, 2012 · 4 comments
Closed

multiple evaluation problems in Perl_nextargv #12603

p5pRT opened this issue Nov 22, 2012 · 4 comments

Comments

@p5pRT
Copy link

p5pRT commented Nov 22, 2012

Migrated from rt.perl.org#115860 (status was 'rejected')

Searchable as RT115860$

@p5pRT
Copy link
Author

p5pRT commented Nov 22, 2012

From @bulk88

Created by @bulk88

At
http​://perl5.git.perl.org/perl.git/blob/b3efb2487fa7bdef70865822dabaa2dc0000dde1​:/doio.c#l750
gv_add_by_type is being called twice through the GvSVn macro. That SV *
probably needs to be cached so the computer isn't looking inside the GV
* over and over between each func call. It looks like more things like
that av aren't being cached, but this func looks too complicated for me
to touch and I am not very familiar with GV mechanics.

Perl Info

Flags:
    category=core
    severity=low

Site configuration information for perl 5.17.6:

Configured by Owner at Mon Nov 19 20:00:41 2012.

Summary of my perl5 (revision 5 version 17 subversion 6 patch blead 
2012-11-20.00:13:41 4c88d5e0740d796bf5064336d280bba72897f385 
v5.17.5-576-g4c88d5e) configuration:
  Snapshot of: 4c88d5e0740d796bf5064336d280bba72897f385
  Platform:
    osname=MSWin32, osvers=5.1, archname=MSWin32-x86-multi-thread
    uname=''
    config_args='undef'
    hint=recommended, useposix=true, d_sigaction=undef
    useithreads=define, usemultiplicity=define
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=undef, use64bitall=undef, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cl', ccflags ='-nologo -GF -W3 -MD -Zi -DNDEBUG -O1 -GL -G7 
-DWIN32 -D_CONSOLE -DNO_STRICT  -DPERL_TEXTMODE_SCRIPTS 
-DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO 
-D_USE_32BIT_TIME_T',
    optimize='-MD -Zi -DNDEBUG -O1 -GL -G7',
    cppflags='-DWIN32'
    ccversion='13.10.6030', gccversion='', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
    d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=8
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='__int64', 
lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='link', ldflags ='-nologo -nodefaultlib -debug -opt:ref,icf 
-ltcg  -libpath:"c:\perl517\lib\CORE"  -machine:x86'
    libpth="C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\lib"
    libs=oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib  
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib  
netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib  version.lib 
odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib
    perllibs=oldnames.lib kernel32.lib user32.lib gdi32.lib 
winspool.lib  comdlg32.lib advapi32.lib shell32.lib ole32.lib 
oleaut32.lib  netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib  
version.lib odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib
    libc=msvcrt.lib, so=dll, useshrplib=true, libperl=perl517.lib
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
    cccdlflags=' ', lddlflags='-dll -nologo -nodefaultlib -debug 
-opt:ref,icf -ltcg  -libpath:"c:\perl517\lib\CORE"  -machine:x86'

Locally applied patches:
    


@INC for perl 5.17.6:
    C:/perl517/site/lib
    C:/perl517/lib
    .


Environment for perl 5.17.6:
    HOME (unset)
    LANG (unset)
    LANGUAGE (unset)
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
    PATH=C:\perl517\bin;C:\Program Files\Microsoft Visual Studio .NET 
2003\Common7\IDE;C:\Program Files\Microsoft Visual Studio .NET 
2003\VC7\BIN;C:\Program Files\Microsoft Visual Studio .NET 
2003\Common7\Tools;C:\Program Files\Microsoft Visual Studio .NET 
2003\Common7\Tools\bin\prerelease;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32\wbem;
    PERL_BADLANG (unset)
    SHELL (unset)


@p5pRT
Copy link
Author

p5pRT commented Nov 13, 2017

From zefram@fysh.org

gv_add_by_type is being called twice through the GvSVn macro.

No, it is not called twice. GvSVn() checks whether the scalar slot is
already filled, and only calls gv_add_by_type() if it's not. After the
first GvSVn() the scalar slot is necessarily filled, so there will be no
further call. The indirection through the glob is being done multiple
times, but that's comparatively cheap, not worth complexifying this code
to avoid. This ticket should be closed.

-zefram

@p5pRT
Copy link
Author

p5pRT commented Nov 13, 2017

The RT System itself - Status changed from 'new' to 'open'

@p5pRT p5pRT closed this as completed Nov 13, 2017
@p5pRT
Copy link
Author

p5pRT commented Nov 13, 2017

@cpansprout - Status changed from 'open' to 'rejected'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant