เบžเบฒเบชเบฒเบญเบฑเบ‡เบเบดเบ”เบžเบฒเบชเบฒเบเบฃเบฑเปˆเบ‡เปเบญเบชเบ›เบฒเป‚เบเบ™

OnWorks favicon

perlintern - เบญเบญเบ™เบฅเบฒเบเปƒเบ™เบ„เบฅเบฒเบง

เป€เบ›เบตเบ”เปƒเบŠเป‰ perlintern เปƒเบ™ OnWorks เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบŸเบฃเบตเบœเปˆเบฒเบ™ Ubuntu Online, Fedora Online, Windows online emulator เบซเบผเบท MAC OS online emulator

เบ™เบตเป‰เปเบกเปˆเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ perlintern เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป„เบ”เป‰เปƒเบ™ OnWorks เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบŸเบฃเบตเป‚เบ”เบเปƒเบŠเป‰เบซเบ™เบถเปˆเบ‡เปƒเบ™เบซเบผเบฒเบเป†เบšเปˆเบญเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบญเบญเบ™เป„เบฅเบ™เปŒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบŠเบฑเปˆเบ™ Ubuntu Online, Fedora Online, Windows online emulator เบซเบผเบท MAC OS online emulator

เป‚เบ„เบ‡เบเบฒเบ™:

NAME


perlintern - เป€เบญเบเบฐเบชเบฒเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆ Perl เบžเบฒเบเปƒเบ™เบขเปˆเบฒเบ‡เบ”เบฝเบง

เบฅเบฒเบเบฅเบฐเบญเบฝเบ”


เป„เบŸเบฅเปŒเบ™เบตเป‰เปเบกเปˆเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบขเบนเปˆเปƒเบ™เบ•เบปเบงเปเบ›เบžเบฒเบชเบฒ Perl เบ—เบตเปˆเป€เบ›เบฑเบ™
เป€เบญเบเบฐเบชเบฒเบ™เป‚เบ”เบเปƒเบŠเป‰เบฎเบนเบšเปเบšเบšเป€เบญเบเบฐเบชเบฒเบ™เบžเบฒเบเปƒเบ™เบ‚เบญเบ‡ Perl เปเบ•เปˆเบšเปเปˆเป„เบ”เป‰เบ–เบทเบเปเบฒเบเบงเปˆเบฒเป€เบ›เบฑเบ™เบชเปˆเบงเบ™เปœเบถเปˆเบ‡เบ‚เบญเบ‡
Perl API. เปƒเบ™เบ„เปเบฒเบชเบฑเบšเบ•เปˆเบฒเบ‡เป†เบญเบทเปˆเบ™เป†, เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ เบกเบต เบšเปเปˆ เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ in เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ!

เบฅเบงเบšเบฅเบงเบกเป€เบงเบฅเบฒ เบ‚เบญเบšเป€เบ‚เบ” hooks


BhkENTRY
เปเบฒเบเป€เบซเบ”: เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบ—เบปเบ”เบฅเบญเบ‡ เปเบฅเบฐเบญเบฒเบ”เบˆเบฐเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ เบซเบผเบทเบ–เบทเบเบ–เบญเบ”เบญเบญเบเป‚เบ”เบเบšเปเปˆเป„เบ”เป‰เปเบˆเป‰เบ‡เปƒเบซเป‰เบฎเบนเป‰เบฅเปˆเบงเบ‡เปœเป‰เบฒ.

เบชเบปเปˆเบ‡เบ„เบทเบ™เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเป‚เบ„เบ‡เบชเป‰เบฒเบ‡ BHK. เบ—เบตเปˆ เป€เบ›เบฑเบ™ token preprocessor เบŠเบตเป‰เบšเบญเบ
เบ—เบตเปˆเบˆเบฐเบเบฑเบšเบ„เบทเบ™. เบ–เป‰เบฒเบ—เบธเบ‡เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ•เบฑเป‰เบ‡, เบกเบฑเบ™เบˆเบฐเบเบฑเบšเบ„เบทเบ™เบกเบฒ NULL.
เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบกเบนเบ™เบ„เปˆเบฒเบเบฑเบšเบ„เบทเบ™เปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบฅเบฒเบเบเบฒเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป.

void * BhkENTRY(BHK *hk, เป€เบŠเบดเปˆเบ‡)

BhkFLAGS
เปเบฒเบเป€เบซเบ”: เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบ—เบปเบ”เบฅเบญเบ‡ เปเบฅเบฐเบญเบฒเบ”เบˆเบฐเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ เบซเบผเบทเบ–เบทเบเบ–เบญเบ”เบญเบญเบเป‚เบ”เบเบšเปเปˆเป„เบ”เป‰เปเบˆเป‰เบ‡เปƒเบซเป‰เบฎเบนเป‰เบฅเปˆเบงเบ‡เปœเป‰เบฒ.

เบเบฑเบšเบ„เบทเบ™เบ—เบธเบ‡เบ‚เบญเบ‡ BHK.

U32 BhkFLAGS(BHK *hk)

CALL_BLOCK_HOOKS
เปเบฒเบเป€เบซเบ”: เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบ—เบปเบ”เบฅเบญเบ‡ เปเบฅเบฐเบญเบฒเบ”เบˆเบฐเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ เบซเบผเบทเบ–เบทเบเบ–เบญเบ”เบญเบญเบเป‚เบ”เบเบšเปเปˆเป„เบ”เป‰เปเบˆเป‰เบ‡เปƒเบซเป‰เบฎเบนเป‰เบฅเปˆเบงเบ‡เปœเป‰เบฒ.

เป‚เบ—เบซเบฒเบ—เบฑเบ‡เบซเบกเบปเบ” hooks เบ•เบฑเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบชเปเบฒเบฅเบฑเบšเบ›เบฐเป€เบžเบ” เบ—เบตเปˆ. เบ—เบตเปˆ เปเบกเปˆเบ™เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบเปˆเบญเบ™
token; เบ›เบฐโ€‹เป€เบžเบ”โ€‹เบ‚เบญเบ‡โ€‹ arg เบ‚เบถเป‰เบ™โ€‹เบเบฑเบš เบ—เบตเปˆ.

CALL_BLOCK_HOOKS เป€เบ›เบฑเบ™เป‚เบกเบ„เบฐ (เป€เบŠเบดเปˆเบ‡, เป‚เบ•เป‰เปเบเป‰เบ‡)

Custom เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™


core_prototype
เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เบเบณเบ™เบปเบ”เบ•เบปเป‰เบ™เปเบšเบšเบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เบซเบผเบฑเบเบ—เบตเปˆเบกเบตเบŠเบทเปˆเบงเปˆเบฒ "sv", เบซเบผเบท a
new mortal SV เบ–เป‰เบฒ "sv" เป€เบ›เบฑเบ™ NULL. เบกเบฑเบ™เบชเบปเปˆเบ‡เบ„เบทเบ™ "sv", เบซเบผเบท NULL เบ–เป‰เบฒเป€เบ›เบฑเบ™เบซเบผเบฑเบ
เบŸเบฑเบ‡เบŠเบฑเบ™เบšเปเปˆเบกเบตเบ•เบปเป‰เบ™เปเบšเบš. "code" เปเบกเปˆเบ™เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบชเบปเปˆเบ‡เบ„เบทเบ™เป‚เบ”เบ "keyword()". เบกเบฑเบ™เบ•เป‰เบญเบ‡
เบšเปเปˆเป€เบ—เบปเปˆเบฒเบเบฑเบš 0.

SV * core_prototype(SV *sv, const char *เบŠเบทเปˆ,
const int เบฅเบฐโ€‹เบซเบฑเบ”โ€‹,
int * const opnum)

CV เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™ เบซเบ™เป‰เบฒเบ—เบตเปˆ


docatch เบเบงเบ”เป€เบšเบดเปˆเบ‡เบเปเบฅเบฐเบ™เบต 0 เบซเบผเบท 3 เบ‚เบญเบ‡ cur_env.je_ret, เปƒเบŠเป‰เบžเบฝเบ‡เปเบ•เปˆเบžเบฒเบเปƒเบ™เบšเปเบฅเบดเบšเบปเบ” eval.

0 เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบ›เบฑเบ™เบชเบทเบšเบ•เปเปˆเบžเบฒเบเปƒเบ™ evaal,

3 เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบชเบเบŠเบตเบงเบดเบ”เบ—เบตเปˆเบˆเบฑเบšเป„เบ”เป‰เป‚เบ”เบ eval เบžเบฒเบเปƒเบ™ - เบชเบทเบšเบ•เปเปˆเบงเบปเบ‡เบžเบฒเบเปƒเบ™

เป€เบšเบดเปˆเบ‡ cop.h: je_mustcatch, เป€เบกเบทเปˆเบญเบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบš runlevel เปƒเบ”เป€เบ›เบฑเบ™ TRUE, เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ eval ops เบ•เป‰เบญเบ‡.
เบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡ jmpenv เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบเบฒเบ™เบเบปเบเป€เบงเบฑเป‰เบ™.

OP* docatch(OP*o)

CV เบญเป‰เบฒเบ‡เบญเบดเบ‡ เบเบฒเบ™เบ™เบฑเบš เปเบฅเบฐ CvOUTSIDE


CvWEAKOUTSIDE
เปเบ•เปˆเบฅเบฐ CV เบกเบตเบ•เบปเบงเบŠเบตเป‰, "CvOUTSIDE()", เบ•เปเปˆเบเบฑเบš CV เบ—เบตเปˆเบกเบต lexically enclosing (เบ–เป‰เบฒเบกเบต).
เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ•เบปเบงเบŠเบตเป‰เป„เบ›เบซเบฒ prototypes เบเปˆเบญเบเบ—เบตเปˆเบšเปเปˆเป€เบ›เบตเบ”เป€เบœเบตเบเบŠเบทเปˆเปเบกเปˆเบ™เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™ "&" pad slots, เบกเบฑเบ™เปเบกเปˆเบ™.
เป€เบ›เบฑเบ™โ€‹เป„เบ›โ€‹เป„เบ”เป‰โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบญเป‰เบฒเบ‡โ€‹เบญเบตเบ‡โ€‹เป€เบ›เบฑเบ™โ€‹เบงเบปเบ‡โ€‹, เบเบฑเบšโ€‹เบžเปเปˆโ€‹เปเบกเปˆโ€‹เบŠเบตเป‰โ€‹เป„เบ›โ€‹เบซเบฒโ€‹เป€เบ”เบฑเบโ€‹เบ™เป‰เบญเบโ€‹เปเบฅเบฐโ€‹
เปƒเบ™เบ—เบฒเบ‡เบเบฑเบšเบเบฑเบ™. เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบฎเบปเปˆเบงเป„เบซเบผเบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เป€เบžเบตเปˆเบกเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡
เบ™เบฑเบšเบ‚เบญเบ‡ CV เบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เป‚เบ”เบ "CvOUTSIDE" เปƒเบ™ เบซเบ™เบถเปˆเบ‡ เบชเบฐเป€เบžเบฒเบฐ เบ•เบปเบงเบขเปˆเบฒเบ‡ เบงเปˆเบฒ
เบžเปเปˆเปเบกเปˆเบกเบตเบŠเปˆเบญเบ‡เบชเบฝเบš "&" เบŠเบตเป‰เบเบฑเบšเบ„เบทเบ™เป„เบ›เบšเปˆเบญเบ™เบžเบงเบเป€เบฎเบปเบฒ. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบ™เบปเบ”
เบ—เบธเบ‡ "CvWEAKOUTSIDE" เปƒเบ™เป€เบ”เบฑเบ. เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบ™เบปเบ”เบžเบฒเบเปƒเบ•เป‰เบชเบดเปˆเบ‡เบ—เบตเปˆ
เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ„เบงเบ™เบˆเบฐเบซเบผเบธเบ”เบฅเบปเบ‡เบเบฒเบ™ refcount เบ‚เบญเบ‡เบžเปเปˆเปเบกเปˆเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ freeing เป„เบ”เป‰
เป€เบ”เบฑเบเบ™เป‰เบญเบ.

เบกเบตเบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เบ•เบทเปˆเบกเบญเบตเบเบเบฑเบš subs เบ—เบตเปˆเบšเปเปˆเป€เบ›เบตเบ”เป€เบœเบตเบเบŠเบทเปˆเบ—เบตเปˆเบšเปเปˆเบ›เบดเบ” (เป€เบŠเบฑเปˆเบ™เบ™เบฑเป‰เบ™
เบซเป‰เบฒเบกเบญเป‰เบฒเบ‡เป€เบ–เบดเบ‡เบ„เบณเบชเบฑเบšเปƒเบ”เบ™เบถเปˆเบ‡เบ—เบตเปˆเบ™เบญเบเป€เปœเบทเบญเบ™เบฑเป‰เบ™). เปƒเบ™โ€‹เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เบ™เบตเป‰โ€‹, anonymous เป„เบ”เป‰โ€‹
เบ•เบปเป‰เบ™เปเบšเบšเบ–เบทเบเปเบšเปˆเบ‡เบ›เบฑเบ™เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบ–เบทเบเป‚เบ„เบ™. เบ™เบตเป‰โ€‹เบกเบตโ€‹เบœเบปเบ™โ€‹เบชเบฐโ€‹เบ—เป‰เบญเบ™โ€‹เบ—เบตเปˆโ€‹
เบžเปเปˆเปเบกเปˆเบญเบฒเบ”เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบปเบ”เบ›เปˆเบญเบเปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบเบฑเบ‡เบกเบตเป€เบ”เบฑเบเบ™เป‰เบญเบเบ—เบตเปˆเบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง, เบ•เบปเบงเบขเปˆเบฒเบ‡

BEGIN { $a = เบเปˆเบญเบ { eval '$x' } }

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, BEGIN เบ–เบทเบเบ›เบปเบ”เบ›เปˆเบญเบเบ—เบฑเบ™เบ—เบตเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบšเปเปˆเบกเบต
เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡เบขเปˆเบฒเบ‡เบซเป‰เบฒเบงเบซเบฑเบ™เบเบฑเบšเบกเบฑเบ™: เบ•เบปเป‰เบ™เปเบšเบšเบเปˆเบญเบเบ‚เบญเบ‡ anon เบกเบต "CvWEAKOUTSIDE" เบ•เบฑเป‰เบ‡เป„เบงเป‰เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบกเบฑเบ™เป€เบ›เบฑเบ™
เบšเปเปˆเปเบกเปˆเบ™เบเบฒเบ™เบ›เบดเบ”, เปเบฅเบฐ $a เบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™ CV เบ”เบฝเบงเบเบฑเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบ›เบฐเบเบญเบšเบชเปˆเบงเบ™เป€เบ‚เบปเป‰เบฒเปƒเบ™ BEGIN's
refcount เบšเปเปˆเบงเปˆเบฒ. เป€เบกเบทเปˆเบญ $a เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”, "eval '$x'" เป€เบฎเบฑเบ”เปƒเบซเป‰เบ•เปˆเบญเบ‡เป‚เบชเป‰เบ‚เบญเบ‡
"CvOUTSIDE" เบ—เบตเปˆเบˆเบฐเบ•เบดเบ”เบ•เบฒเบก, เปเบฅเบฐ BEGIN เบ—เบตเปˆเบ–เบทเบเบ›เบปเบ”เบ›เปˆเบญเบเปเบกเปˆเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡.

เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบ™เบตเป‰, เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆ CV เปเบฅเบฐเปเบœเปˆเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบ‚เบญเบ‡เบกเบฑเบ™เบ–เบทเบเบ›เบปเบ”เบ›เปˆเบญเบ, เบ—เบธเบเป† "&" เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™
pad เป„เบ”เป‰เบ–เบทเบเป‚เบเบเบเป‰เบฒเบเบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™เบญเบญเบเบˆเบฒเบ pad, เปเบฅเบฐเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบเบฒเบ™ refcount เบ‚เบญเบ‡ pointed-to
anon sub เบเบฑเบ‡เป€เบ›เบฑเบ™เบšเบงเบ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ "CvOUTSIDE" เป€เบ”เบฑเบเบ™เป‰เบญเบเบ™เบฑเป‰เบ™เบ–เบทเบเบ•เบฑเป‰เบ‡เปƒเบซเป‰เบŠเบตเป‰เป„เบ›เบซเบฒเบกเบฑเบ™
เบžเปเปˆเป€เบ–เบปเป‰เบฒ. เบ™เบตเป‰เบˆเบฐเป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบเปเบฅเบฐเบ™เบตเบชเบฐเป€เบžเบฒเบฐเบ”เบฝเบงเบ‚เบญเบ‡เบเบฒเบ™เบšเปเปˆเบ›เบดเบ”
anon prototype เบกเบตเบซเบ™เบถเปˆเบ‡เบซเบผเบทเบซเบผเบฒเบเบเบงเปˆเบฒเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡เบ—เบตเปˆเบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง (เป€เบŠเบฑเปˆเบ™: $a เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡).

