Skip to content

Commit ee83de5

Browse files
committed
optimize code
1 parent d82ed73 commit ee83de5

1 file changed

Lines changed: 25 additions & 25 deletions

File tree

crates/luars/src/lua_value/lua_table/native_table.rs

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ impl Node {
4747

4848
/// Write value from LuaValue
4949
#[inline(always)]
50-
fn set_value(&mut self, v: LuaValue) {
50+
fn set_value(&mut self, v: &LuaValue) {
5151
self.val_data = v.value;
5252
self.val_tt = v.tt;
5353
}
@@ -66,7 +66,7 @@ impl Node {
6666

6767
/// Write key from LuaValue
6868
#[inline(always)]
69-
fn set_key(&mut self, k: LuaValue) {
69+
fn set_key(&mut self, k: &LuaValue) {
7070
self.key_data = k.value;
7171
self.key_tt = k.tt;
7272
}
@@ -348,7 +348,7 @@ impl NativeTable {
348348
&& short_string_ptr_eq((*node).key_string_ptr(), key_ptr)
349349
{
350350
if (*node).val_tt != LUA_VNIL {
351-
(*node).set_value(value);
351+
(*node).set_value(&value);
352352
return true;
353353
}
354354
return false;
@@ -395,7 +395,7 @@ impl NativeTable {
395395
loop {
396396
if (*node).key_tt == LUA_VNUMINT && (*node).key_data.i == key {
397397
if (*node).val_tt != LUA_VNIL {
398-
(*node).set_value(value);
398+
(*node).set_value(&value);
399399
return true;
400400
}
401401
return false;
@@ -483,7 +483,7 @@ impl NativeTable {
483483
}
484484

485485
if (*mp).key_tt == LUA_VNIL {
486-
(*mp).set_key(*key);
486+
(*mp).set_key(key);
487487
(*mp).set_value_parts(value, tt);
488488
(*mp).next = 0;
489489
return ShortStrSetResult::Done {
@@ -511,7 +511,7 @@ impl NativeTable {
511511
if (*free_node).next != 0 {
512512
(*free_node).next += Self::node_offset(free_node, mp);
513513
}
514-
(*mp).set_key(*key);
514+
(*mp).set_key(&key);
515515
(*mp).set_value_parts(value, tt);
516516
(*mp).next = 0;
517517
return ShortStrSetResult::Done {
@@ -523,7 +523,7 @@ impl NativeTable {
523523
}
524524

525525
if let Some(free_node) = self.getfreepos() {
526-
(*free_node).set_key(*key);
526+
(*free_node).set_key(key);
527527
(*free_node).set_value_parts(value, tt);
528528
if (*mp).next != 0 {
529529
(*free_node).next =
@@ -562,7 +562,7 @@ impl NativeTable {
562562
} => {
563563
unsafe {
564564
let node = self.node.add(node_index);
565-
(*node).set_key(*key);
565+
(*node).set_key(key);
566566
(*node).set_value_parts(value.value, value.tt);
567567
}
568568
(new_key, 0)
@@ -598,14 +598,14 @@ impl NativeTable {
598598
let mp = self.mainposition_string(key);
599599

600600
if (*mp).key_tt == LUA_VNIL {
601-
(*mp).set_key(*key);
601+
(*mp).set_key(key);
602602
(*mp).set_value_parts(value.value, value.tt);
603603
(*mp).next = 0;
604604
return true;
605605
}
606606

607607
if (*mp).val_tt == LUA_VNIL {
608-
(*mp).set_key(*key);
608+
(*mp).set_key(key);
609609
(*mp).set_value_parts(value.value, value.tt);
610610
return true;
611611
}
@@ -622,7 +622,7 @@ impl NativeTable {
622622
if (*free_node).next != 0 {
623623
(*free_node).next += Self::node_offset(free_node, mp);
624624
}
625-
(*mp).set_key(*key);
625+
(*mp).set_key(key);
626626
(*mp).set_value_parts(value.value, value.tt);
627627
(*mp).next = 0;
628628
return true;
@@ -631,7 +631,7 @@ impl NativeTable {
631631
}
632632

633633
if let Some(free_node) = self.getfreepos() {
634-
(*free_node).set_key(*key);
634+
(*free_node).set_key(key);
635635
(*free_node).set_value_parts(value.value, value.tt);
636636
if (*mp).next != 0 {
637637
(*free_node).next =
@@ -1483,7 +1483,7 @@ impl NativeTable {
14831483
loop {
14841484
// Skip dead keys (value nil) - avoid UAF on freed strings
14851485
if (*node).val_tt != LUA_VNIL && (*node).key() == key {
1486-
(*node).set_value(LuaValue::nil());
1486+
(*node).set_value(&LuaValue::nil());
14871487
return (false, 0);
14881488
}
14891489
let next = (*node).next;
@@ -1501,8 +1501,8 @@ impl NativeTable {
15011501
// Fall through to insert below — hash is now allocated
15021502
let mp = self.mainposition(&key);
15031503
unsafe {
1504-
(*mp).set_key(key);
1505-
(*mp).set_value(value);
1504+
(*mp).set_key(&key);
1505+
(*mp).set_value(&value);
15061506
(*mp).next = 0;
15071507
}
15081508
return (true, delta);
@@ -1518,8 +1518,8 @@ impl NativeTable {
15181518
// When reusing a dead key's slot, preserve the `next` link so that
15191519
// any chain passing through this slot remains intact.
15201520
if (*mp).key_tt == LUA_VNIL {
1521-
(*mp).set_key(key);
1522-
(*mp).set_value(value);
1521+
(*mp).set_key(&key);
1522+
(*mp).set_value(&value);
15231523
(*mp).next = 0;
15241524
return (true, 0);
15251525
}
@@ -1537,13 +1537,13 @@ impl NativeTable {
15371537
scan = scan.offset(next_off as isize);
15381538
if (*scan).val_tt != LUA_VNIL && (*scan).key() == key {
15391539
// Key exists alive in chain — just update value
1540-
(*scan).set_value(value);
1540+
(*scan).set_value(&value);
15411541
return (false, 0);
15421542
}
15431543
}
15441544
// Key not found in chain — safe to reuse this dead slot
1545-
(*mp).set_key(key);
1546-
(*mp).set_value(value);
1545+
(*mp).set_key(&key);
1546+
(*mp).set_value(&value);
15471547
// Keep (*mp).next as-is — other chains may pass through here
15481548
return (true, 0);
15491549
}
@@ -1572,8 +1572,8 @@ impl NativeTable {
15721572
(*free_node).next += Self::node_offset(free_node, mp);
15731573
}
15741574
// Now mp is free for the new key
1575-
(*mp).set_key(key);
1576-
(*mp).set_value(value);
1575+
(*mp).set_key(&key);
1576+
(*mp).set_value(&value);
15771577
(*mp).next = 0;
15781578
return (true, 0);
15791579
}
@@ -1587,7 +1587,7 @@ impl NativeTable {
15871587
loop {
15881588
// Skip dead keys (value nil) to avoid UAF on freed strings
15891589
if (*node).val_tt != LUA_VNIL && (*node).key() == key {
1590-
(*node).set_value(value);
1590+
(*node).set_value(&value);
15911591
return (false, 0);
15921592
}
15931593
let next = (*node).next;
@@ -1599,8 +1599,8 @@ impl NativeTable {
15991599

16001600
// Key not found - insert at a free position
16011601
if let Some(free_node) = self.getfreepos() {
1602-
(*free_node).set_key(key);
1603-
(*free_node).set_value(value);
1602+
(*free_node).set_key(&key);
1603+
(*free_node).set_value(&value);
16041604
// Link new node at the HEAD of the chain (right after mp),
16051605
// matching C Lua 5.5 behavior: gnext(f) = mp+gnext(mp) - f
16061606
if (*mp).next != 0 {

0 commit comments

Comments
 (0)