Skip to content

Commit aa8a615

Browse files
committed
Small optimizations to .symbol.
1 parent b733404 commit aa8a615

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

src/QAST/Block.nqp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,22 @@ class QAST::Block is QAST::Node {
4040
}
4141
}
4242

43+
my %NOSYMS := nqp::hash();
4344
method symbol($name, *%attrs) {
4445
%!symbol := nqp::hash() if nqp::isnull(%!symbol);
4546
if %attrs {
46-
%!symbol{$name} := %!symbol{$name} // {};
47+
my %syms := %!symbol{$name};
48+
unless nqp::ishash(%syms) {
49+
%!symbol{$name} := %syms := nqp::hash();
50+
}
4751
for %attrs {
48-
%!symbol{$name}{$_.key} := $_.value;
52+
%syms{$_.key} := $_.value;
4953
}
54+
%syms
55+
}
56+
else {
57+
nqp::ifnull(nqp::atkey(%!symbol, $name), %NOSYMS)
5058
}
51-
%!symbol{$name}
5259
}
5360

5461
method symtable() {

0 commit comments

Comments
 (0)