เบชเบดเปˆเบ‡เบญเบทเปˆเบ™เบ—เบตเปˆเบ„เบงเบ™เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเปเบกเปˆเบ™เบงเปˆเบฒ CV เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ
เบ›เบปเบ”เบ›เปˆเบญเบ, เบ•เบปเบงเบขเปˆเบฒเบ‡ "undef & foo". เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, refcount เบ‚เบญเบ‡เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบšเปเปˆเป„เบ”เป‰เป€เบ–เบดเบ‡เบชเบนเบ™, เปเบ•เปˆ
เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบเบฑเบ‡โ€‹เบˆเบฐโ€‹เบฅเบปเบš pad เปเบฅเบฐ "CvROOTโ€‹" เบ‚เบญเบ‡โ€‹เบ•เบปเบ™โ€‹เปเบฅเบฐโ€‹เบญเบทเปˆเบ™เป†. เป€เบ™เบทเปˆเบญเบ‡โ€‹เบˆเบฒเบโ€‹เบงเปˆเบฒโ€‹เป€เบ”เบฑเบโ€‹เบ™เป‰เบญเบโ€‹เบ•เปˆเบฒเบ‡เป†โ€‹เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เบเบฑเบ‡โ€‹
เบกเบต "CvOUTSIDE" เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบŠเบตเป‰เปƒเบชเปˆ CV เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบฎเบฑเบเบชเบฒ "CvOUTSIDE" เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡.
เปƒเบ™เป€เบงเบฅเบฒเบ™เบตเป‰, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบฅเบฐเบšเบปเบšเบ•เปˆเบญเบ‡เป‚เบชเป‰เบ‚เบญเบ‡เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡ lexical เปเบกเปˆเบ™ unbroken. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡,
เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบ„เบงเบ™เบžเบดเบก 123:

$x เบ‚เบญเบ‡เบ‚เป‰เบญเบ = 123;
เบเปˆเบญเบ tmp { เบเปˆเบญเบ { eval '$x' } }
$a เบ‚เบญเบ‡เบ‚เป‰เบญเบ = tmp();
undef &tmp;
เบžเบดเบก $a->();

bool CvWEAKOUTSIDE(CV *cv)

เบเบฒเบ™เบเบฑเบ‡ เบซเบ™เป‰เบฒเบ—เบตเปˆ


cv_dump เบ–เบดเป‰เบกเป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡ CV

void cv_dump(CV *cv, const char *title)

cv_forget_slab
เป€เบกเบทเปˆเบญ CV เบกเบตเบเบฒเบ™เบ™เบฑเบšเบญเป‰เบฒเบ‡เบญเบตเบ‡เปƒเบชเปˆเบเบฒเบญเบฑเบ”เบ›เบฒเบเบ‚เบธเบกเบ‚เบญเบ‡เบกเบฑเบ™ (CvSLABBED), เบกเบฑเบ™เบฎเบฑเบšเบœเบดเบ”เบŠเบญเบš
เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบกเบฑเบ™เบ–เบทเบเบ›เบปเบ”เบ›เปˆเบญเบ. (เป€เบžเบฒเบฐเบชเบฐเบ™เบฑเป‰เบ™, เบšเปเปˆเบกเบตเบชเบญเบ‡ CVs เบ„เบงเบ™เบกเบตเป€เบญเบเบฐเบชเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡
เบเบฒเบญเบฑเบ”เบ›เบฒเบเบ‚เบธเบกเบ”เบฝเบงเบเบฑเบ™.) CV เบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เบเบฒเบญเบฑเบ”เบ›เบฒเบเบ‚เบธเบกเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก. เบ„เบฑเป‰เบ‡เบ”เบฝเบง
เบกเบฑเบ™เบ–เบทเบเบฅเบงเบšเบฅเบงเบกเปเบฅเบฐเบ•เบดเบ” CvROOT, เบกเบฑเบ™เป„เบ”เป‰เบชเปเบฒเป€เบฅเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบกเบฑเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบฅเบทเบกเป„เบ”เป‰
เบเบฒเบญเบฑเบ”เบ›เบฒเบเบ‚เบธเบก.

void cv_forget_slab(CV *cv)

do_dump_pad
เบ–เบดเป‰เบกเป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡ padlist

void do_dump_pad(เบฅเบฐเบ”เบฑเบš I32, PerlIO *file,
PADLIST *padlist, เป€เบ•เบฑเบก)

padlist_dup
เบชเบณเป€เบ™เบปเบฒเปเบœเปˆเบ™เบฎเบญเบ‡.

PADLIST * padlist_dup(PADLIST *srcpad,
CLONE_PARAMS *param)

padnamelist_dup
เบŠเปเป‰เบฒเบเบฑเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบŠเบทเปˆเปเบœเปˆเบ™.

PADNAMELIST * padnamelist_dup(PADNAMELIST *srcpad,
CLONE_PARAMS *param)

padname_dup
เบŠเปเป‰เบฒเบเบฑเบ™เบŠเบทเปˆเปเบœเปˆเบ™.

PADNAME * padname_dup(PADNAME *src, CLONE_PARAMS *param)

pad_alloc_name
เบˆเบฑเบ”เบชเบฑเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบขเบนเปˆเปƒเบ™ pad เบฅเบงเบšเบฅเบงเบกเบ›เบฐเบˆเบธเบšเบฑเบ™ (เบœเปˆเบฒเบ™ "pad_alloc" เปƒเบ™ perlapi) เปเบฅเบฐ
เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบŠเบทเปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบ™เบฑเป‰เบ™. เบŠเบทเปˆ เบ–เบทเบเบฎเบฑเบšเบฎเบญเบ‡เป€เบญเบปเบฒเปเบฅเบฐเบเบฒเบเป€เบ›เบฑเบ™เบŠเบทเปˆเป€เบ‚เบปเป‰เบฒ; เบกเบฑเบ™
เบ•เป‰เบญเบ‡เบกเบตเบชเบฐเบ•เบฃเบดเบ‡เบŠเบทเปˆเบขเบนเปˆเบเปˆเบญเบ™เปเบฅเป‰เบง. เป€เบ„เบทเปˆเบญเบ‡เบžเบดเบก เปเบฅเบฐ ourstash เปเบฅเบฐ
เบ—เบธเบ‡ "padadd_STATE" เบ–เบทเบเป€เบžเบตเปˆเบกเปƒเบชเปˆ เบŠเบทเปˆ. เบšเปเปˆโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบ›เบธเบ‡โ€‹เปเบ•เปˆเบ‡โ€‹เบญเบทเปˆเบ™เป†โ€‹เบ‚เบญเบ‡โ€‹
"pad_add_name_pvn" เปƒเบ™ perlapi เปเบกเปˆเบ™เปเบฅเป‰เบง. เบ•เบญเบšเบ„เปˆเบฒเบŠเบปเบ”เป€เบŠเบตเบเบ‚เบญเบ‡เปเบœเปˆเบ™เบ—เบตเปˆเบˆเบฑเบ”เบชเบฑเบ™
เป‚เบกเป‰.

PADOFFSET pad_alloc_name(PADNAME *เบŠเบทเปˆ, เบ—เบธเบ‡ U32,
HV *typestash, HV *ourstash)

pad_block_start
เบญเบฑเบšเป€เบ”เบ”เบ•เบปเบงเปเบ›เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™ pad เปƒเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบšเบฅเบฑเบญเบเปƒเบซเบกเปˆ.

void pad_block_start(เป€เบ•เบฑเบก)

pad_check_dup
เบเบงเบ”เป€เบšเบดเปˆเบ‡เบเบฒเบ™เบ›เบฐเบเบฒเบ”เบŠเปเป‰เบฒเบเบฑเบ™: เบฅเบฒเบเบ‡เบฒเบ™เปƒเบ”เป†เบ‚เบญเบ‡:

* a my เปƒเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ›เบฐเบˆเบธเบšเบฑเบ™เบ—เบตเปˆเบกเบตเบŠเบทเปˆเบ”เบฝเบงเบเบฑเบ™;
* an our (เบšเปˆเบญเบ™โ€‹เปƒเบ”โ€‹เบเปโ€‹เบ•เบฒเบกโ€‹เปƒเบ™ pad เป„เบ”เป‰โ€‹) เบ—เบตเปˆโ€‹เบกเบตโ€‹เบŠเบทเปˆโ€‹เบ”เบฝเบงโ€‹เบเบฑเบ™โ€‹เปเบฅเบฐโ€‹
เบชเบฐโ€‹เบ–เบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบ”เบฝเบงโ€‹เบเบฑเบ™โ€‹เบเบฑเบš C

"is_our" เบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเบŠเบทเปˆเบ—เบตเปˆเบˆเบฐเบเบงเบ”เบชเบญเบšเปเบกเปˆเบ™เบเบฒเบ™เบ›เบฐเบเบฒเบ” 'เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ'.

void pad_check_dup(PADNAME *เบŠเบทเปˆ, U32 เบ—เบธเบ‡,
const HV *ourstash)

pad_findlex
เบŠเบญเบเบซเบฒ lexical เบ—เบตเปˆเบกเบตเบŠเบทเปˆเบ—เบธเบเบšเปˆเบญเบ™เปƒเบ™เบฅเบฐเบšเบปเบšเบ•เปˆเบญเบ‡เป‚เบชเป‰เบ‚เบญเบ‡ pads เบฎเบฑเบ‡. เบ•เบทเปˆเบกเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบ›เบญเบกเปƒเบ™
pads เบžเบฒเบเปƒเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบžเบปเบšเป€เบซเบฑเบ™เบขเบนเปˆเปƒเบ™เบซเบ™เบถเปˆเบ‡เบ™เบญเบ.

เบชเบปเปˆเบ‡เบ„เปˆเบฒเบŠเบปเบ”เป€เบŠเบตเบเปƒเบ™เปเบœเปˆเบ™เบฅเบธเปˆเบกเบชเบธเบ”เบ‚เบญเบ‡ lex เบซเบผเบท lex เบ›เบญเบก. cv เปเบกเปˆเบ™ CV เปƒเบ™
เป€เบŠเบดเปˆเบ‡เป€เบžเบทเปˆเบญเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒ, เปเบฅเบฐ seq เปเบกเปˆเบ™ cop_seq เปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เบ—เบตเปˆเบˆเบฐเบเบปเบ‡เบเบฑเบš. เบ–เป‰เบฒ
เบ„เปเบฒเป€เบ•เบทเบญเบ™เปเบกเปˆเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡, เบžเบดเบกเบ„เปเบฒเป€เบ•เบทเบญเบ™เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก. เบ„เปˆเบฒ out_* vars เบเบฑเบšเบ„เบทเบ™, เปเบฅเบฐเบญเบทเปˆเบ™เป†
เปเบกเปˆเบ™เบ•เบปเบงเบŠเบตเป‰เป„เบ›เบซเบฒเบšเปˆเบญเบ™เบ—เบตเปˆเบ„เปˆเบฒเบเบฑเบšเบ„เบทเบ™เบ„เบงเบ™เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰. out_capture, เบ–เป‰เบฒเบšเปเปˆเปเบกเปˆเบ™
null, เบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเป‰เบ•เบปเบงเบขเปˆเบฒเบ‡ innermost เบ‚เบญเบ‡ lexical เป„เบ”เป‰เบ–เบทเบ captured; out_name เปเบกเปˆเบ™
เบ•เบฑเป‰เบ‡เป€เบ›เบฑเบ™เบŠเบทเปˆ pad เบ—เบตเปˆเบเบปเบ‡เบเบฑเบ™เบžเบฒเบเปƒเบ™เบ—เบตเปˆเบชเบธเบ”เบซเบผเบทเบŠเบทเปˆ pad เบ›เบญเบก; out_flags เบเบฑเบšเบ„เบทเบ™
เบ—เบธเบ‡เบ—เบตเปˆเบ›เบปเบเบเบฐเบ•เบดเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™ PARENT_FAKELEX_FLAGS เบ‚เบญเบ‡เบŠเบทเปˆเปเบœเปˆเบ™เบ›เบญเบก.

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒ pad_findlex() เปเบกเปˆเบ™ recursive; เบกเบฑเบ™ recurses เป€เบ–เบดเบ‡เบฅเบฐเบšเบปเบšเบ•เปˆเบญเบ‡เป‚เบชเป‰เบ‚เบญเบ‡ CVs, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฒ
เบเบฑเบšเบ„เบทเบ™เป„เบ›เบšเปˆเบญเบ™เบฅเบปเบ‡, เป€เบžเบตเปˆเบกเบฅเบฒเบเบเบฒเบ™เบ›เบญเบกเบ•เบฒเบกเบ—เบตเปˆเบกเบฑเบ™เป„เบ›. เบกเบฑเบ™เบ•เป‰เบญเบ‡เป€เบ›เบฑเบ™เปเบšเบšเบ™เบตเป‰เป€เบžเบฒเบฐเบ›เบญเบก
เบŠเบทเปˆเปƒเบ™ anon protoypes เบˆเบฐเบ•เป‰เบญเบ‡เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปƒเบ™ xlow เบ”เบฑเบ”เบŠเบฐเบ™เบตเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ pad เบžเปเปˆเปเบกเปˆ.

PADOFFSET pad_findlex(const char *namepv,
STRLEN namelen, เบ—เบธเบ‡ U32,
const CV* cv, U32 seq, int เป€เบ•เบทเบญเบ™,
SV** out_capture,
PADNAME** out_name,
int *out_flags)

pad_fixup_inner_anons
เบชเปเบฒเบฅเบฑเบš anon CVs เปƒเบ”เป†เปƒเบ™ pad, เบ›เปˆเบฝเบ™ CvOUTSIDE เบ‚เบญเบ‡ CV เบ™เบฑเป‰เบ™เบˆเบฒเบ old_cv เป€เบ›เบฑเบ™ new_cv เบ–เป‰เบฒ
เบˆเปเบฒเป€เบ›เบฑเบ™. เบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ CV เบ—เบตเปˆเบฅเบงเบšเบฅเบงเบกเปƒเบซเบกเปˆเบ•เป‰เบญเบ‡เบ–เบทเบเบเป‰เบฒเบเป„เบ›เบขเบนเปˆเปƒเบ™ CV เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง
เป‚เบ„เบ‡เบชเป‰เบฒเบ‡.

void pad_fixup_inner_anons(PADLIST *padlist,
CV *old_cv, CV *new_cv)

pad_free
เบ›เบปเบ”เบ›เปˆเบญเบ SV เบขเบนเปˆเบ—เบตเปˆ offset po เปƒเบ™เปเบœเปˆเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™.

void pad_free(PADOFFSET po)

pad_leavemy
เบเบฒเบ™เป€เบฎเบฑเบ”เบ„เบงเบฒเบกเบชเบฐเบญเบฒเบ”เปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เบ‚เบญเบšเป€เบ‚เบ”เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก: เบเปเบฒเบ™เบปเบ”เบˆเปเบฒเบ™เบงเบ™ seq เบชเบนเบ‡เบชเบธเบ”เบชเปเบฒเบฅเบฑเบš lexicals เปƒเบ™
เบ‚เบญเบšเป€เบ‚เบ”เบ™เบตเป‰เปเบฅเบฐเป€เบ•เบทเบญเบ™เบ‚เบญเบ‡ lexicals เปƒเบ”เป†เบ—เบตเปˆเบšเปเปˆเป€เบ„เบตเบเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ™เปเบฒเบชเบฐเป€เบซเบ™เบต.

void pad_leavemy()

pad_push
เบเบนเป‰เบเบญเบšเปเบœเปˆเบ™เปƒเปเปˆเปƒเบชเปˆเปเบœเปˆเบ™เบฎเบญเบ‡, เป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆเบงเปˆเบฒเบกเบตเปเบœเปˆเบ™เบฎเบญเบ‡เบขเบนเปˆเบ„เบงเบฒเบกเป€เบฅเบดเบเบ™เบตเป‰เปเบฅเป‰เบง,
เปƒเบ™เบเปเบฅเบฐเบ™เบตเปƒเบ”เบเปเปˆเบ•เบฒเบก, เบขเปˆเบฒเบฅเบปเบšเบเบงเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบญเบฑเบ™เปƒเบซเบกเปˆ. เบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบซเป‰เปเบ—เบฑเบšเปƒเปเปˆเปƒเบชเปˆ @_ เป€เบ‚เบปเป‰เบฒเป„เบ›
เบชเบฐเบฅเบฑเบญเบ”เบ•เบดเบ‡เบชเบนเบ™.

void pad_push(PADLIST *padlist, เบ„เบงเบฒเบกเป€เบฅเบดเบ int)

pad_reset
เปเบฒเบเบ—เบฑเบ‡เปเบปเบ”เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบŠเบปเปˆเบงเบ„เบฒเบงเป€เบžเบทเปˆเบญเปƒเบŠเป‰เบ„เบทเบ™เปƒเปเปˆ

void pad_reset()

pad_swipe
เบ›เบฐเบ–เบดเป‰เบก tmp เปƒเบ™เปเบœเปˆเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เบขเบนเปˆเบ—เบตเปˆ offset po เปเบฅเบฐเบ›เปˆเบฝเบ™เปเบ—เบ™เบ”เป‰เบงเบเบญเบฑเบ™เปƒเบซเบกเปˆ.

void pad_swipe(PADOFFSET po, bool refadjust)

GV เบซเบ™เป‰เบฒเบ—เบตเปˆ


