Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ UpdateAndExecuteVoid10< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >()

static void System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid10< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 > ( CallSite site,
T0 arg0,
T1 arg1,
T2 arg2,
T3 arg3,
T4 arg4,
T5 arg5,
T6 arg6,
T7 arg7,
T8 arg8,
T9 arg9 )
inlinestaticpackage

Definition at line 1595 of file UpdateDelegates.cs.

1596 {
1598 Action<CallSite, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> target = callSite.Target;
1599 site = callSite.GetMatchmaker();
1600 Action<CallSite, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>[] rules;
1601 Action<CallSite, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> action;
1602 if ((rules = CallSiteOps.GetRules(callSite)) != null)
1603 {
1604 for (int i = 0; i < rules.Length; i++)
1605 {
1606 action = rules[i];
1607 if ((object)action != target)
1608 {
1609 callSite.Target = action;
1610 action(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
1611 if (CallSiteOps.GetMatch(site))
1612 {
1613 CallSiteOps.UpdateRules(callSite, i);
1614 callSite.ReleaseMatchmaker(site);
1615 return;
1616 }
1617 CallSiteOps.ClearMatch(site);
1618 }
1619 }
1620 }
1622 rules = ruleCache.GetRules();
1623 for (int j = 0; j < rules.Length; j++)
1624 {
1625 action = (callSite.Target = rules[j]);
1626 try
1627 {
1628 action(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
1629 if (CallSiteOps.GetMatch(site))
1630 {
1631 callSite.ReleaseMatchmaker(site);
1632 return;
1633 }
1634 }
1635 finally
1636 {
1637 if (CallSiteOps.GetMatch(site))
1638 {
1639 CallSiteOps.AddRule(callSite, action);
1640 CallSiteOps.MoveRule(ruleCache, action, j);
1641 }
1642 }
1643 CallSiteOps.ClearMatch(site);
1644 }
1645 action = null;
1646 object[] args = new object[10] { arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 };
1647 while (true)
1648 {
1649 callSite.Target = target;
1650 action = (callSite.Target = callSite.Binder.BindCore(callSite, args));
1651 try
1652 {
1653 action(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
1654 if (CallSiteOps.GetMatch(site))
1655 {
1656 callSite.ReleaseMatchmaker(site);
1657 break;
1658 }
1659 }
1660 finally
1661 {
1662 if (CallSiteOps.GetMatch(site))
1663 {
1664 CallSiteOps.AddRule(callSite, action);
1665 }
1666 }
1667 CallSiteOps.ClearMatch(site);
1668 }
1669 }
static bool GetMatch(CallSite site)
static void ClearMatch(CallSite site)
void ReleaseMatchmaker(CallSite matchMaker)
Definition CallSite.cs:106

References System.action, System.Runtime.CompilerServices.CallSite< T >.Binder, System.Runtime.CompilerServices.CallSiteOps.ClearMatch(), System.Runtime.CompilerServices.CallSiteOps.GetMatch(), System.Runtime.CompilerServices.CallSite< T >.GetMatchmaker(), System.Runtime.CompilerServices.RuleCache< T >.GetRules(), System.Runtime.CompilerServices.CallSite< T >.ReleaseMatchmaker(), and System.Runtime.CompilerServices.CallSite< T >.Target.