diff options
Diffstat (limited to 'src/linda.cpp')
-rw-r--r-- | src/linda.cpp | 13 |
1 files changed, 0 insertions, 13 deletions
diff --git a/src/linda.cpp b/src/linda.cpp index 1916629..4bd4553 100644 --- a/src/linda.cpp +++ b/src/linda.cpp | |||
@@ -344,9 +344,6 @@ LUAG_FUNC(linda_get) | |||
344 | if (_linda->cancelRequest == CancelRequest::None) { | 344 | if (_linda->cancelRequest == CancelRequest::None) { |
345 | Keeper* const _K{ _linda->whichKeeper() }; | 345 | Keeper* const _K{ _linda->whichKeeper() }; |
346 | _pushed = keeper_call(_K->L, KEEPER_API(get), L_, _linda, 2); | 346 | _pushed = keeper_call(_K->L, KEEPER_API(get), L_, _linda, 2); |
347 | if (_pushed.value_or(0) > 0) { | ||
348 | keeper_toggle_nil_sentinels(L_, lua_gettop(L_) - _pushed.value(), LookupMode::FromKeeper); | ||
349 | } | ||
350 | } else { // linda is cancelled | 347 | } else { // linda is cancelled |
351 | // do nothing and return lanes.cancel_error | 348 | // do nothing and return lanes.cancel_error |
352 | kCancelError.pushKey(L_); | 349 | kCancelError.pushKey(L_); |
@@ -492,10 +489,6 @@ LUAG_FUNC(linda_receive) | |||
492 | } | 489 | } |
493 | if (_pushed.value() > 0) { | 490 | if (_pushed.value() > 0) { |
494 | LUA_ASSERT(L_, _pushed.value() >= _expected_pushed_min && _pushed.value() <= _expected_pushed_max); | 491 | LUA_ASSERT(L_, _pushed.value() >= _expected_pushed_min && _pushed.value() <= _expected_pushed_max); |
495 | // replace sentinels with real nils | ||
496 | keeper_toggle_nil_sentinels(L_, lua_gettop(L_) - _pushed.value(), LookupMode::FromKeeper); | ||
497 | // To be done from within the 'K' locking area | ||
498 | // | ||
499 | _linda->readHappened.notify_all(); | 492 | _linda->readHappened.notify_all(); |
500 | break; | 493 | break; |
501 | } | 494 | } |
@@ -589,8 +582,6 @@ LUAG_FUNC(linda_send) | |||
589 | raise_luaL_error(L_, "no data to send"); | 582 | raise_luaL_error(L_, "no data to send"); |
590 | } | 583 | } |
591 | 584 | ||
592 | // convert nils to some special non-nil sentinel in sent values | ||
593 | keeper_toggle_nil_sentinels(L_, _key_i + 1, LookupMode::ToKeeper); | ||
594 | bool _ret{ false }; | 585 | bool _ret{ false }; |
595 | CancelRequest _cancel{ CancelRequest::None }; | 586 | CancelRequest _cancel{ CancelRequest::None }; |
596 | KeeperCallResult _pushed; | 587 | KeeperCallResult _pushed; |
@@ -701,10 +692,6 @@ LUAG_FUNC(linda_set) | |||
701 | Keeper* const _K{ _linda->whichKeeper() }; | 692 | Keeper* const _K{ _linda->whichKeeper() }; |
702 | KeeperCallResult _pushed; | 693 | KeeperCallResult _pushed; |
703 | if (_linda->cancelRequest == CancelRequest::None) { | 694 | if (_linda->cancelRequest == CancelRequest::None) { |
704 | if (_has_value) { | ||
705 | // convert nils to some special non-nil sentinel in sent values | ||
706 | keeper_toggle_nil_sentinels(L_, 3, LookupMode::ToKeeper); | ||
707 | } | ||
708 | _pushed = keeper_call(_K->L, KEEPER_API(set), L_, _linda, 2); | 695 | _pushed = keeper_call(_K->L, KEEPER_API(set), L_, _linda, 2); |
709 | if (_pushed.has_value()) { // no error? | 696 | if (_pushed.has_value()) { // no error? |
710 | LUA_ASSERT(L_, _pushed.value() == 0 || _pushed.value() == 1); | 697 | LUA_ASSERT(L_, _pushed.value() == 0 || _pushed.value() == 1); |