gv_try_downgrade
เปเบฒเบเป€เบซเบ”: เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบ—เบปเบ”เบฅเบญเบ‡ เปเบฅเบฐเบญเบฒเบ”เบˆเบฐเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ เบซเบผเบทเบ–เบทเบเบ–เบญเบ”เบญเบญเบเป‚เบ”เบเบšเปเปˆเป„เบ”เป‰เปเบˆเป‰เบ‡เปƒเบซเป‰เบฎเบนเป‰เบฅเปˆเบงเบ‡เปœเป‰เบฒ.

เบ–เป‰เบฒ typeglob "gv" เบชเบฒเบกเบฒเบ”เบชเบฐเปเบ”เบ‡เบญเบญเบเป„เบ”เป‰เบŠเบฑเบ”เป€เบˆเบ™เบเบงเปˆเบฒ, เป‚เบ”เบเบเบฒเบ™เบกเบตเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบญเบทเปˆเบ™
เบเปˆเบงเบฒ GV เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ‚เบญเบ‡เบกเบฑเบ™เบขเบนเปˆเปƒเบ™ stash, เบ—เบปเบ”เปเบ—เบ™เบกเบฑเบ™เบ”เป‰เบงเบเบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”.
เบ‚เปเป‰เบเปเบฒเบ™เบปเบ”เบžเบทเป‰เบ™เบ–เบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบงเปˆเบฒ "gv" เป€เบ›เบฑเบ™ typeglob เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡, เปเบกเปˆเบ™เบžเบฝเบ‡เบžเป
เบ—เปเบฒเบกเบฐเบ”เบฒ, เปเบฅเบฐเบžเบฝเบ‡เปเบ•เปˆเบญเป‰เบฒเบ‡เบญเบตเบ‡เบˆเบฒเบเบŠเบธเบ”เบ‚เบญเบ‡เบกเบฑเบ™. เบซเบ™เป‰เบฒเบ—เบตเปˆเบ™เบตเป‰เปเบกเปˆเบ™เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ
เปƒเบŠเป‰เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ GV เป„เบ”เป‰เบ–เบทเบเบŠเบญเบเบซเบฒเบขเบนเปˆเปƒเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เป€เบžเบทเปˆเบญเป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบกเบตเบซเบเบฑเบ‡, เป€เบŠเบดเปˆเบ‡เบเปเปˆเปƒเบซเป‰เป€เบเบตเบ”
เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡, เปเบ•เปˆเบญเบตเบ‡เปƒเบชเปˆเบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบปเบšเป€เบซเบฑเบ™, เบกเบฑเบ™ turns เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒ GV เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบšเปเปˆเปเบกเปˆเบ™
เบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบฑเบ‡เบซเบกเบปเบ”.

เบ–เป‰เบฒ "gv" เป€เบ›เบฑเบ™ typeglob เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ, เบกเบฑเบ™เบˆเบฐเบ–เบทเบเบฅเบถเบšเบญเบญเบเบˆเบฒเบ stash.

เบ–เป‰เบฒ "gv" เป€เบ›เบฑเบ™ typeglob เบ—เบตเปˆเบกเบตเบžเบฝเบ‡เบชเปˆเบงเบ™เบเปˆเบญเบเบ„เบปเบ‡เบ—เบตเปˆเบ—เบตเปˆเบžเบฝเบ‡เบžเป-เบ—เบณเบกเบฐเบ”เบฒ, the
typeglob เบ–เบทเบเปเบ—เบ™เบ—เบตเปˆเบ”เป‰เบงเบเบ•เบปเบงเบเบถเบ”เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡ scalar เบ—เบตเปˆเบซเบ™เบฒเปเบซเบ™เป‰เบ™เบเบงเปˆเบฒ
เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบชเบดเปˆเบ‡เบ”เบฝเบงเบเบฑเบ™.

void gv_try_downgrade(GV* gv)

Hash เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™ เบซเบ™เป‰เบฒเบ—เบตเปˆ


hv_ename_add
เป€เบžเบตเปˆเบกเบŠเบทเปˆเปƒเบชเปˆเบฅเบฒเบเบŠเบทเปˆเบžเบฒเบเปƒเบ™เบ‚เบญเบ‡ stash เบ‚เบญเบ‡เบŠเบทเปˆเบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš. เป€เบšเบดเปˆเบ‡ "hv_ename_delete".

เบญเบฑเบ™เบ™เบตเป‰เป€เบญเบตเป‰เบ™เบงเปˆเบฒเป€เบกเบทเปˆเบญ stash เบ–เบทเบเบกเบญเบšเปเบฒเบเปƒเบซเป‰เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเปƒเปเปˆเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบชเบฑเบ™เบเบฒเบฅเบฑเบ.

void hv_ename_add(HV *hv, const char *name, U32 len,
เบ—เบธเบ‡ U32)

hv_ename_delete
เบฅเบถเบšเบŠเบทเปˆเบญเบญเบเบˆเบฒเบเบฅเบฒเบเบŠเบทเปˆเบžเบฒเบเปƒเบ™เบ‚เบญเบ‡ stash เบ‚เบญเบ‡เบŠเบทเปˆเบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš. เบ–เป‰เบฒเบ™เบตเป‰เปเบกเปˆเบ™
เบŠเบทเปˆเบ—เบตเปˆเบชเบปเปˆเบ‡เบ„เบทเบ™เป‚เบ”เบ "HvENAME", เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบŠเบทเปˆเบญเบทเปˆเบ™เปƒเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบˆเบฐเป€เบญเบปเบฒเปเบ—เบ™เบ‚เบญเบ‡เบกเบฑเบ™
("HvENAME" เบˆเบฐเปƒเบŠเป‰เบกเบฑเบ™).

เบญเบฑเบ™เบ™เบตเป‰เป€เบญเบตเป‰เบ™เบงเปˆเบฒเป€เบกเบทเปˆเบญ stash เบ–เบทเบเบฅเบถเบšเบญเบญเบเบˆเบฒเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบชเบฑเบ™เบเบฒเบฅเบฑเบ.

void hv_ename_delete(HV *hv, const char *เบŠเบทเปˆ,
U32 เป€เบฅเบ™, เบ—เบธเบ‡ U32)

refcounted_he_chain_2hv
เบชเป‰เบฒเบ‡ เปเบฅเบฐเบชเบปเปˆเบ‡เบ„เบทเบ™ "HV *" เบ—เบตเปˆเป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เป€เบ™เบทเป‰เบญเบซเบฒเบ‚เบญเบ‡ "refcounted_he"
เบฅเบฐเบšเบปเบšเบ•เปˆเบญเบ‡เป‚เบชเป‰. เบ—เบปเบ‡ เบ›เบฐเบˆเบธเบšเบฑเบ™เบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰ เปเบฅเบฐเบ•เป‰เบญเบ‡เป€เบ›เบฑเบ™เบชเบนเบ™.

HV * refcounted_he_chain_2hv(
const struct refcounted_he *c, U32 เบ—เบธเบ‡
)

refcounted_he_fetch_pv
เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบš "refcounted_he_fetch_pvn", เปเบ•เปˆเปƒเบŠเป‰เบชเบฐเบ•เบฃเบดเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™ nul-terminated เปเบ—เบ™
เบ„เบนเปˆเบชเบฒเบ/เบ„เบงเบฒเบกเบเบฒเบง.

SV * refcounted_he_fetch_pv(
const struct refcounted_he *เบ•เปˆเบญเบ‡เป‚เบชเป‰,
const char *key, U32 hash, U32 flags
)

refcounted_he_fetch_pvn
เบ„เบปเป‰เบ™เบซเบฒเบ•เบฒเบกเบฅเบฐเบšเบปเบšเบ•เปˆเบญเบ‡เป‚เบชเป‰ "refcounted_he" เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบ—เบตเปˆเบกเบตเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เป‚เบ”เบ keypv
เปเบฅเบฐ เบเบฐเปเบˆเบ—เบตเปˆเบขเบนเปˆ เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒ เบ—เบปเบ‡ เบกเบต "REFCOUNTED_HE_KEY_UTF8" เบšเบดเบ”เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰, octets เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปเบกเปˆเบ™
เปเบ›เป€เบ›เบฑเบ™ UTF-8, เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเบกเบฑเบ™เบˆเบฐเบ–เบทเบเบ•เบตเบ„เบงเบฒเบกเปเบฒเบเป€เบ›เบฑเบ™เบฅเบฒเบ•เบดเบ™-1. hash เป€เบ›เบฑเบ™
hash precomputed เบ‚เบญเบ‡ key string, เบซเบผเบทเบชเบนเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบ–เบทเบ precomputed.
เปƒเบซเป‰เบœเบปเบ™เป€เบ›เบฑเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบกเบฐเบ•เบฐเบ—เบตเปˆเป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบ„เปˆเบฒเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฐเปเบˆ, เบซเบผเบท
&PL_sv_placeholder เบ–เป‰เบฒเบšเปเปˆเบกเบตเบ„เปˆเบฒเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฐเปเบˆ.

SV * refcounted_he_fetch_pvn(
const struct refcounted_he *เบ•เปˆเบญเบ‡เป‚เบชเป‰,
const char *keypv, STRLEN keylen, U32 hash,
เบ—เบธเบ‡ U32
)

refcounted_he_fetch_pvs
เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบš "refcounted_he_fetch_pvn", เปเบ•เปˆเปƒเบŠเป‰เบ•เบปเบงเบซเบ™เบฑเบ‡เบชเบทเปเบ—เบ™ a
เบ„เบนเปˆเบชเบฐเบ•เบฃเบดเบ‡/เบ„เบงเบฒเบกเบเบฒเบง, เปเบฅเบฐเบšเปเปˆเบกเบต hash precomputed.

SV * refcounted_he_fetch_pvs(
const struct refcounted_he *เบ•เปˆเบญเบ‡เป‚เบชเป‰,
const char *key, เบ—เบธเบ‡ U32
)

refcounted_he_fetch_sv
เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบš "refcounted_he_fetch_pvn", เปเบ•เปˆเปƒเบŠเป‰ Perl scalar เปเบ—เบ™ string/length.
เบ„เบนเปˆ.

SV * refcounted_he_fetch_sv(
const struct refcounted_he *chain, SV *key,
U32 hash, U32 เบ—เบธเบ‡
)

refcounted_he_free
เบซเบผเบธเบ”เบˆเบณเบ™เบงเบ™เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เบ‚เบญเบ‡ "refcounted_he" เบฅเบปเบ‡เป€เบ—เบทเปˆเบญเบ”เบฝเบง. เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡
count เบฎเบญเบ”เบชเบนเบ™เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเบ‚เบญเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เป„เบ”เป‰เบ–เบทเบเบ›เบปเบ”เบ›เปˆเบญเบ, เป€เบŠเบดเปˆเบ‡ (recursively) เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ” a
เบเบฒเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™เบเบฒเบ™เบ™เบฑเบšเบญเป‰เบฒเบ‡เบญเบตเบ‡เบ‚เบญเบ‡เบžเปเปˆเปเบกเปˆ "refcounted_he". เบกเบฑเบ™เบ›เบญเบ”เป„เบžเบ—เบตเปˆเบˆเบฐเบœเปˆเบฒเบ™ a
null pointer to this function: เบšเปเปˆเบกเบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ”เป†เป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰.

void refcounted_he_free(เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ refcounted_he *he)

refcounted_he_inc
เป€เบžเบตเปˆเบกเบˆเบณเบ™เบงเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เบ‚เบญเบ‡ "refcounted_he". เบ•เบปเบงเบŠเบตเป‰เป„เบ›เบซเบฒ
"refcounted_he" เบเบฑเบ‡เบ–เบทเบเบชเบปเปˆเบ‡เบ„เบทเบ™. เบกเบฑเบ™เบ›เบญเบ”เป„เบžเบ—เบตเปˆเบˆเบฐเบœเปˆเบฒเบ™เบ•เบปเบงเบŠเบตเป‰ null เป„เบ›เบ™เบตเป‰
เบŸเบฑเบ‡เบŠเบฑเบ™: เบšเปเปˆเบกเบตเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปƒเบ”เป†เป€เบเบตเบ”เบ‚เบถเป‰เบ™เปเบฅเบฐเบ•เบปเบงเบŠเบตเป‰ null เบ–เบทเบเบชเบปเปˆเบ‡เบ„เบทเบ™.

struct refcounted_he * refcounted_he_inc(
struct refcounted_he *เป€เบ‚เบปเบฒ
)

refcounted_he_new_pv
เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบš "refcounted_he_new_pvn", เปเบ•เปˆเปƒเบŠเป‰ string เบ—เบตเปˆเป€เบ›เบฑเบ™ nul-terminated เปเบ—เบ™ a
เบ„เบนเปˆเบชเบฒเบ/เบ„เบงเบฒเบกเบเบฒเบง.

struct refcounted_he * refcounted_he_new_pv(
struct refcounted_he *เบžเปเปˆเปเบกเปˆ,
const char *key, U32 hash,
SV *value, เบ—เบธเบ‡ U32
)

refcounted_he_new_pvn
เบชเป‰เบฒเบ‡ "refcounted_he". เบญเบฑเบ™เบ™เบตเป‰เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบ„เบนเปˆเบ„เบต/เบ„เปˆเบฒเบญเบฑเบ™เบ”เบฝเบง เปเบฅเบฐ a
เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เป€เบ–เบดเบ‡เบฅเบฐเบšเบปเบšเบ•เปˆเบญเบ‡เป‚เบชเป‰ "refcounted_he" เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง (เป€เบŠเบดเปˆเบ‡เบญเบฒเบ”เบˆเบฐเบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ), เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™
เบ›เบฐเบเบญเบšเป€เบ›เบฑเบ™เบฅเบฐเบšเบปเบšเบ•เปˆเบญเบ‡เป‚เบชเป‰เบเบฒเบง. เป€เบกเบทเปˆเบญเปƒเบŠเป‰เบ•เปˆเบญเบ‡เป‚เบชเป‰เบ—เบตเปˆเบเบฒเบงเบเบงเปˆเบฒ, เบ„เบนเปˆเบ„เบต/เบ„เปˆเบฒเปƒเปเปˆเปƒเบŠเป‰เป€เบงเบฅเบฒ
เบชเบณเบ„เบฑเบ™เบเบงเปˆเบฒเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบ”เป†เบเปเบ•เบฒเบกเบชเบณเบฅเบฑเบšเบเบฐเปเบˆเบ”เบฝเบงเบเบฑเบ™เบ•เปเปˆเป„เบ›เบ•เบฒเบกเบฅเบฐเบšเบปเบšเบ•เปˆเบญเบ‡เป‚เบชเป‰.

เบฅเบฐเบซเบฑเบ”เปƒเบซเบกเปˆเปเบกเปˆเบ™เบเปเบฒเบ™เบปเบ”เป‚เบ”เบ keypv เปเบฅเบฐ เบเบฐเปเบˆเบ—เบตเปˆเบขเบนเปˆ เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒ เบ—เบปเบ‡ เบกเบตเบ‚เบญเบ‡
"REFCOUNTED_HE_KEY_UTF8" เบšเบดเบ”, octets เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ–เบทเบเบ•เบตเบ„เบงเบฒเบกเบซเบกเบฒเบเป€เบ›เบฑเบ™ UTF-8,
เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเบกเบฑเบ™เบ–เบทเบเบ•เบตเบ„เบงเบฒเบกเบงเปˆเบฒเป€เบ›เบฑเบ™เบฅเบฒเบ•เบดเบ™-1. hash เป€เบ›เบฑเบ™ hash precomputed เบ‚เบญเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™
string, เบซเบผเบทเบชเบนเบ™เบ–เป‰เบฒเบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ„เบดเบ”เป„เบฅเปˆเบฅเปˆเบงเบ‡เปœเป‰เบฒ.

เบกเบนเบ™เบ„เปˆเบฒ เปเบกเปˆเบ™โ€‹เบ„เปˆเบฒโ€‹เบชเบฐโ€‹เป€เบเบฑเบ”โ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป€เบเบฑเบšโ€‹เบฎเบฑเบโ€‹เบชเบฒโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฐโ€‹เปเบˆโ€‹เบ™เบตเป‰โ€‹. เบกเบนเบ™เบ„เปˆเบฒ เบ–เบทเบเบ„เบฑเบ”เบฅเบญเบเป‚เบ”เบเบ™เบตเป‰
เบซเบ™เป‰เบฒเบ—เบตเปˆ, เบŠเบถเปˆเบ‡เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบถเปˆเบ‡เบšเปเปˆเป„เบ”เป‰เป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เปƒเบ”เป†เบเบฑเบšเบกเบฑเบ™, เปเบฅเบฐเบ•เปเปˆเบกเบฒ
เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เบชเบฐโ€‹เป€เบเบฑเบ”โ€‹เป€เบ‡เบดเบ™โ€‹เบˆเบฐโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบชเบฐโ€‹เบ—เป‰เบญเบ™โ€‹เปƒเบซเป‰โ€‹เป€เบซเบฑเบ™โ€‹เปƒเบ™โ€‹เบ„เปˆเบฒโ€‹เบ—เบตเปˆโ€‹เบชเบฑเบ‡โ€‹เป€เบเบ”โ€‹เป€เบซเบฑเบ™โ€‹เปƒเบ™โ€‹
"refcounted_he". เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบŠเบฑเบšเบŠเป‰เบญเบ™เบ‚เบญเบ‡ scalar เบˆเบฐเบšเปเปˆเบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เบ”เป‰เบงเบเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡
เบ„เบงเบฒเบกเบŠเบทเปˆเบชเบฑเบ”, เปเบ•เปˆเบˆเบฐเบ–เบทเบเบšเบฑเบ‡เบ„เบฑเบšเปƒเบซเป‰เบชเบฒเบ. เบกเบนเบ™เบ„เปˆเบฒ เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™ null เบซเบผเบท
&PL_sv_placeholder เป€เบžเบทเปˆเบญเบŠเบตเป‰เบšเบญเบเบงเปˆเบฒเบšเปเปˆเบกเบตเบ„เปˆเบฒเบ—เบตเปˆเบˆเบฐเป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบเบฑเบšเบเบฐเปเบˆ;
เบญเบฑเบ™เบ™เบตเป‰, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบšเบ„เปˆเบฒเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™ null, เบกเบตเบ„เบงเบฒเบกเบชเบณเบ„เบฑเบ™เบเบงเปˆเบฒเบเบฒเบ™เบกเบตเบขเบนเปˆเบ‚เบญเบ‡เบ„เปˆเบฒ
เบชเปเบฒเบฅเบฑเบšเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ•เปเปˆเป„เบ›เบ•เบฒเบกเบฅเบฐเบšเบปเบšเบ•เปˆเบญเบ‡เป‚เบชเป‰.

เบžเปเปˆเปเบกเปˆ เบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ•เปˆเบญเบ‡เป‚เบชเป‰ "refcounted_he" เบ—เบตเปˆเบˆเบฐเบ•เบดเบ”เบเบฑเบšเปƒเบซเบกเปˆ
"refcounted_he". เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เปƒเบŠเป‰เป€เบงเบฅเบฒเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡เบซเบ™เบถเปˆเบ‡เบญเป‰เบฒเบ‡เบญเบตเบ‡เป€เบ–เบดเบ‡ เบžเปเปˆเปเบกเปˆ, เปเบฅเบฐ
เบชเบปเปˆเบ‡เบ„เบทเบ™เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เบญเบฑเบ™เปœเบถเปˆเบ‡เปƒเบซเป‰เบเบฑเบš "refcounted_he".

struct refcounted_he * refcounted_he_new_pvn(
struct refcounted_he *เบžเปเปˆเปเบกเปˆ,
const char *keypv,
เบเบฐเปเบˆ STRLEN, U32 hash,
SV *value, เบ—เบธเบ‡ U32
)

refcounted_he_new_pvs
เบ„เบทเบเบฑเบš "refcounted_he_new_pvn", เปเบ•เปˆเปƒเบŠเป‰เบ•เบปเบงเปœเบฑเบ‡เบชเบทเปเบ—เบ™ a
เบ„เบนเปˆเบชเบฐเบ•เบฃเบดเบ‡/เบ„เบงเบฒเบกเบเบฒเบง, เปเบฅเบฐเบšเปเปˆเบกเบต hash precomputed.

struct refcounted_he * refcounted_he_new_pvs(
struct refcounted_he *เบžเปเปˆเปเบกเปˆ,
const char *key, SV *value,
เบ—เบธเบ‡ U32
)

refcounted_he_new_sv
เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบš "refcounted_he_new_pvn", เปเบ•เปˆเปƒเบŠเป‰ Perl scalar เปเบ—เบ™ string/length.
เบ„เบนเปˆ.

struct refcounted_he * refcounted_he_new_sv(
struct refcounted_he *เบžเปเปˆเปเบกเปˆ,
SV *key, U32 hash, SV *value,
เบ—เบธเบ‡ U32
)

IO เบซเบ™เป‰เบฒเบ—เบตเปˆ


start_glob
เปเบฒเบเป€เบซเบ”: เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบ—เบปเบ”เบฅเบญเบ‡ เปเบฅเบฐเบญเบฒเบ”เบˆเบฐเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ เบซเบผเบทเบ–เบทเบเบ–เบญเบ”เบญเบญเบเป‚เบ”เบเบšเปเปˆเป„เบ”เป‰เปเบˆเป‰เบ‡เปƒเบซเป‰เบฎเบนเป‰เบฅเปˆเบงเบ‡เปœเป‰เบฒ.

เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ "do_readline" เป€เบžเบทเปˆเบญเบ‚เบฐเบซเบเบฒเบเป‚เบฅเบ (เบซเบผเบทเป€เบฎเบฑเบ” glob เบžเบฒเบเปƒเบ™ perl on
VMS). เบฅเบฐเบซเบฑเบ”เบ™เบตเป‰เป€เบ„เบตเบเบขเบนเปˆเปƒเบ™เปเบ–เบง, เปเบ•เปˆเบ•เบญเบ™เบ™เบตเป‰ perl เปƒเบŠเป‰ "File::Glob" เป‚เบฅเบเบ™เบตเป‰
starter เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป‚เบ”เบ miniperl เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡. เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบกเบฑเบ™เบญเบญเบเป„เบ›เบˆเบฐเบซเบผเบธเบ”เบฅเบปเบ‡
pp_hot.c ; เบเบฒเบ™เบซเบปเบ”เบ•เบปเบง pp_hot.c เบŠเปˆเบงเบเป€เบฅเบฑเปˆเบ‡ perl.

PerlIO* start_glob(SV *tmpglob, IO *io)

เป€เบฅเบตเป€เบŠเบต เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš


validate_proto
เปเบฒเบเป€เบซเบ”: เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบ—เบปเบ”เบฅเบญเบ‡ เปเบฅเบฐเบญเบฒเบ”เบˆเบฐเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ เบซเบผเบทเบ–เบทเบเบ–เบญเบ”เบญเบญเบเป‚เบ”เบเบšเปเปˆเป„เบ”เป‰เปเบˆเป‰เบ‡เปƒเบซเป‰เบฎเบนเป‰เบฅเปˆเบงเบ‡เปœเป‰เบฒ.

เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบเบงเบ”เบชเบญเบš syntax เปƒเบ™เบ•เบปเป‰เบ™เปเบšเบš, "proto". เบ–เป‰เบฒ "เป€เบ•เบทเบญเบ™" เปเบกเปˆเบ™
เปเบ—เป‰เบˆเบดเบ‡เปเบฅเป‰เบง, เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ—เบตเปˆเบœเบดเบ”เบเบปเบ”เปเบฒเบ เบซเบผเบทเบงเบปเบ‡เป€เบฅเบฑเบšเบ—เบตเปˆเบšเปเปˆเบเบปเบ‡เบเบฑเบ™เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบเบปเบ”เปเบฒเบ
เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบž, เบ›เบฐเบเบฒเบ”เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบ–เบทเบเบเบงเบ”เบžเบปเบšเปƒเบ™เบ•เบปเป‰เบ™เปเบšเบšเบชเปเบฒเบฅเบฑเบš "เบŠเบทเปˆ".

เบ„เปˆเบฒเบเบฑเบšเบ„เบทเบ™เปเบกเปˆเบ™ "เบ„เบงเบฒเบกเบˆเบดเบ‡" เบ–เป‰เบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเปเบšเบšเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เปเบฅเบฐ "เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡" เบ–เป‰เบฒเบกเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™,
เป‚เบ”เบเบšเปเปˆเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบงเปˆเบฒ "เป€เบ•เบทเบญเบ™" เปเบกเปˆเบ™ "เบˆเบดเบ‡" เบซเบผเบท "เบœเบดเบ”".

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒ "NULL" เปเบกเปˆเบ™ "proto" เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เปเบฅเบฐเบˆเบฐเบเบฑเบšเบ„เบทเบ™ "เบˆเบดเบ‡".

เปเบฒเบเป€เบซเบ”: เปเบšเบšเบŸเบญเบก perl_ เบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เบ–เบทเบเบเบปเบเป€เบฅเบตเบ.

bool validate_proto(SV *เบŠเบทเปˆ, SV *proto, bool warn)

magical เบซเบ™เป‰เบฒเบ—เบตเปˆ


magic_clearhint
เบเบฐเบ•เบธเป‰เบ™เป‚เบ”เบเบเบฒเบ™เบฅเบถเบšเบญเบญเบเบˆเบฒเบ %^H, เบšเบฑเบ™เบ—เบถเบเบฅเบฐเบซเบฑเบ”เปƒเบชเปˆ "PL_compiling.cop_hints_hash".

int magic_clearhint(SV* sv, MAGIC* mg)

magic_clearhints
เบเบฐเบ•เบธเป‰เบ™เป‚เบ”เบเบเบฒเบ™เบฅเบถเบšเบฅเป‰เบฒเบ‡ %^H, เบฃเบตเป€เบŠเบฑเบ” "PL_compiling.cop_hints_hash".

int magic_clearhints(SV* sv, MAGIC* mg)

magic_methcall
เบฎเบฝเบเบฎเป‰เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™ magic (เป€เบŠเบฑเปˆเบ™: FETCH).

"sv" เปเบฅเบฐ "mg" เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบœเบนเบเบกเบฑเบ”เปเบฅเบฐ magic tie.

"meth" เปเบกเปˆเบ™เบŠเบทเปˆเบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เป‚เบ—เบซเบฒ.

"argc" เปเบกเปˆเบ™เบˆเบณเบ™เบงเบ™เบ‚เบญเบ‡ args (เบ™เบญเบเป€เปœเบทเบญเป„เบ›เบˆเบฒเบ $self) เป€เบžเบทเปˆเบญเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเบงเบดเบ—เบตเบเบฒเบ™.

"เบ—เบธเบ‡" เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™:

G_DISCARD เป€เบญเบตเป‰เบ™เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบกเบตเบ—เบธเบ‡ G_DISCARD เปเบฅเบฐเบšเปเปˆ
เบชเบปเปˆเบ‡เบ„เบทเบ™เบ„เปˆเบฒ
G_UNDEF_FILL เบ•เบทเปˆเบกเบ‚เปเป‰เบกเบนเบ™เปƒเบชเปˆ stack เบ”เป‰เบงเบเบ•เบปเบงเบŠเบตเป‰ argc เบซเบฒ
PL_sv_undef

เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เปเบกเปˆเบ™เบ„เปˆเบฒเปƒเบ”เป†เบ•เบฒเบกเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡ "เบ—เบธเบ‡".

เบชเบปเปˆเบ‡เบ„เบทเบ™ SV (เบ–เป‰เบฒเบกเบต) เบชเบปเปˆเบ‡เบ„เบทเบ™เป‚เบ”เบเบงเบดเบ—เบตเบเบฒเบ™, เบซเบผเบท NULL เปƒเบ™เบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบฅเบง.

SV* magic_methcall(SV *sv, const MAGIC *mg,
SV *meth, เบ—เบธเบ‡ U32, U32 argc,
... )

magic_setint
เบเบฐเบ•เบธเป‰เบ™เป‚เบ”เบเบฎเป‰เบฒเบ™เบ„เป‰เบฒเป„เบ›เบซเบฒ %^H, เบšเบฑเบ™เบ—เบถเบเบ„เบนเปˆเบ„เบต/เบ„เปˆเบฒเป„เบ›เบซเบฒ
"PL_compiling.cop_hints_hash". เบกเบฑเบ™เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบšเปเปˆเป„เบ”เป‰เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบซเบเบฑเบ‡เป„เบงเป‰
เบ—เบตเปˆเบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเป€เบ™เบปเบฒเป€เบฅเบดเบ. เบšเบฒเบ‡เบ—เบตเบžเบงเบเป€เบฎเบปเบฒเบ„เบงเบ™เป€เบ•เบทเบญเบ™เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบŠเบญเบเบซเบฒเป€เบญเบเบฐเบชเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡.

int magic_sethint(SV* sv, MAGIC* mg)

mg_localize
เบ„เบฑเบ”เบฅเบญเบเบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบญเบ‡ magic เบˆเบฒเบ SV เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบงเป„เบ›เบซเบฒเบชเบฐเบšเบฑเบšเบžเบฒเบชเบฒเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เปƒเบซเบกเปˆเบ‚เบญเบ‡ SV เบ™เบฑเป‰เบ™.
เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบต magic (เป€เบŠเบฑเปˆเบ™: %ENV, $1, tie) เป„เบ”เป‰เบ–เบทเบเบชเบณเป€เบ™เบปเบฒ, เบ„เปˆเบฒ magic เบšเปเปˆเบกเบต (เป€เบŠเบฑเปˆเบ™: taint,
pos).

เบ–เป‰เบฒ setmagic เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบšเปเปˆเบกเบต magic เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปƒเบ™ SV เปƒเบซเบกเปˆ (เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ). เบ™เบตเป‰
เป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบดเบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเปƒเบ™เป„เบงเป†เบ™เบตเป‰ (เป€เบŠเบฑเปˆเบ™: 'เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™ $x = $y'), เปเบฅเบฐเบ™เบฑเป‰เบ™
เบˆเบฐเบˆเบฑเบ”เบเบฒเบ™ magic เป„เบ”เป‰.

void mg_localize(SV* sv, SV* nsv, bool setmagic)

Miscellaneous เบซเบ™เป‰เบฒเบ—เบตเปˆ


free_c_backtrace
เบˆเบฑเบ”เบชเบฑเบ™ backtrace เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบˆเบฒเบ get_c_bracktrace.

void free_c_backtrace(Perl_c_backtrace* bt)

get_c_backtrace
เบฅเบงเบšเบฅเบงเบก backtrace (เป€เบญเบตเป‰เบ™เบงเปˆเบฒ "stacktrace") เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ buffer malloced เป€เบชเบฑเป‰เบ™เบ”เบฝเบง,
เป€เบŠเบดเปˆเบ‡เบœเบนเป‰เป‚เบ— เบ•เป‰เบญเบ‡ Perl_free_c_backtrace().

เบชเบฐเปเบเบ™เป€เบŸเบฃเบกเบ„เบทเบ™เป‚เบ”เบเบ„เบงเบฒเบกเป€เบฅเบดเบ + เบ‚เป‰เบฒเบก, เบˆเบฒเบเบ™เบฑเป‰เบ™เบงเบฒเบ‡เบ•เบปเบงเบ‚เป‰เบฒเบกเป€เบ‚เบปเป‰เบฒเป„เบ›เบ‚เป‰เบฒเบ‡เปƒเบ™เบ—เบตเปˆเบชเบธเบ”, เบเบฑเบšเบ„เบทเบ™เบขเบนเปˆเบ—เบตเปˆ
เบ‚เบญเบšเบ„เบงเบฒเบกเป€เบฅเบดเบเบ—เบตเปˆเบชเบธเบ”.

Perl_c_backtrace* get_c_backtrace(int max_depth,
เบ‚เป‰เบฒเบก)

MRO เบซเบ™เป‰เบฒเบ—เบตเปˆ


mro_get_linear_isa_dfs
เปƒเบซเป‰เบœเบปเบ™เป€เบ›เบฑเบ™เป€เบชเบฑเป‰เบ™เบŠเบทเปˆเบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเบ„เบงเบฒเบกเป€เบฅเบดเบ-First เบ‚เบญเบ‡ @ISA stash เบ—เบตเปˆเปƒเบซเป‰. เบเบฑเบšเบ„เบทเบ™
เบ„เปˆเบฒเปเบกเปˆเบ™ AV เปเบšเบšเบญเปˆเบฒเบ™เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™*. "เบฅเบฐเบ”เบฑเบš" เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™ 0 (เบกเบฑเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบžเบฒเบเปƒเบ™เปƒเบ™เบ™เบตเป‰
เบเบฒเบ™เป€เบญเบตเป‰เบ™เบ„เบทเบ™เบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™).

เบ—เปˆเบฒเบ™เบกเบตเบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบ•เปเปˆ "SvREFCNT_inc()" เปƒเบ™เบกเบนเบ™เบ„เปˆเบฒเบเบฑเบšเบ„เบทเบ™เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเป€เบเบฑเบšเบฎเบฑเบเบชเบฒ
เบกเบฑเบ™เบขเบนเปˆเบšเปˆเบญเบ™เปƒเบ”เบเปเป„เบ”เป‰เป€เบ„เบดเปˆเบ‡เบ–เบฒเบงเบญเบ™ (เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบ–เบทเบเบฅเบถเบšเบญเบญเบเบˆเบฒเบเบžเบฒเบเปƒเบ•เป‰เบ—เปˆเบฒเบ™
เปƒเบ™เบ„เบฑเป‰เบ‡เบ•เปเปˆเป„เบ› cache เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡).

AV* mro_get_linear_isa_dfs(HV* stash, เบฅเบฐเบ”เบฑเบš U32)

mro_isa_changed_in
เบ”เปเบฒเป€เบ™เบตเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™ (cache invalidations, เบชเปˆเบงเบ™เบซเบผเบฒเบเปเบกเปˆเบ™) เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ @ISA เบ‚เบญเบ‡เบกเบญเบšเปƒเบซเป‰
เปเบžเบฑเบเป€เบเบ”เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡. เบฎเบฝเบเบฎเป‰เบญเบ‡เป‚เบ”เบ "setisa" magic, เบšเปเปˆเบ„เบงเบ™เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบฎเบฝเบเบฎเป‰เบญเบ‡
เป‚เบ”เบเบเบปเบ‡.

void mro_isa_changed_in(HV* stash)

mro_package_moved
เป‚เบ—เบซเบฒเบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เป€เบžเบทเปˆเบญเบชเบปเปˆเบ‡เบชเบฑเบ™เบเบฒเบ™เบซเบฒเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบงเปˆเบฒเบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบกเบญเบšเปเบฒเบเปƒเบซเป‰เบšเปˆเบญเบ™เบญเบทเปˆเบ™เปเบฅเป‰เบง
เบขเบนเปˆเปƒเบ™เบฅเปเบฒเบ”เบฑเบšเบŠเบฑเป‰เบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™. "stash" เปเบกเปˆเบ™ stash เบ—เบตเปˆเป„เบ”เป‰เบ–เบทเบเบกเบญเบšเบซเบกเบฒเบ. "เป€เบเบปเปˆเบฒ"
เปเบกเปˆเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบ—เบตเปˆเบกเบฑเบ™เบ›เปˆเบฝเบ™เปเบ—เบ™, เบ–เป‰เบฒเบกเบต. "gv" เปเบกเปˆเบ™เป‚เบฅเบเบ—เบตเปˆเป€เบ›เบฑเบ™เบˆเบดเบ‡
เบเบฒเบ™โ€‹เบกเบญเบšโ€‹เบซเบกเบฒเบโ€‹เปƒเบซเป‰.

เบ™เบตเป‰เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เป€เบญเบตเป‰เบ™เบงเปˆเบฒเบกเบตเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เปเบฒเบญเบดเบ” null เป€เบžเบทเปˆเบญเบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒ "oldstash" เบกเบต
เบ–เบทเบเบฅเบถเบšเปเบฅเป‰เบง.

เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰ isa cache เบขเบนเปˆเปƒเบ™ stash เป€เบเบปเปˆเบฒ, เปƒเบ™เบ—เบธเบเปเบžเบฑเบเป€เบเบฑเบ”เบเปˆเบญเบเบ—เบตเปˆเบงเบฒเบ‡เป„เบงเป‰
เบžเบฒเบเปƒเบ™เบกเบฑเบ™, เปเบฅเบฐเบขเบนเปˆเปƒเบ™ subclasses เบ‚เบญเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™, เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เบซเบธเป‰เบกเบซเปเปˆเบ—เบตเปˆเบšเปเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง
เบ—เบตเปˆเบกเบตเบฅเบฒเบเบเบฒเบ™เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เปƒเบ™ "stash".

เบกเบฑเบ™เบเบฑเบ‡เบเปเบฒเบ™เบปเบ”เบŠเบทเปˆเบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš ("HvENAME") เปƒเบ™ stashes เบ—เบฑเบ‡เบซเบกเบปเบ”เบ•เบฒเบกเบ„เบงเบฒเบกเป€เบซเบกเบฒเบฐเบชเบปเบก.

เบ–เป‰เบฒ "gv" เบกเบตเบขเบนเปˆเปเบฅเบฐเบšเปเปˆเบขเบนเปˆเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบชเบฑเบ™เบเบฒเบฅเบฑเบ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบซเบ™เป‰เบฒเบ—เบตเปˆเบ™เบตเป‰เบ‡เปˆเบฒเบเบ”เบฒเบ
เบเบฑเบšเบ„เบทเบ™. เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ™เบตเป‰เบˆเบฐเบ–เบทเบเบ‚เป‰เบฒเบกเบ–เป‰เบฒ "เบ—เบธเบ‡ & 1".

void mro_package_moved(HV * const stash,
HV * const oldstash,
const GV * const gv,
เบ—เบธเบ‡ U32)

Optree เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™ เบซเบ™เป‰เบฒเบ—เบตเปˆ


finalize_optree
เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบชเบธเบ”เบ—เป‰เบฒเบ. เบ„เบงเบ™เบˆเบฐเบ–เบทเบเป€เบญเบตเป‰เบ™เป‚เบ”เบเบเบปเบ‡เบซเบผเบฑเบ‡เบˆเบฒเบเบชเปเบฒเป€เบฅเบฑเบ”
optree เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™. เบกเบฑเบ™เป€เบฎเบฑเบ”เบเบฒเบ™เบเบงเบ”เบชเบญเบšเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เปƒเบ™
เบŸเบฑเบ‡เบŠเบฑเบ™ ck_xxx เบ›เบปเบเบเบฐเบ•เบดเปเบฅเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบชเบฑเป‰เบ™เบ”เป‰เบฒเบเบ•เบปเป‰เบ™เป„เบกเป‰เบ›เบญเบ”เป„เบž.

void finalize_optree(OP* o)

Pad เบ‚เปเป‰เบกเบนเบ™ เป‚เบ„เบ‡เบชเป‰เบฒเบ‡


CX_CURPAD_SAVE
เบšเบฑเบ™เบ—เบถเบเปเบœเปˆเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบšเบฅเบฑเบญเบเบšเปเบฅเบดเบšเบปเบ”เบ—เบตเปˆเปƒเบซเป‰เป„เบงเป‰.

เป‚เบกเบ” CX_CURPAD_SAVE(เป‚เบ„เบ‡เบชเป‰เบฒเบ‡)

CX_CURPAD_SV
เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ SV เบขเบนเปˆเบ—เบตเปˆ offset po เปƒเบ™เปเบœเปˆเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เบ—เบตเปˆเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰เปƒเบ™เบšเบฅเบฑเบญเบเบšเปเบฅเบดเบšเบปเบ”เบ—เบตเปˆเปƒเบซเป‰
เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ (เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒ).

SV * CX_CURPAD_SV(เป‚เบ„เบ‡เบชเป‰เบฒเบ‡, PADOFFSET po)

PadnameIsOUR
เบšเปเปˆเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™เบ•เบปเบงเปเบ› "เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ" เบซเบผเบทเบšเปเปˆ.

bool PadnameIsOUR(PADNAME pn)

PadnameIsSTATE
เบšเปเปˆเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™เบ•เบปเบงเปเบ› "เบฅเบฑเบ”".

bool PadnameIsSTATE(PADNAME pn)

PadnameOURSTASH
stash เบ—เบตเปˆเบ•เบปเบงเปเบ› "เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ" เบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบเบฒเบ”.

HV * PadnameOURSTASH()

PadnameOUTER
เบšเปเปˆเบงเปˆเบฒเบฅเบฒเบเบเบฒเบ™เบ™เบตเป‰เป€เบ›เบฑเบ™เบ‚เบญเบ‡เปเบœเปˆเบ™เบ™เบญเบ. เบเบฒเบ™โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เบกเบฒโ€‹เบ—เบตเปˆโ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบ„เบงเบฒเบกโ€‹เบˆเบดเบ‡โ€‹เปเบกเปˆเบ™โ€‹
เบกเบฑเบเบˆเบฐเป€เบญเบตเป‰เบ™เบงเปˆเบฒ 'เบ›เบญเบก'.

bool PadnameOUTER(PADNAME pn)

PadnameTYPE
stash เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบš lexical เบžเบดเบก. เบ™เบตเป‰เบชเบปเปˆเบ‡เบ„เบทเบ™เบ„เปˆเบฒ %Foo:: hash เบชเปเบฒเบฅเบฑเบš "my
Foo $bar".

HV * PadnameTYPE(PADNAME pn)

PAD_BASE_SV
เป€เบญเบปเบฒเบ„เปˆเบฒเบˆเบฒเบเบŠเปˆเบญเบ‡เปƒเบชเปˆ "po" เปƒเบ™เบ–เบฒเบ™ (DEPTH=1) pad เบ‚เบญเบ‡ padlist

SV * PAD_BASE_SV(PADLIST padlist, PADOFFSET po)

PAD_CLONE_VARS
Clone เบ•เบปเบงเปเบ›เบ‚เบญเบ‡เบฅเบฑเบ”เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เปเบฅเปˆเบ™เปเบฅเบฐเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปเบœเปˆเบ™.

เบซเบงเปˆเบฒเบ‡ PAD_CLONE_VARS(PerlInterpreter *proto_perl,
CLONE_PARAMS* เบžเบฒเบฃเบฒเบก)

PAD_COMPNAME_FLAGS
เบเบฑเบšเบ„เบทเบ™เบ—เบธเบ‡เบชเปเบฒเบฅเบฑเบšเบŠเบทเปˆ pad เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ›เบฐเบˆเบธเบšเบฑเบ™เบขเบนเปˆเบ—เบตเปˆ offset "po". เบ–เบทเบงเปˆเบฒ เบ
เบŠเปˆเบญเบ‡เป€เบ‚เบปเป‰เบฒเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡.

U32 PAD_COMPNAME_FLAGS(PADOFFSET เป‚เบ›)

PAD_COMPNAME_GEN
เบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบ‚เบญเบ‡เบŠเบทเปˆเบ—เบตเปˆเบŠเบปเบ”เป€เบŠเบตเบ "po" เปƒเบ™เปเบœเปˆเบ™เบฅเบงเบšเบฅเบงเบกเบ›เบฐเบˆเบธเบšเบฑเบ™
(เบกเบนเบ™เบ„เปˆเบฒ). เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒ "SvUVX" เบ–เบทเบ hijacked เบชเปเบฒเบฅเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ™เบตเป‰.

STRLEN PAD_COMPNAME_GEN(PADOFFSET เบ›เป)

PAD_COMPNAME_GEN_set
เบเปเบฒเบ™เบปเบ”เบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบ‚เบญเบ‡เบŠเบทเปˆเบ—เบตเปˆ offset "po" เปƒเบ™ ling pad เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™
(lvalue) เบเบฑเบš "gen". เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒ "SvUV_set" เบ–เบทเบ hijacked เบชเปเบฒเบฅเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ™เบตเป‰.

STRLEN PAD_COMPNAME_GEN_set(PADOFFSET po, int gen)

PAD_COMPNAME_OURSTASH
เบชเบปเปˆเบ‡เบ„เบทเบ™ stash เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบ•เบปเบงเปเบ› "เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ". เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบŠเปˆเบญเบ‡เปเบกเปˆเบ™ a
เบ–เบทเบเบ•เป‰เบญเบ‡ "เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ" lexical.

HV * PAD_COMPNAME_OURSTASH(PADOFFSET po)

PAD_COMPNAME_PV
เบเบฑเบšเบ„เบทเบ™เบŠเบทเปˆเบ‚เบญเบ‡เบŠเบทเปˆเปเบœเปˆเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ›เบฐเบˆเบธเบšเบฑเบ™เบขเบนเปˆเบ—เบตเปˆ offset "po". เบ–เบทเบงเปˆเบฒเบ–เบทเบเบ•เป‰เบญเบ‡
เบŠเปˆเบญเบ‡เป€เบ‚เบปเป‰เบฒ.

char * PAD_COMPNAME_PV(PADOFFSET po)

PAD_COMPNAME_TYPE
เบเบฑเบšเบ„เบทเบ™เบ›เบฐเป€เบžเบ” (stash) เบ‚เบญเบ‡เบŠเบทเปˆเปเบœเปˆเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ›เบฐเบˆเบธเบšเบฑเบ™เบขเบนเปˆเบ—เบตเปˆ offset "po". เบ•เป‰เบญเบ‡เป€เบ›เบฑเบ™
เบŠเบทเปˆเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡. เบ•เบญเบš null เบ–เป‰เบฒเบšเปเปˆเป„เบ”เป‰เบžเบดเบก.

HV * PAD_COMPNAME_TYPE(PADOFFSET po)

PAD_RESTORE_LOCAL
เบŸเบทเป‰เบ™เบŸเบน pad เป€เบเบปเปˆเบฒเบ—เบตเปˆเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰เปƒเบ™ opad เบ•เบปเบงเปเบ›เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เป‚เบ”เบ PAD_SAVE_LOCAL()

เบซเบงเปˆเบฒเบ‡ PAD_RESTORE_LOCAL(PAD *opad)

PAD_SAVE_LOCAL
เบšเบฑเบ™เบ—เบถเบเปเบœเปˆเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เปƒเบชเปˆ oppad เบ•เบปเบงเปเบ›เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เปเบœเปˆเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เป€เบ—เบปเปˆเบฒเบ—เบฝเบกเบเบฑเบ™
เป€เบžเบทเปˆเบญเปƒเบชเปˆเบ›เบฒ

เบซเบงเปˆเบฒเบ‡ PAD_SAVE_LOCAL(PAD *opad, PAD *npad)

PAD_SAVE_SETNULLPAD
เบšเบฑเบ™เบ—เบถเบเปเบœเปˆเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เบˆเบฒเบเบ™เบฑเป‰เบ™เบ•เบฑเป‰เบ‡เบกเบฑเบ™เป€เบ›เบฑเบ™ null.

เบซเบงเปˆเบฒเบ‡ PAD_SAVE_SETNULLPAD()

PAD_SETSV
เบเปเบฒเบ™เบปเบ”เบŠเปˆเบญเบ‡เปƒเบชเปˆ offset "po" เปƒเบ™ pad เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เป€เบ›เบฑเบ™ "sv"

SV * PAD_SETSV(PADOFFSET po, SV* sv)

PAD_SET_CUR
เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบœเปˆเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เป€เบ›เบฑเบ™ pad "n" เปƒเบ™ padlist, เบŠเปˆเบงเบเบ›เบฐเบขเบฑเบ”เปเบœเปˆเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ.
NB เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ macro เบ™เบตเป‰เบ‚เบฐเบซเบเบฒเบเป„เบ›เป€เบ›เบฑเบ™เบชเบฒเบเบเบฒเบงเป€เบเบตเบ™เป„เบ›เบชเปเบฒเบฅเบฑเบšเบšเบฒเบ‡ compilers, เบชเบฐเบ™เบฑเป‰เบ™เบกเบฑเบ™
เบ”เบตเบ—เบตเปˆเบชเบธเบ”เป€เบžเบทเปˆเบญเบ—เบปเบ”เปเบ—เบ™เบกเบฑเบ™

SAVECOMPPAD();
PAD_SET_CUR_NOSAVE(padlist,n);

เบซเบงเปˆเบฒเบ‡ PAD_SET_CUR(PADLIST padlist, I32 n)

PAD_SET_CUR_NOSAVE
เป€เบŠเบฑเปˆเบ™ PAD_SET_CUR, เปเบ•เปˆเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เบฐเบซเบเบฑเบ”

เบซเบงเปˆเบฒเบ‡ PAD_SET_CUR_NOSAVE(PADLIST padlist, I32 n)

PAD_SV เป€เบญเบปเบฒเบ„เปˆเบฒเบ—เบตเปˆเบŠเบปเบ”เป€เบŠเบตเบ "po" เปƒเบ™เปเบœเปˆเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™

SV * PAD_SV(PADOFFSET po)

PAD_SVl เบฅเบธเป‰เบ™เบ™เป‰เบณเปœเบฑเบเป€เบšเบปเบฒ เปเบฅเบฐ เบกเบนเบ™เบ„เปˆเบฒเบ‚เบญเบ‡ "PAD_SV". เป„เบ”เป‰เบฎเบฑเบšเบซเบผเบทเบเปเบฒเบ™เบปเบ”เบ„เปˆเบฒเบ—เบตเปˆเบŠเบปเบ”เป€เบŠเบตเบ "po"
เปƒเบ™ pad เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™. เบšเปเปˆเบ„เบทเบเบฑเบš "PAD_SV", เบšเปเปˆเป„เบ”เป‰เบžเบดเบกเบเบฒเบ™เบงเบดเบ™เบดเป„เบชเบ”เป‰เบงเบ -DX. เบชเปเบฒเบฅเบฑเบš
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบžเบฒเบเปƒเบ™เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.

SV * PAD_SVl(PADOFFSET po)

SAVECLEARSV
เบฅเป‰เบฒเบ‡เบˆเบธเบ”เบ—เบตเปˆเบŠเบตเป‰เป„เบ›เบซเบฒเบ„เปˆเบฒ pad เปƒเบ™เบเบฒเบ™เบญเบญเบเบ‚เบญเบšเป€เบ‚เบ”. (เป€เบŠเบฑเปˆเบ™: runtime action เบ‚เบญเบ‡ 'my')

SAVECLEARSV(SV **svp) void

SAVECOMPPAD
เบšเบฑเบ™เบ—เบถเบ PL_comppad เปเบฅเบฐ PL_curpad

SAVECOMPPAD() เป€เบ›เบฑเบ™เป‚เบกเบ„เบฐ

SAVEPADSV
เบšเบฑเบ™เบ—เบถเบเบŠเปˆเบญเบ‡เปƒเบชเปˆเปเบœเปˆเบ™ (เปƒเบŠเป‰เป€เบžเบทเปˆเบญเบŸเบทเป‰เบ™เบŸเบนเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบฎเบฑเบ”เบŠเป‰เบณ)

XXX DAPM เบกเบฑเบ™เบกเบตเบ„เบงเบฒเบกเปเบฒเบเบซเบผเบฒเบเบเบงเปˆเบฒเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰ Arg เป€เบ›เบฑเบ™ PADOFFSET
SAVEPADSV(PADOFFSET po) เป€เบ›เบฑเบ™เป‚เบกเบ„เบฐ

เบ•เปเปˆเบ™เบฒเบเบžเบฒเบชเบฒ Variables


PL_DB เบ”เบฝเบง
เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ Perl เบ–เบทเบเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปƒเบ™เบฎเบนเบšเปเบšเบš debugging, เบเบฑเบš -d switch, SV เบ™เบตเป‰เปเบกเปˆเบ™ boolean เบ—เบตเปˆ
เบŠเบตเป‰เบšเบญเบเบงเปˆเบฒเบเบฒเบ™เบเปˆเบญเบเบˆเบฐเบ–เบทเบเบเป‰เบฒเบงเบ”เบฝเบงเบซเบผเบทเบšเปเปˆ. เบเบฒเบ™เบเป‰เบฒเบงเบ”เบฝเบงเปเบกเปˆเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”
เป€เบ›เบตเบ”เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบธเบเบ‚เบฑเป‰เบ™เบ•เบญเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเปเบ› C เป€เบŠเบดเปˆเบ‡เบเบปเบ‡เบเบฑเบš Perl's
$DB::เบ•เบปเบงเปเบ›เบ”เบฝเบง. เป€เบšเบดเปˆเบ‡ "PL_DBsub".

SV * PL_DBsingle

PL_DBsub
เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ Perl เบ–เบทเบเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปƒเบ™เบฎเบนเบšเปเบšเบš debugging, เบเบฑเบš -d เบชเบฐเบซเบผเบฑเบš, GV เบ™เบตเป‰เบ›เบฐเบเบญเบšเบ”เป‰เบงเบ SV
เป€เบŠเบดเปˆเบ‡เบ–เบทเบŠเบทเปˆเบ‚เบญเบ‡เบเปˆเบญเบเบ—เบตเปˆเบ–เบทเบเบ”เบตเบšเบฑเบ. เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเปเบ› C เบ—เบตเปˆ
เป€เบ—เบปเปˆเบฒเบเบฑเบš Perl's $DB::sub variable. เป€เบšเบดเปˆเบ‡ "PL_DBsingle".

GV * PL_DBsub

PL_DBtrace
เบ•เบปเบงเปเบ›เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ Perl เบ–เบทเบเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปƒเบ™เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบ”เบตเบšเบฑเบ, เบ”เป‰เบงเบ -d เบชเบฐเบซเบผเบฑเบš. เบ™เบตเป‰
เปเบกเปˆเบ™เบ•เบปเบงเปเบ› C เป€เบŠเบดเปˆเบ‡เบเบปเบ‡เบเบฑเบšเบ•เบปเบงเปเบ›เบ‚เบญเบ‡ Perl เบ‚เบญเบ‡ $DB::trace. เป€เบšเบดเปˆเบ‡
"PL_DBsingle".

SV * PL_DBtrace

PL_down
เบ•เบปเบงเปเบ› C เบ—เบตเปˆเบเบปเบ‡เบเบฑเบšเบ•เบปเบงเปเบ›เป€เบ•เบทเบญเบ™ $^W เบ‚เบญเบ‡ Perl.

bool PL_dowarn

PL_last_in_gv
GV เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบ„เบฑเป‰เบ‡เบชเบธเบ”เบ—เป‰เบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เป„เบŸเบฅเปŒ. (" ")

GV* PL_last_in_gv

PL_ofsgv
เป‚เบฅเบเบ—เบตเปˆเบกเบตเบ•เบปเบงเปเบเบเบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ” - "*," เปƒเบ™เบŠเปˆเบญเบ‡ Perl.

GV* PL_ofsgv

PL_rs เบ•เบปเบงเปเบเบเบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™ - $/ เปƒเบ™เบŠเปˆเบญเบ‡ Perl.

SV* PL_rs

Stack เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™ เบกเบฒเป‚เบ„เบฃ


djSP เบ›เบฐเบเบฒเบ”เบžเบฝเบ‡เปเบ•เปˆ "SP". เบญเบฑเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบš "dSP", เปเบฅเบฐเบ›เบฐเบเบฒเบ”เบชเปเบฒเป€เบ™เบปเบฒเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™
เบ‚เบญเบ‡เบ•เบปเบงเบŠเบตเป‰ stack เบ‚เบญเบ‡ perl, เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰เบœเปˆเบฒเบ™เบกเบฐเบซเบฒเบžเบฒเบ "SP". เป€เบšเบดเปˆเบ‡ "SP". (เบกเบตเปƒเบซเป‰เบชเปเบฒเบฅเบฑเบš
เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เบเบฑเบšเบ„เบทเบ™เป„เบ›เบšเปˆเบญเบ™เบเบฑเบšเบฎเบนเบšเปเบšเบšเบเบฐเบ—เบนเป‰เป€เบเบปเปˆเบฒ (Perl 5.005).

djSP;

LVRET True เบ–เป‰เบฒ op เบ™เบตเป‰เบˆเบฐเป€เบ›เบฑเบ™เบ„เปˆเบฒเบ•เบญเบšเปเบ—เบ™เบ‚เบญเบ‡เบฅเบฒเบเบเบฒเบ™เบเปˆเบญเบ lvalue

SV เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™ เบซเบ™เป‰เบฒเบ—เบตเปˆ


SV (เบซเบผเบท AV, HV, เปเบฅเบฐเบญเบทเปˆเบ™เป†) เบ–เบทเบเบˆเบฑเบ”เบชเบฑเบ™เป€เบ›เบฑเบ™เบชเบญเบ‡เบชเปˆเบงเบ™: เบซเบปเบง (เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ sv, av, hv ... )
เบ›เบฐโ€‹เบเบญเบšโ€‹เบ”เป‰เบงเบโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบเบฒเบ™โ€‹เบ™เบฑเบšโ€‹เบ›เบฐโ€‹เป€เบžเบ”โ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบญเป‰เบฒเบ‡โ€‹เบญเบตเบ‡โ€‹, เปเบฅเบฐโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบซเบผเบฒเบโ€‹เบ›เบฐโ€‹เป€เบžเบ”โ€‹, เบ•เบปเบงโ€‹เบŠเบตเป‰โ€‹เบเบฑเบšโ€‹เบฎเปˆเบฒเบ‡โ€‹เบเบฒเบโ€‹
(struct xrv, xpv, xpviv...), เป€เบŠเบดเปˆเบ‡เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบชเบฐเป€เบžเบฒเบฐเปเบ•เปˆเบฅเบฐเบ›เบฐเป€เบžเบ”. เบšเบฒเบ‡เบ›เบฐเป€เบžเบ”
เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบขเบนเปˆเปƒเบ™เบซเบปเบง, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบšเปเปˆเบกเบตเบฎเปˆเบฒเบ‡เบเบฒเบ.

เปƒเบ™เบ—เบฑเบ‡เปเบปเบ”เปเบ•เปˆเบเบฒเบ™เบเบณเบ™เบปเบ”เบ„เปˆเบฒเบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเบณเบ—เบตเปˆเปเบ›เบเบ›เบฐเบซเบผเบฒเบ”เบ—เบตเปˆเบชเบธเบ” (เป€เบŠเบฑเปˆเบ™: PURIFY), เบซเบปเบง เปเบฅเบฐเบฎเปˆเบฒเบ‡เบเบฒเบเปเบกเปˆเบ™.
เบˆเบฑเบ”เบชเบฑเบ™เบญเบญเบเบˆเบฒเบเบชเบฐเบซเบ™เบฒเบกเบเบดเบฅเบฒ, เป€เบŠเบดเปˆเบ‡เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™เบ›เบฐเบกเบฒเบ™ 4K chunks เบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ parceled
เบ‚เบถเป‰เบ™เป€เบ›เบฑเบ™ N เบซเบปเบงเบซเบผเบทเบฎเปˆเบฒเบ‡เบเบฒเบ. Sv-bodies เบ–เบทเบเบˆเบฑเบ”เบชเบฑเบ™เป‚เบ”เบเบ›เบฐเป€เบžเบ” sv เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ, เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ‚เบฐเบซเบ™เบฒเบ”
เบ„เบงเบฒเบกเบชเบญเบ”เบ„เปˆเบญเบ‡เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบชเบฑเบ™เบขเปˆเบฒเบ‡เบ›เบญเบ”เป„เบžเบˆเบฒเบ arrays.

เบชเปเบฒเบฅเบฑเบš SV-heads, เบชเบฐเบฅเบฑเบญเบ”เบ•เบดเบ‡เบ—เปเบฒเบญเบดเบ”เปƒเบ™เปเบ•เปˆเบฅเบฐเบชเบฐเบซเบ™เบฒเบกเบเบดเบฅเบฒเป„เบ”เป‰เบ–เบทเบเบชเบฐเบซเบ‡เบงเบ™, เปเบฅเบฐเบ–เบทเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป„เบ›เบซเบฒเบ•เปเปˆเป„เบ›
เบชเบฐเบซเบ™เบฒเบกเบเบดเบฅเบฒ, เบ—เบธเบ‡เบšเบฒเบ‡, เปเบฅเบฐเบšเบฑเบ™เบ—เบถเบเบ‚เบญเบ‡เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบชเบฐเบฅเบฑเบญเบ”เบ•เบดเบ‡. Snaked เบœเปˆเบฒเบ™เบฅเบฐเบšเบปเบšเบ•เปˆเบญเบ‡เป‚เบชเป‰เบ™เบฒเบกเบซเบฅเบดเป‰เบ™เบเบดเบฅเบฒเปเบ•เปˆเบฅเบฐเบ„เบปเบ™เปเบกเปˆเบ™
เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ—เบตเปˆเป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบ‚เบญเบ‡เบฅเบฒเบเบเบฒเบ™เบŸเบฃเบต; เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ™เบตเป‰เบเบฒเบเป€เบ›เบฑเบ™เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ, เบ™เบฒเบกเบซเบฅเบดเป‰เบ™เบเบดเบฅเบฒเบžเบดเป€เบชเบ”เป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบชเบฑเบ™เปเบฅเบฐ
เปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™ N เบฅเบฒเบเบเบฒเบ™เบ—เบตเปˆเบ–เบทเบเบˆเบฑเบ”เปƒเบชเปˆเปƒเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบŸเบฃเบต.

SV-bodies เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™, เปเบ•เปˆเบžเบงเบเป€เบ‚เบปเบฒเปƒเบŠเป‰ arena-sets เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เป€เบŠเบดเปˆเบ‡เปเบเบเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปเบฅเบฐ
เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบˆเบฒเบโ€‹เบชเบฐโ€‹เบซเบ™เบฒเบกโ€‹เบเบดโ€‹เบฅเบฒโ€‹เบ•เบปเบงโ€‹เบ‚เบญเบ‡โ€‹เบกเบฑเบ™โ€‹เป€เบญเบ‡โ€‹, เปเบฅเบฐโ€‹เบฎเบฝเบโ€‹เบฎเป‰เบญเบ‡โ€‹เป€เบญเบปเบฒโ€‹เบŠเปˆเบญเบ‡โ€‹เบ—เบต 1 เปƒเบ™โ€‹เบชเบฐโ€‹เบซเบ™เบฒเบกโ€‹เบเบดโ€‹เบฅเบฒโ€‹เป„เบ”เป‰โ€‹. SV-bodies เปเบกเปˆเบ™เบ•เบทเปˆเบกเบญเบตเบ
เบญเบฐเบ—เบดเบšเบฒเบเบ•เปเปˆเบกเบฒ.

เบ•เบปเบงเปเบ›เบ—เบปเปˆเบงเป‚เบฅเบเบ•เปเปˆเป„เบ›เบ™เบตเป‰เปเบกเปˆเบ™เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบชเบฐเบซเบ™เบฒเบกเบเบดเบฅเบฒ:

PL_sv_arenaroot เบ•เบปเบงเบŠเบตเป‰เป„เบ›เบซเบฒเบฅเบฒเบเบŠเบทเปˆ SV arenas
PL_sv_root เบ•เบปเบงเบŠเบตเป‰เป„เบ›เบซเบฒเบฅเบฒเบเบŠเบทเปˆเป‚เบ„เบ‡เบชเป‰เบฒเบ‡ SV เบŸเบฃเบต

PL_body_arenas เบซเบปเบงเบซเบ™เป‰เบฒเบ‚เบญเบ‡ linked-list of body arenas
PL_body_roots[] array เบ‚เบญเบ‡เบ•เบปเบงเบŠเบตเป‰เป„เบ›เบซเบฒเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบญเบปเบ‡เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบŸเบฃเบตเบ‚เบญเบ‡ svtype
arrays เบ–เบทเบเบ”เบฑเบ”เบชเบฐเบ™เบตเป‚เบ”เบ svtype เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™

เบซเบปเบงเบซเบ™เป‰เบฒ SV เบžเบดเป€เบชเบ”เบˆเปเบฒเบ™เบงเบ™เบซเบ™เป‰เบญเบเบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบชเบฑเบ™เบˆเบฒเบเบชเบฐเบซเบ™เบฒเบกเบเบดเบฅเบฒ, เปเบ•เปˆเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡เป‚เบ”เบเบเบปเบ‡
เปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ™เบฒเบเบžเบฒเบชเบฒ, เบ•เบปเบงเบขเปˆเบฒเบ‡ PL_sv_undef. เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ arenas เบชเบฒเบกเบฒเบ”เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบˆเบฒเบ
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป‚เบ”เบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ PERL_ARENA_SIZE เบขเปˆเบฒเบ‡เป€เปเบฒเบฐเบชเบปเบกเปƒเบ™เป€เบงเบฅเบฒเบฅเบงเบšเบฅเบงเบก.

เบชเบฐเบซเบ™เบฒเบกเบเบดเบฅเบฒ SV เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ—เบตเบชเบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰ SVs เบ—เบตเปˆเบเบฑเบ‡เบกเบตเบŠเบตเบงเบดเบ”เบขเบนเปˆเบ•เบฑเป‰เบ‡เบขเบนเปˆเปเบฅเบฐ
เบ–เบทเบเบ—เปเบฒเบฅเบฒเบเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ—เปเบฒเบ„เบงเบฒเบกเบชเบฐเบญเบฒเบ”เบ„เบฑเป‰เบ‡เบชเบธเบ”เบ—เป‰เบฒเบ.

เปƒเบ™เบฅเบฐเบ”เบฑเบšเบ•เปˆเปเบฒเบชเบธเบ”, เบกเบฐเบซเบฒเบžเบฒเบ new_SV() เปเบฅเบฐ del_SV() เบˆเบฑเบšเปเบฅเบฐเบ›เบปเบ”เบ›เปˆเบญเบเบซเบปเบง SV. (เบ–เป‰เบฒ
เบเบฒเบ™เบ”เบตเบšเบฑเบเบ”เป‰เบงเบ -DD, del_SV() เป€เบญเบตเป‰เบ™เบŸเบฑเบ‡เบŠเบฑเบ™ S_del_sv() เป€เบžเบทเปˆเบญเบชเบปเปˆเบ‡เบ„เบทเบ™ SV เป€เบ›เบฑเบ™เบŸเบฃเบต
เบšเบฑเบ™โ€‹เบŠเบตโ€‹เบฅเบฒเบโ€‹เบŠเบทเปˆโ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบเบงเบ”โ€‹เบชเบญเบšโ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹.) new_SV() เป‚เบ— more_sv() / sv_add_arena() เป€เบžเบทเปˆเบญเป€เบžเบตเปˆเบกเบชเบฐเบซเบ™เบฒเบกเบเบดเบฅเบฒเบžเบดเป€เบชเบ”
เบ–เป‰เบฒเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ—เบตเปˆเบšเปเปˆเป€เบชเบเบ„เปˆเบฒเปเบกเปˆเบ™เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ. SVs เปƒเบ™เบฅเบฒเบเบŠเบทเปˆเบŸเบฃเบตเบกเบตเบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™ SvTYPE เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบ•เบฑเป‰เบ‡เป€เบ›เบฑเบ™เบ—เบธเบเบญเบฑเบ™.

เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เปเบฒโ€‹เบ„เบงเบฒเบกโ€‹เบชเบฐโ€‹เบญเบฒเบ”โ€‹เบชเบธเบ”โ€‹เบ—เป‰เบฒเบโ€‹, sv_free_arenas() เบ–เบทเบเป€เบญเบตเป‰เบ™เบˆเบฒเบ perl_destruct() to
เบšเปเปˆเป€เบชเบเบ„เปˆเบฒเบ—เบฒเบ‡เบฎเปˆเบฒเบ‡เบเบฒเบเบ—เบธเบเบชเบฐเบซเบ™เบฒเบกเบเบดเบฅเบฒเบ—เบตเปˆเบ–เบทเบเบˆเบฑเบ”เบชเบฑเบ™เบ•เบฑเป‰เบ‡เปเบ•เปˆเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบ™เบฒเบเบžเบฒเบชเบฒ.

เบŸเบฑเบ‡เบŠเบฑเบ™ เบขเป‰เบฝเบกเบขเบฒเบก() เบชเบฐเปเบเบ™เบฅเบฒเบเบเบฒเบ™ SV arenas, เปเบฅเบฐเป€เบญเบตเป‰เบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐ SV
เบกเบฑเบ™เบžเบปเบšเบงเปˆเบฒเบญเบฑเบ™เปƒเบ”เบ—เบตเปˆเบเบฑเบ‡เบกเบตเบŠเบตเบงเบดเบ”เบขเบนเปˆ - ie เบ—เบตเปˆเบกเบต SvTYPE เบ™เบญเบเป€เปœเบทเบญเป„เบ›เบˆเบฒเบเบ—เบฑเบ‡เปเบปเบ” 1, เปเบฅเบฐเบšเปเปˆเบกเบตเบชเบนเบ™.
SvREFCNT. เบขเป‰เบฝเบกเบขเบฒเบก() เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป‚เบ”เบเบซเบ™เป‰เบฒเบ—เบตเปˆเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰ (เบฅเบฐเบšเบธเป€เบ›เบฑเบ™ [function เบ—เบตเปˆเป‚เบ—เบซเบฒ
เบขเป‰เบฝเบกเบขเบฒเบก()] / [เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เป€เบญเบตเป‰เบ™เบงเปˆเบฒเป‚เบ”เบ เบขเป‰เบฝเบกเบขเบฒเบก() เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐ SV]):

sv_report_used() / do_report_used()
เบ–เบดเป‰เบก SVs เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเบ—เบฑเบ‡เปเบปเบ” (เบเบฒเบ™เบŠเปˆเบงเบเปเบเป‰เบšเบฑเบ™เบซเบฒ)

sv_clean_objs() / do_clean_objs(),do_clean_named_objs(),
do_clean_named_io_objs(),do_curse()
เบžเบฐเบเบฒเบเบฒเบกเบ›เบปเบ”เบ›เปˆเบญเบเบงเบฑเบ”เบ–เบธเบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบŠเบตเป‰เป„เบ›เบซเบฒ RVs,
เบžเบฐเบเบฒเบเบฒเบกเป€เบฎเบฑเบ”เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบงเบฑเบ”เบ–เบธเบ—เบฑเบ‡เบซเบกเบปเบ” indir-
เบญเป‰เบฒเบ‡เบญเบตเบ‡ ectly เป‚เบ”เบ typeglobs เป€เบเบตเบ™เป„เบ›, เปเบฅเบฐ
เบซเบผเบฑเบ‡ เบˆเบฒเบ เบ™เบฑเป‰เบ™ เบเบงเบฒเบ” เบชเบธเบ” เบ—เป‰เบฒเบ, cursing เปƒเบ”
เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญ. เป‚เบ—เบซเบฒเบ„เบฑเป‰เบ‡เบ”เบฝเบงเบˆเบฒเบ
perl_destruct(), เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป‚เบ—เบซเบฒ sv_clean_all()
เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰.

sv_clean_all() / do_clean_all()
SvREFCNT_dec(sv) เปเบ•เปˆเบฅเบฐ SV เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญ, เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰
เบเบฐเบ•เบธเป‰เบ™ sv_free(). เบกเบฑเบ™เบเบฑเบ‡เบเปเบฒเบ™เบปเบ”
SVf_BREAK เบ—เบธเบ‡เปƒเบ™ SV เป€เบžเบทเปˆเบญเบŠเบตเป‰เบšเบญเบเบงเปˆเบฒ
refcnt เป„เบ”เป‰เบ–เบทเบเบซเบผเบธเบ”เบฅเบปเบ‡เบ›เบญเบก, เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™
เบเบฒเบ™เบขเบธเบ”เป€เบŠเบปเบฒ sv_free() เบˆเบฒเบเบเบฒเบ™เปƒเบซเป‰เบ„เปเบฒเป€เบ•เบทเบญเบ™เบ—เบตเปˆเบ‚เบตเป‰เบฎเป‰เบฒเบ
เบเปˆเบฝเบงเบเบฑเบš SVs เบ—เบตเปˆเบšเปเปˆเบ„เบฒเบ”เบ„เบดเบ”เบกเบต refcnt
เบ‚เบญเบ‡เบชเบนเบ™. เป€เบญเบตเป‰เบ™เบŠเป‰เบณเป†เบˆเบฒเบ perl_destruct()
เบˆเบปเบ™เบเปˆเบงเบฒเบšเปเปˆเบกเบต SVs เป€เบซเบผเบทเบญ.

SvTHINKFIRST
เบเบงเบ”เป€เบšเบดเปˆเบ‡เบ—เบธเบ‡เบ”เปˆเบงเบ™เป€เบžเบทเปˆเบญเป€เบšเบดเปˆเบ‡เบงเปˆเบฒ sv เบ„เบงเบ™เบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เบเบฑเบš sv_force_normal เบซเบผเบทเบšเปเปˆ
"เบซเบผเบธเบ”เบฅเบปเบ‡" เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐ SvIVX เบซเบผเบท SvPVX เบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เป„เบ”เป‰เป‚เบ”เบเบเบปเบ‡.

เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒ scalar เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบกเปˆเบ™เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡เปเบฅเบฐเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ”เบฑเบ”เปเบ›เบ‡เบŠเปˆเบญเบ‡ SvIVX,
เบ—เปˆเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบžเบฝเบ‡เปเบ•เปˆเป€เบฎเบฑเบ” SvROK_off, เบเป‰เบญเบ™เบงเปˆเบฒเบกเบฑเบ™เบˆเบฐเบฎเบปเปˆเบงเป„เบซเบฅเบ‚เบญเบ‡เป€เบญเบเบฐเบชเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡.

เบ™เบตเป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบžเบฒเบเปƒเบ™เป‚เบ”เบเบŸเบฑเบ‡เบŠเบฑเบ™ sv-modifying เบ•เปˆเบฒเบ‡เป†, เป€เบŠเบฑเปˆเบ™: sv_setsv,
sv_setiv เปเบฅเบฐ sv_pvn_force.

เบเปเบฅเบฐเบ™เบตเบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบชเบดเปˆเบ‡เบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบˆเบฑเบ”เบเบฒเบ™เปเบกเปˆเบ™ gv เป‚เบ”เบเบšเปเปˆเบกเบตเบŠเบธเบ” SvFAKE. เบซเบผเบฑเบ‡เบˆเบฒเบ

เบ–เป‰เบฒ (SvTHINKFIRST(gv)) sv_force_normal(gv);

เบกเบฑเบ™เบˆเบฐเบเบฑเบ‡เบ„เบปเบ‡เป€เบ›เบฑเบ™ gv.

SvTHINKFIRST เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบœเบฐเบฅเบดเบ”เบœเบปเบ™เบšเบงเบเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡. เปƒเบ™เบเปเบฅเบฐเบ™เบตเป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™ sv_force_normal
เบšเปเปˆเป€เบฎเบฑเบ”เบซเบเบฑเบ‡.

U32 SvTHINKFIRST(SV *sv)

sv_add_arena
เบกเบญเบšเบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเบญเบฑเบ™เปœเบถเปˆเบ‡, เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบกเบฑเบ™เบเบฑเบšเบซเบปเบงเบ‚เบญเบ‡เบฅเบฒเบเบเบฒเบ™เบชเบฐเปœเบฒเบก, เปเบฅเบฐเปเบเบเบกเบฑเบ™เบญเบญเบ
เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡ SVs เบŸเบฃเบต.

void sv_add_arena(char *const ptr, const U32 size,
const เบ—เบธเบ‡ U32)

sv_clean_all
เบซเบผเบธเบ”เบฅเบปเบ‡ refcnt เบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐ SV เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญ, เบญเบฒเบ”เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบเบฒเบ™เบ—เปเบฒเบ„เบงเบฒเบกเบชเบฐเบญเบฒเบ”. เบ™เบตเป‰
เบŸเบฑเบ‡เบŠเบฑเบ™เบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบ–เบทเบเป€เบญเบตเป‰เบ™เบซเบผเบฒเบเบ„เบฑเป‰เบ‡เป€เบžเบทเปˆเบญเปƒเบซเป‰ SVs เบŸเบฃเบตเบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™
เบฅเบณเบ”เบฑเบšเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡เบ•เบปเบ™เป€เบญเบ‡.

I32 sv_clean_all()

sv_clean_objs
เบžเบฐเบเบฒเบเบฒเบกเบ—เปเบฒเบฅเบฒเบเบชเบดเปˆเบ‡เบ‚เบญเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เป„เบ”เป‰เบ›เบปเบ”เบ›เปˆเบญเบ.

void sv_clean_objs()

sv_free_arenas
เบˆเบฑเบ”เบชเบฑเบ™เปœเปˆเบงเบเบ„เบงเบฒเบกเบˆเบณเบ—เบตเปˆเปƒเบŠเป‰เป‚เบ”เบเบ—เบธเบเบชเบฐเปœเบฒเบก. เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบซเบปเบง SV เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”
เปเบฅเบฐเบญเบปเบ‡เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบžเบฒเบเปƒเบ™เบชเบฐเบซเบ™เบฒเบกเบเบดเบฅเบฒเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบปเบ”เบ›เปˆเบญเบเปเบฅเป‰เบง.

void sv_free_arenas()

SV-Body เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™


sv_2num เบซเบกเบฒเบเป€เบซเบ”: เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบ—เบปเบ”เบฅเบญเบ‡เปเบฅเบฐเบญเบฒเบ”เบˆเบฐเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบซเบผเบทเบ–เบทเบเป‚เบเบเบเป‰เบฒเบเบญเบญเบเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เปเบˆเป‰เบ‡เบเบฒเบ™.

เบชเบปเปˆเบ‡เบ„เบทเบ™ SV เบ—เบตเปˆเบกเบตเบ„เปˆเบฒเบ•เบปเบงเป€เบฅเบเบ‚เบญเบ‡เปเบซเบผเปˆเบ‡ SV, เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปƒเบ”เป†เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™
เบเบฒเบ™โ€‹เบญเป‰เบฒเบ‡โ€‹เบญเบตเบ‡โ€‹เบซเบผเบท overload conversion. เบ„เบฒเบ”โ€‹เบงเปˆเบฒโ€‹เบœเบนเป‰โ€‹เป‚เบ—โ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบกเบท.
magic เปเบฅเป‰เบง.

SV* sv_2num(SV *const sv)

sv_copypv
เบชเบณเป€เบ™เบปเบฒเบ•เบปเบงเปเบ—เบ™เบ—เบตเปˆเป€เบ‚เบฑเป‰เบกเบ‡เบงเบ”เบ‚เบญเบ‡เปเบซเบผเปˆเบ‡ SV เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ SV เบ›เบฒเบเบ—เบฒเบ‡.
เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ›เบฐเบ•เบดเบšเบฑเบ” mg_get เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เปเบฅเบฐเบเบฒเบ™เบšเบตเบšเบšเบฑเบ‡เบ„เบฑเบšเบ‚เบญเบ‡เบ„เปˆเบฒเบ•เบปเบงเป€เบฅเบเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™
เบชเบฒเบ. เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ—เบตเปˆเบˆเบฐเบฎเบฑเบเบชเบฒเบ—เบธเบ‡ UTF8 เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบˆเบฒเบเบงเบฑเบ”เบ–เบธ overloaded. เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™
เปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเป€เบ›เบฑเบ™ sv_2pv[_flags] เปเบ•เปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป‚เบ”เบเบเบปเบ‡เปƒเบ™ SV เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบžเบฝเบ‡เปเบ•เปˆ.
เบชเบฒเบ. เบชเปˆเบงเบ™เปƒเบซเบเปˆเปƒเบŠเป‰ sv_2pv_flags เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบกเบฑเบ™, เบเบปเบเป€เบงเบฑเป‰เบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบฑเบ™เบˆเบฐเบชเบนเบ™เป€เบชเบ
UTF-8'ness เบ‚เบญเบ‡ PV.

void sv_copypv(SV *const dsv, SV *const ssv)

sv_ref เบเบฑเบšเบ„เบทเบ™ SV เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเบชเบดเปˆเบ‡เบ—เบตเปˆ SV เบœเปˆเบฒเบ™เป€เบ‚เบปเป‰เบฒเบกเบฒเปเบกเปˆเบ™เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡.

SV* sv_ref(SV *dst, const SV *const sv,
const int ob)

Unicode เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™


find_uninit_var
เปเบฒเบเป€เบซเบ”: เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบ—เบปเบ”เบฅเบญเบ‡ เปเบฅเบฐเบญเบฒเบ”เบˆเบฐเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ เบซเบผเบทเบ–เบทเบเบ–เบญเบ”เบญเบญเบเป‚เบ”เบเบšเปเปˆเป„เบ”เป‰เปเบˆเป‰เบ‡เปƒเบซเป‰เบฎเบนเป‰เบฅเปˆเบงเบ‡เปœเป‰เบฒ.

เบŠเบญเบเบซเบฒเบŠเบทเปˆเบ‚เบญเบ‡เบ•เบปเบงเปเบ›เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ” (เบ–เป‰เบฒเบกเบต) เบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบœเบนเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เบกเบตเบšเบฑเบ™เบซเบฒ
เบเบฒเบ™เป€เบ•เบทเบญเบ™ "เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เป„เบงเป‰". เบ–เป‰เบฒเบเบปเบ‡เบเบฑเบ™เปเบกเปˆเบ™เบ–เบทเบเบ•เป‰เบญเบ‡, เบžเบฝเบ‡เปเบ•เปˆเบชเบปเปˆเบ‡เบŠเบทเปˆเบ–เป‰เบฒ
เบ„เปˆเบฒเบ‚เบญเบ‡เบกเบฑเบ™เบเบปเบ‡เบเบฑเบš uninit_sv. เบชเบฐเบ™เบฑเป‰เบ™เป€เบงเบปเป‰เบฒเบ›เบฐเบกเบฒเบ™, เบ–เป‰เบฒเบœเบนเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ unary (เป€เบŠเบฑเปˆเบ™:
OP_COS) เบชเป‰เบฒเบ‡เบ„เปเบฒเป€เบ•เบทเบญเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบฅเบนเบเป‚เบ”เบเบเบปเบ‡เบ‚เบญเบ‡ op เบญเบฒเบ”เบˆเบฐเปƒเบซเป‰เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš
OP_PADSV เบซเบผเบท OP_GV เบ—เบตเปˆเปƒเบซเป‰เบŠเบทเปˆเบ‚เบญเบ‡เบ•เบปเบงเปเบ›เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”. เบญเบตเบเบ”เป‰เบฒเบ™เบ™เบถเปˆเบ‡
เบกเบท, เบ”เป‰เบงเบ OP_ADD เบกเบตเบชเบญเบ‡เบชเบฒเบ‚เบฒเบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบก, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบžเบดเบกเบ•เบปเบงเปเบ›
เบŠเบทเปˆโ€‹เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เปเบ‚เปˆเบ‡โ€‹เบ‚เบฑเบ™โ€‹เบ—เบตเปˆโ€‹เปเบ™เปˆโ€‹เบ™เบญเบ™โ€‹. desc_p เบŠเบตเป‰เป„เบ›เบซเบฒเบ•เบปเบงเบŠเบตเป‰เบชเบฐเบ•เบฃเบดเบ‡เบ—เบตเปˆเบ–เบท
เบฅเบฒเบโ€‹เบฅเบฐโ€‹เบญเบฝเบ”โ€‹เบ‚เบญเบ‡ op. เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™.

เบŠเบทเปˆเบ–เบทเบเบชเบปเปˆเบ‡เบ„เบทเบ™เป€เบ›เบฑเบ™ SV เบ•เบฒเบ.

เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒ PL_op เปเบกเปˆเบ™ op เบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™, เปเบฅเบฐเบ™เบฑเป‰เบ™
PL_comppad/PL_curpad เบŠเบตเป‰เป„เบ›เบ—เบตเปˆเปเบœเปˆเบ™เบ—เบตเปˆเบเบณเบฅเบฑเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบขเบนเปˆ.

SV* find_uninit_var(const OP *const obase,
const SV *const uninit_sv,
bool match, const char **desc_p)

report_uninit
เบžเบดเบกเบ„เปเบฒเป€เบ•เบทเบญเบ™ "เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเปเบ›เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เป„เบงเป‰" เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก.

void report_uninit(const SV *uninit_sv)

เบšเปเปˆเบกเบตเบซเบผเบฑเบเบ–เบฒเบ™เบขเบฑเป‰เบ‡เบขเบทเบ™ เบซเบ™เป‰เบฒเบ—เบตเปˆ


เปœเป‰เบฒเบ—เบตเปˆเบ•เปเปˆเป„เบ›เบ™เบตเป‰เปเบกเปˆเบ™เบšเปเปˆเบกเบตเป€เบญเบเบฐเบชเบฒเบ™. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™
เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบชเป‰เบฒเบ‡เปเบฅเบฐเบชเบปเปˆเบ‡เป€เบญเบเบฐเบชเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบกเบฑเบ™.

PerlIO_restore_errno
PerlIO_save_errno
Slab_Alloc
Slab_Free
Slab_to_ro
Slab_to_rw
_add_range_to_invlist
_core_swash_init
_get_encoding
_get_swash_invlist
_invlist_array_init
_invlist_contains_cp
_invlist_contents
_invlist_dump
_invlist_intersection
_invlist_intersection_maybe_complement_2nd
_invlist_invert
_invlist_len
_invlist_populate_swatch
_invlist_search
_invlist_subtract
_invlist_union
_invlist_union_maybe_complement_2nd
_load_PL_utf8_foldcloses
_new_invlist
_setup_canned_invlist
_swash_inversion_hash
_swash_to_invlist
_to_fold_latin1
_to_upper_title_latin1
_warn_problematic_locale
aassign_common_vars
add_cp_to_invlist
alloc_maybe_populate_EXACT
เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™
amagic_is_enabled
เบ™เปเบฒเปƒเบŠเป‰
av_extend_guts
av_reify
bind_match
boot_core_PerlIO
boot_core_UNIVERSAL
boot_core_mro
เป€เบกเบทเปˆเบญโ€‹เปƒเบ”โ€‹
check_utf8_print
ck_anoncode
ck_backtick
ck_bitop
ck_cmp
ck_concat
ck_เบ–เบทเบเบเปเบฒเบ™เบปเบ”
ck_delete
ck_เปเบ•เปˆเบฅเบฐ
ck_entersub_args_core
ck_eof
ck_eval
ck_exec
ck_ เบกเบตเบขเบนเปˆ
ck_ftst
ck_fun
ck_glob
ck_grep
ck_index
ck_join
ck_length
ck_lfun
ck_listiob
ck_match
ck_method
ck_null
ck_open
ck_prototype
ck_readline
ck_refassign
ck_repeat
ck_require
ck_return
ck_fun
ck_rvconst
ck_sassign
ck_select
ck_shift
ck_smartmatch
ck_sort
ck_spair
ck_split
ck_stringify
ck_subr
ck_substr
ck_svconst
ck_เบšเบญเบ
ck_trunc
เบ•เบณเบซเบผเบงเบ”เปƒเบเป‰เบ—เบตเปˆเบชเบธเบ”
compute_EXACTish
coresub_op
create_eval_scope
croak_no_mem
croak_popstack
current_re_engine
custom_op_get_field
cv_ckproto_len_flags
cv_clone_into
cv_const_sv_or_av
cv_undef_flags
cvgv_from_hek
cvgv_set
cvstash_set
deb_stack_all
defelem_target
delete_eval_scope
die_unwind
do_aexec
do_aexec5
do_eof
do_exec
do_exec3
do_execfree
do_ipcctl
do_ipcget
do_msgrcv
do_msgsnd
do_ncmp
do_open6
do_open_raw
do_print
do_readline
do_seek
do_semop
do_shmio
do_sysseek
do_เบšเบญเบ
do_trans
do_vecget
do_vecset
do_vop
dofile
drand48_init_r
drand48_r
dump_all_perl
dump_packsubs_perl
dump_sub_perl
dump_sv_child
emulate_cop_io
feature_is_enabled
find_lexical_cv
เบŠเบญเบเบซเบฒ_runcv_where
find_rundefsv2
find_script
free_tied_hv_pool
get_and_check_backslash_N_name
get_db_sub
get_debug_opts
get_hash_seed
get_invlist_iter_addr
get_invlist_offset_addr
get_invlist_previous_index_addr
get_no_modify
get_opargs
get_re_arg
getenv_len
grok_atoUV
grok_bslash_x
gv_fetchmeth_เบžเบฒเบเปƒเบ™
gv_override
gv_setref
gv_stashpvn_เบžเบฒเบเปƒเบ™
gv_stashsvpvn_cached
hfree_next_entry
hv_backreferences_p
hv_kill_backrefs
hv_placeholders_p
hv_undef_flags
init_argv_symbols
init_constants
init_dbargs
init_debugger
เบ›เบตเป‰เบ™
invlist_array
invlist_clone
invlist_highest
invlist_is_iterating
invlist_iterfinish
invlist_iterinit
invlist_max
invlist_previous_index
invlist_set_len
invlist_set_previous_index
invlist_trim
io_close
is_utf8_common
isinfnansv
jmabe
เบ„เปเบฒ
keyword_plugin_standard
เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆ
เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™
magic_clear_all_env
magic_cleararylen_p
magic_clearenv
magic_clearisa
magic_clearpack
magic_clearig
magic_copycallchecker
magic_existspack
magic_freearylen_p
magic_freeovrld
magic_get
magic_getarylen
magic_getdebugvar
magic_getdefelem
magic_getnkeys
magic_getpack
magic_getpos
magic_getsig
magic_getsubstr
magic_gettaint
magic_getuvar
magic_getvec
magic_killbackrefs
magic_nextpack
magic_regdata_cnt
magic_regdatum_get
magic_regdatum_set
magic_scalarpack
magic_set
magic_set_all_env
magic_setarylen
magic_setcolxfrm
magic_setdbline
magic_setdebugvar
magic_setdefelem
magic_setenv
magic_setisa
magic_setlvref
magic_setmglob
magic_setnkeys
magic_setpack
magic_setpos
magic_setregexp
magic_setsig
magic_setsubstr
magic_settaint
magic_setutf8
magic_setuvar
magic_setvec
magic_sizepack
magic_wipepack
malloc_good_size
malloced_size
mem_colxfrm
mg_find_mglob
mode_from_discipline
more_bodies
mro_meta_dup
mro_meta_init
multideref_stringify
my_attrs
my_clearenv
my_lstat_flags
my_stat_flags
my_unexec
เปƒเปเปˆATTRSUB_x
GP เปƒเบซเบกเปˆ
newMETHOP_internal
newSTUB
เปƒเบซเบกเปˆSVavdefelem
newXS_deffile
newXS_len_flags
new_warnings_bitfield
Nextargv
noperl_die
oopsAV
oopsHV
op_clear
op_integerize
op_lvalue_flags
op_refcnt_dec
op_refcnt_inc
op_relocate_sv
op_std_init
op_unscope
opmethod_stash
opslab_force_free
opslab_free
opslab_free_nopad
เบŠเบธเบ”
package_version
pad_add_weakref
padlist_store
padname_free
padnamelist_free
parse_subsignature
parse_unicode_opts
parser_free
parser_free_nexttoke_ops
path_is_searchable
peep
เป€เบงเบฅเบฒเบเบฒเบ‡เบ„เบทเบ™
populate_isa
ptr_hash
เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”
re_op_compile
reg_named_buff
reg_named_buff_iter
reg_numbered_buff_fetch
reg_numbered_buff_length
reg_numbered_buff_store
reg_qr_package
reg_skipcomment
reg_temp_copy
เป€เบ›เบฑเบ™เบ›เบปเบเบเบฐเบ•เบด
regpposixcc
regprop
report_evil_fh
report_redefined_cv
report_wrongway_fh
เบ›เบตเบš
rsignal_restore
rsignal_save
rxres_save
same_dirent
save_aliased_sv
save_strlen
เป€เบฅเบทเปˆเบญเบ
เบœเบดเบง เปœเบฑเบ‡
scalarvoid
set_caret_X
set_padlist
เบ„เบงเบ™_warn_nl
เบœเบนเป‰เบฎเบฑเบšเบกเบท
softref2xv
ssc_add_range
ssc_clear_locale
ssc_cp_ เปเบฅเบฐ
ssc_intersection
ssc_union
sub_crush_depth
sv_add_backref
sv_buf_to_ro
sv_del_backref
sv_free2
sv_kill_backrefs
sv_len_utf8_nomg
sv_magicext_mglob
sv_mortalcopy_flags
sv_only_taint_gmagic
sv_or_pv_pos_u2b
sv_resetpvn
sv_sethek
sv_setsv_cow
sv_unglob
tied_method
tmps_grow_p
translate_substr_offsets
try_amagic_bin
try_amagic_un
unshare_hek
เบ™เบณ เปƒเบŠเป‰
varname
vivify_defelem
vivify_ref
wait4pid
was_lvalue_sub
เบชเบฑเบ‡เป€เบเบ”เป€เบšเบดเปˆเบ‡
win32_croak_not_implemented
write_to_stderr
xs_boot_epilog
xs_handshake
yyerror
yyerror_pv
yyerror_pvn
yylex
yyparse
yyunlex

AUTHORS


เบฅเบฐเบšเบปเบšเป€เบญเบเบฐเบชเบฒเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบซเบผเบฑเบ Perl เป‚เบ”เบ Benjamin Stuhl.
เป€เบญเบเบฐเบชเบฒเบ™เปเบกเปˆเบ™เป‚เบ”เบเปƒเบœเบ—เบตเปˆเบกเบตเปƒเบˆเบ”เบตเบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเบšเบฑเบ™เบ—เบถเบเบซเบ™เป‰เบฒเบ—เบตเปˆเบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ.

เปƒเบŠเป‰ perlintern เบญเบญเบ™เป„เบฅเบ™เปŒเป‚เบ”เบเปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™ onworks.net


เป€เบŠเบตเบšเป€เบงเบต เปเบฅเบฐเบชเบฐเบ–เบฒเบ™เบตเป€เบฎเบฑเบ”เบงเบฝเบเบŸเบฃเบต

เบ”เบฒเบงเป‚เบซเบผเบ”เปเบญเบฑเบš Windows เปเบฅเบฐ Linux

  • 1
    Psi
    Psi
    Psi เปเบกเปˆเบ™ XMPP เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เป‰เบฒเบกเป€เบงเบ—เบต
    เบฅเบนเบเบ„เป‰เบฒเบญเบญเบเปเบšเบšเบกเบฒเบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบปเบšเบเบฒเบ™.
    เบกเบตเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเบกเบตเบขเบนเปˆเบชเปเบฒเบฅเบฑเบš MS
    Windows, GNU/Linux เปเบฅเบฐ macOS.. เบœเบนเป‰เบŠเบปเบก:
    เบœเบนเป‰เปƒเบŠเป‰เบชเบธเบ”เบ—เป‰เบฒเบ...
    เบ”เบฒเบงเป‚เบซเบฅเบ” Psi
  • 2
    Blobby Volley 2
    Blobby Volley 2
    เบเบฒเบ™เบชเบทเบšเบ•เปเปˆเบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™เบ‚เบญเบ‡เบŠเบทเปˆเบชเบฝเบ‡
    เป€เบเบกเบญเบฒเป€เบ„เบ” Blobby Volley 1.x..
    เบœเบนเป‰เบŠเบปเบก: เบœเบนเป‰เปƒเบŠเป‰เบชเบธเบ”เบ—เป‰เบฒเบ/เป€เบ”เบฑเบชเบ—เบฑเบญเบš. เบœเบนเป‰เปƒเบŠเป‰
    เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš: OpenGL, SDL. เบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก
    เบžเบฒเบชเบฒ: C++, Lua. เบ„...
    เบ”เบฒเบงเป‚เบซเบฅเบ” Blobby Volley 2
  • 3
    SuiteCRM
    SuiteCRM
    SuiteCRM เปเบกเปˆเบ™เบฅเบนเบเบ„เป‰เบฒเบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบฎเบฒเบ‡เบงเบฑเบ™
    เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ„เบงเบฒเบกเบชเบณเบžเบฑเบ™ (CRM)
    เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹เบ™เปเบฒโ€‹เบกเบฒโ€‹เปƒเบซเป‰โ€‹เบ—เปˆเบฒเบ™โ€‹เป‚เบ”เบโ€‹เบœเบนเป‰โ€‹เบ‚เบฝเบ™โ€‹
    เปเบฅเบฐเบœเบนเป‰เบฎเบฑเบเบชเบฒ, SalesAgility. เบกเบฑเบ™เปเบกเปˆเบ™
    เป‚เบฅเบ...
    เบ”เบฒเบงเป‚เบซเบฅเบ” SuiteCRM
  • 4
    เบœเบนเป‰เบšเปเบฅเบดเบซเบฒเบ™
    เบœเบนเป‰เบšเปเบฅเบดเบซเบฒเบ™
    Poweradmin เปเบกเปˆเบ™ DNS เบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆเป€เบงเบฑเบš
    เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบšเปเบฅเบดเบซเบฒเบ™เบชเบณเบฅเบฑเบšเป€เบŠเบตเบšเป€เบงเบต PowerDNS.
    เบญเบดเบ™เป€เบ•เบตเป€เบŸเบ”เบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเบชเปเบฒเบฅเบฑเบšเบชเปˆเบงเบ™เปƒเบซเบเปˆ
    เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ‚เบญเบ‡ PowerDNS. เบกเบฑเบ™เบกเบตเป€เบ•เบฑเบก
    เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ ...
    เบ”เบฒเบงเป‚เบซเบฅเบ” Poweradmin
  • 5
    Gin Web Framework
    Gin Web Framework
    Gin เปเบกเปˆเบ™เบเบญเบšเป€เบงเบฑเบšเบ—เบตเปˆเป„เบงเบขเปˆเบฒเบ‡เบšเปเปˆเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญ
    เบ‚เบฝเบ™เปƒเบ™ Golang เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เป€เบ–เบดเบ‡
    40 เป€เบ—เบปเปˆเบฒโ€‹เป„เบงโ€‹, เบ‚เปโ€‹เบ‚เบญเบšโ€‹เปƒเบˆโ€‹เบเบฑเบšโ€‹เบกเบฑเบ™โ€‹
    martini-like API เปเบฅเบฐเบชเบฐเบšเบฑเบš custom เบ‚เบญเบ‡
    httprout...
    เบ”เบฒเบงเป‚เบซเบฅเบ” Gin Web Framework
  • 6
    CEREUS LINUX
    CEREUS LINUX
    CEREUS LINUX basado en MX LINUX con
    varios entrornos de escritorios. เบ™เบตเป‰โ€‹เปเบกเปˆเบ™
    เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ”เบถเบ‡เบ‚เปเป‰เบกเบนเบ™เป„เบ”เป‰
    เบˆเบฒเบ
    https://sourceforge.net/projects/cereu...
    เบ”เบฒเบงเป‚เบซเบฅเบ” CEREUS LINUX
  • เป€เบžเบตเปˆเบกเป€เบ•เบตเบก ยป

Linux เบ„เบณ เบชเบฑเปˆเบ‡

  • 1
    aa-clickquery
    aa-clickquery
    aa-clickquery - เป‚เบ„เบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบญเบšเบ–เบฒเบก
    click-apparmor DESCRIPTION: เป‚เบ„เบ‡เบเบฒเบ™เบ™เบตเป‰
    เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบชเบญเบšเบ–เบฒเบก click-apparmor เบชเปเบฒเบฅเบฑเบš
    เบ‚เปเป‰เบกเบนเบ™. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰: aa-clickquery
    --click-fra...
    เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ aa-clickquery
  • 2
    aa-exec-เบ„เบฅเบดเบ
    aa-exec-เบ„เบฅเบดเบ
    aa-exec-click - เป‚เบ„เบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”
    เบเบปเบ”เบซเบธเป‰เบกเบซเปเปˆเบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เบเบฑเบเบ‚เบฑเบ‡
    เบฅเบฒเบโ€‹เบฅเบฐโ€‹เบญเบฝเบ”โ€‹: เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ™เบตเป‰โ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เป€เบžเบทเปˆเบญโ€‹
    เบ›เบฐเบ•เบดเบšเบฑเบ”เบŠเบธเบ”เบ„เบฅเบดเบเบžเบฒเบเปƒเบ•เป‰ AppArmor
    เบเบฒเบ™เบเบฑเบเบ‚เบฑเบ‡. เบ‚เป‰เบญเบ...
    เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ aa-exec-click
  • 3
    cpio
    cpio
    cpio - เบ„เบฑเบ”เบฅเบญเบเป„เบŸเบฅเปŒเป„เบ›เบซเบฒเปเบฅเบฐเบˆเบฒเบเปเบŸเป‰เบกเบˆเบฑเบ”เป€เบเบฑเบš ...
    เปเบฅเปˆเบ™ cpio
  • 4
    cpipe
    cpipe
    cpipe - เบ„เบฑเบ”เบฅเบญเบ stdin เป„เบ› stdout เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ
    เบ™เบฑเบš bytes เปเบฅเบฐเบฅเบฒเบเบ‡เบฒเบ™เบ„เบงเบฒเบกเบ„เบทเบšเบซเบ™เป‰เบฒ ...
    เปเบฅเปˆเบ™ cpipe
  • 5
    FvwmSave
    FvwmSave
    FvwmSave - Fvwm desktop-layout
    เป‚เบกเบ”เบนเบ™เบ›เบฐเบซเบเบฑเบ” ...
    เปเบฅเปˆเบ™ FvwmSave
  • 6
    FvwmSave1
    FvwmSave1
    FvwmSave - FVWM desktop-layout
    เป‚เบกเบ”เบนเบ™เบ›เบฐเบซเบเบฑเบ” ...
    เปเบฅเปˆเบ™ FvwmSave1
  • เป€เบžเบตเปˆเบกเป€เบ•เบตเบก ยป

Ad