Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / Microsoft / Scripting / Actions / UpdateDelegates.Generated.cs / 1305376 / UpdateDelegates.Generated.cs
/* ****************************************************************************
*
* Copyright (c) Microsoft Corporation.
*
* This source code is subject to terms and conditions of the Microsoft Public License. A
* copy of the license can be found in the License.html file at the root of this distribution. If
* you cannot locate the Microsoft Public License, please send an email to
* dlr@microsoft.com. By using this source code in any fashion, you are agreeing to be bound
* by the terms of the Microsoft Public License.
*
* You must not remove this notice, or any other, from this software.
*
*
* ***************************************************************************/
using System.Runtime.CompilerServices;
using System.Threading;
namespace System.Dynamic {
internal static partial class UpdateDelegates {
//
// WARNING: do not edit these methods here. The real source code lives
// in two places: generate_dynsites.py, which generates the methods in
// this file, and UpdateDelegates.cs, which dynamically generates
// methods like these at run time. If you want to make a change, edit
// *both* of those files instead
//
#region Generated UpdateAndExecute Methods
// *** BEGIN GENERATED CODE ***
// generated by function: gen_update_targets from: generate_dynsites.py
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static TRet UpdateAndExecute0(CallSite site) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Func[] applicable;
Func rule, originalRule = @this.Target;
TRet result;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
result = rule(site);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return result;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
result = rule(site);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
result = rule(site);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static TRet NoMatch0(CallSite site) {
site._match = false;
return default(TRet);
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static TRet UpdateAndExecute1(CallSite site, T0 arg0) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Func[] applicable;
Func rule, originalRule = @this.Target;
TRet result;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
result = rule(site, arg0);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return result;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
result = rule(site, arg0);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
result = rule(site, arg0);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static TRet NoMatch1(CallSite site, T0 arg0) {
site._match = false;
return default(TRet);
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static TRet UpdateAndExecute2(CallSite site, T0 arg0, T1 arg1) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Func[] applicable;
Func rule, originalRule = @this.Target;
TRet result;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
result = rule(site, arg0, arg1);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return result;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
result = rule(site, arg0, arg1);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
result = rule(site, arg0, arg1);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static TRet NoMatch2(CallSite site, T0 arg0, T1 arg1) {
site._match = false;
return default(TRet);
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static TRet UpdateAndExecute3(CallSite site, T0 arg0, T1 arg1, T2 arg2) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Func[] applicable;
Func rule, originalRule = @this.Target;
TRet result;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
result = rule(site, arg0, arg1, arg2);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return result;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
result = rule(site, arg0, arg1, arg2);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1, arg2 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
result = rule(site, arg0, arg1, arg2);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static TRet NoMatch3(CallSite site, T0 arg0, T1 arg1, T2 arg2) {
site._match = false;
return default(TRet);
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static TRet UpdateAndExecute4(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Func[] applicable;
Func rule, originalRule = @this.Target;
TRet result;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
result = rule(site, arg0, arg1, arg2, arg3);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return result;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
result = rule(site, arg0, arg1, arg2, arg3);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1, arg2, arg3 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
result = rule(site, arg0, arg1, arg2, arg3);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static TRet NoMatch4(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3) {
site._match = false;
return default(TRet);
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static TRet UpdateAndExecute5(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Func[] applicable;
Func rule, originalRule = @this.Target;
TRet result;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
result = rule(site, arg0, arg1, arg2, arg3, arg4);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return result;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
result = rule(site, arg0, arg1, arg2, arg3, arg4);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1, arg2, arg3, arg4 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
result = rule(site, arg0, arg1, arg2, arg3, arg4);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static TRet NoMatch5(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4) {
site._match = false;
return default(TRet);
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static TRet UpdateAndExecute6(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Func[] applicable;
Func rule, originalRule = @this.Target;
TRet result;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return result;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1, arg2, arg3, arg4, arg5 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static TRet NoMatch6(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) {
site._match = false;
return default(TRet);
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static TRet UpdateAndExecute7(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Func[] applicable;
Func rule, originalRule = @this.Target;
TRet result;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return result;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1, arg2, arg3, arg4, arg5, arg6 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static TRet NoMatch7(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6) {
site._match = false;
return default(TRet);
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static TRet UpdateAndExecute8(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Func[] applicable;
Func rule, originalRule = @this.Target;
TRet result;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return result;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static TRet NoMatch8(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7) {
site._match = false;
return default(TRet);
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static TRet UpdateAndExecute9(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Func[] applicable;
Func rule, originalRule = @this.Target;
TRet result;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return result;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static TRet NoMatch9(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8) {
site._match = false;
return default(TRet);
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static TRet UpdateAndExecute10(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Func[] applicable;
Func rule, originalRule = @this.Target;
TRet result;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return result;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static TRet NoMatch10(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9) {
site._match = false;
return default(TRet);
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static void UpdateAndExecuteVoid1(CallSite site, T0 arg0) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Action[] applicable;
Action rule, originalRule = @this.Target;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
rule(site, arg0);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
rule(site, arg0);
if (CallSiteOps.GetMatch(site)) {
return;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
rule(site, arg0);
if (CallSiteOps.GetMatch(site)) {
return;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static void NoMatchVoid1(CallSite site, T0 arg0) {
site._match = false;
return;
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static void UpdateAndExecuteVoid2(CallSite site, T0 arg0, T1 arg1) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Action[] applicable;
Action rule, originalRule = @this.Target;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
rule(site, arg0, arg1);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
rule(site, arg0, arg1);
if (CallSiteOps.GetMatch(site)) {
return;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
rule(site, arg0, arg1);
if (CallSiteOps.GetMatch(site)) {
return;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static void NoMatchVoid2(CallSite site, T0 arg0, T1 arg1) {
site._match = false;
return;
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static void UpdateAndExecuteVoid3(CallSite site, T0 arg0, T1 arg1, T2 arg2) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Action[] applicable;
Action rule, originalRule = @this.Target;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
rule(site, arg0, arg1, arg2);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
rule(site, arg0, arg1, arg2);
if (CallSiteOps.GetMatch(site)) {
return;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1, arg2 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
rule(site, arg0, arg1, arg2);
if (CallSiteOps.GetMatch(site)) {
return;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static void NoMatchVoid3(CallSite site, T0 arg0, T1 arg1, T2 arg2) {
site._match = false;
return;
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static void UpdateAndExecuteVoid4(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Action[] applicable;
Action rule, originalRule = @this.Target;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
rule(site, arg0, arg1, arg2, arg3);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
rule(site, arg0, arg1, arg2, arg3);
if (CallSiteOps.GetMatch(site)) {
return;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1, arg2, arg3 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
rule(site, arg0, arg1, arg2, arg3);
if (CallSiteOps.GetMatch(site)) {
return;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static void NoMatchVoid4(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3) {
site._match = false;
return;
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static void UpdateAndExecuteVoid5(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Action[] applicable;
Action rule, originalRule = @this.Target;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
rule(site, arg0, arg1, arg2, arg3, arg4);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
rule(site, arg0, arg1, arg2, arg3, arg4);
if (CallSiteOps.GetMatch(site)) {
return;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1, arg2, arg3, arg4 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
rule(site, arg0, arg1, arg2, arg3, arg4);
if (CallSiteOps.GetMatch(site)) {
return;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static void NoMatchVoid5(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4) {
site._match = false;
return;
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static void UpdateAndExecuteVoid6(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Action[] applicable;
Action rule, originalRule = @this.Target;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
rule(site, arg0, arg1, arg2, arg3, arg4, arg5);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
rule(site, arg0, arg1, arg2, arg3, arg4, arg5);
if (CallSiteOps.GetMatch(site)) {
return;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1, arg2, arg3, arg4, arg5 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
rule(site, arg0, arg1, arg2, arg3, arg4, arg5);
if (CallSiteOps.GetMatch(site)) {
return;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static void NoMatchVoid6(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) {
site._match = false;
return;
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static void UpdateAndExecuteVoid7(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Action[] applicable;
Action rule, originalRule = @this.Target;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6);
if (CallSiteOps.GetMatch(site)) {
return;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1, arg2, arg3, arg4, arg5, arg6 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6);
if (CallSiteOps.GetMatch(site)) {
return;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static void NoMatchVoid7(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6) {
site._match = false;
return;
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static void UpdateAndExecuteVoid8(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Action[] applicable;
Action rule, originalRule = @this.Target;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
if (CallSiteOps.GetMatch(site)) {
return;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
if (CallSiteOps.GetMatch(site)) {
return;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static void NoMatchVoid8(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7) {
site._match = false;
return;
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static void UpdateAndExecuteVoid9(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Action[] applicable;
Action rule, originalRule = @this.Target;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
if (CallSiteOps.GetMatch(site)) {
return;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
if (CallSiteOps.GetMatch(site)) {
return;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static void NoMatchVoid9(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8) {
site._match = false;
return;
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static void UpdateAndExecuteVoid10(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Action[] applicable;
Action rule, originalRule = @this.Target;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
if (CallSiteOps.GetMatch(site)) {
return;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
if (CallSiteOps.GetMatch(site)) {
return;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static void NoMatchVoid10(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9) {
site._match = false;
return;
}
// *** END GENERATED CODE ***
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
/* ****************************************************************************
*
* Copyright (c) Microsoft Corporation.
*
* This source code is subject to terms and conditions of the Microsoft Public License. A
* copy of the license can be found in the License.html file at the root of this distribution. If
* you cannot locate the Microsoft Public License, please send an email to
* dlr@microsoft.com. By using this source code in any fashion, you are agreeing to be bound
* by the terms of the Microsoft Public License.
*
* You must not remove this notice, or any other, from this software.
*
*
* ***************************************************************************/
using System.Runtime.CompilerServices;
using System.Threading;
namespace System.Dynamic {
internal static partial class UpdateDelegates {
//
// WARNING: do not edit these methods here. The real source code lives
// in two places: generate_dynsites.py, which generates the methods in
// this file, and UpdateDelegates.cs, which dynamically generates
// methods like these at run time. If you want to make a change, edit
// *both* of those files instead
//
#region Generated UpdateAndExecute Methods
// *** BEGIN GENERATED CODE ***
// generated by function: gen_update_targets from: generate_dynsites.py
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static TRet UpdateAndExecute0(CallSite site) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Func[] applicable;
Func rule, originalRule = @this.Target;
TRet result;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
result = rule(site);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return result;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
result = rule(site);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
result = rule(site);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static TRet NoMatch0(CallSite site) {
site._match = false;
return default(TRet);
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static TRet UpdateAndExecute1(CallSite site, T0 arg0) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Func[] applicable;
Func rule, originalRule = @this.Target;
TRet result;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
result = rule(site, arg0);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return result;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
result = rule(site, arg0);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
result = rule(site, arg0);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static TRet NoMatch1(CallSite site, T0 arg0) {
site._match = false;
return default(TRet);
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static TRet UpdateAndExecute2(CallSite site, T0 arg0, T1 arg1) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Func[] applicable;
Func rule, originalRule = @this.Target;
TRet result;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
result = rule(site, arg0, arg1);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return result;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
result = rule(site, arg0, arg1);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
result = rule(site, arg0, arg1);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static TRet NoMatch2(CallSite site, T0 arg0, T1 arg1) {
site._match = false;
return default(TRet);
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static TRet UpdateAndExecute3(CallSite site, T0 arg0, T1 arg1, T2 arg2) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Func[] applicable;
Func rule, originalRule = @this.Target;
TRet result;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
result = rule(site, arg0, arg1, arg2);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return result;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
result = rule(site, arg0, arg1, arg2);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1, arg2 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
result = rule(site, arg0, arg1, arg2);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static TRet NoMatch3(CallSite site, T0 arg0, T1 arg1, T2 arg2) {
site._match = false;
return default(TRet);
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static TRet UpdateAndExecute4(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Func[] applicable;
Func rule, originalRule = @this.Target;
TRet result;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
result = rule(site, arg0, arg1, arg2, arg3);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return result;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
result = rule(site, arg0, arg1, arg2, arg3);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1, arg2, arg3 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
result = rule(site, arg0, arg1, arg2, arg3);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static TRet NoMatch4(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3) {
site._match = false;
return default(TRet);
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static TRet UpdateAndExecute5(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Func[] applicable;
Func rule, originalRule = @this.Target;
TRet result;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
result = rule(site, arg0, arg1, arg2, arg3, arg4);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return result;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
result = rule(site, arg0, arg1, arg2, arg3, arg4);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1, arg2, arg3, arg4 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
result = rule(site, arg0, arg1, arg2, arg3, arg4);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static TRet NoMatch5(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4) {
site._match = false;
return default(TRet);
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static TRet UpdateAndExecute6(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Func[] applicable;
Func rule, originalRule = @this.Target;
TRet result;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return result;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1, arg2, arg3, arg4, arg5 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static TRet NoMatch6(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) {
site._match = false;
return default(TRet);
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static TRet UpdateAndExecute7(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Func[] applicable;
Func rule, originalRule = @this.Target;
TRet result;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return result;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1, arg2, arg3, arg4, arg5, arg6 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static TRet NoMatch7(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6) {
site._match = false;
return default(TRet);
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static TRet UpdateAndExecute8(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Func[] applicable;
Func rule, originalRule = @this.Target;
TRet result;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return result;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static TRet NoMatch8(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7) {
site._match = false;
return default(TRet);
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static TRet UpdateAndExecute9(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Func[] applicable;
Func rule, originalRule = @this.Target;
TRet result;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return result;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static TRet NoMatch9(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8) {
site._match = false;
return default(TRet);
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static TRet UpdateAndExecute10(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Func[] applicable;
Func rule, originalRule = @this.Target;
TRet result;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return result;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
result = rule(site, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
if (CallSiteOps.GetMatch(site)) {
return result;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static TRet NoMatch10(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9) {
site._match = false;
return default(TRet);
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static void UpdateAndExecuteVoid1(CallSite site, T0 arg0) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Action[] applicable;
Action rule, originalRule = @this.Target;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
rule(site, arg0);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
rule(site, arg0);
if (CallSiteOps.GetMatch(site)) {
return;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
rule(site, arg0);
if (CallSiteOps.GetMatch(site)) {
return;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static void NoMatchVoid1(CallSite site, T0 arg0) {
site._match = false;
return;
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static void UpdateAndExecuteVoid2(CallSite site, T0 arg0, T1 arg1) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Action[] applicable;
Action rule, originalRule = @this.Target;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
rule(site, arg0, arg1);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
rule(site, arg0, arg1);
if (CallSiteOps.GetMatch(site)) {
return;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
rule(site, arg0, arg1);
if (CallSiteOps.GetMatch(site)) {
return;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static void NoMatchVoid2(CallSite site, T0 arg0, T1 arg1) {
site._match = false;
return;
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static void UpdateAndExecuteVoid3(CallSite site, T0 arg0, T1 arg1, T2 arg2) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Action[] applicable;
Action rule, originalRule = @this.Target;
//
// Create matchmaker and its site. We'll need them regardless.
//
site = CallSiteOps.CreateMatchmaker(@this);
//
// Level 1 cache lookup
//
if ((applicable = CallSiteOps.GetRules(@this)) != null) {
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
// if we've already tried it skip it...
if ((object)rule != (object)originalRule) {
@this.Target = rule;
rule(site, arg0, arg1, arg2);
if (CallSiteOps.GetMatch(site)) {
CallSiteOps.UpdateRules(@this, i);
return;
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
}
}
//
// Level 2 cache lookup
//
//
// Any applicable rules in level 2 cache?
//
var cache = CallSiteOps.GetRuleCache(@this);
applicable = cache.GetRules();
for (int i = 0; i < applicable.Length; i++) {
rule = applicable[i];
//
// Execute the rule
//
@this.Target = rule;
try {
rule(site, arg0, arg1, arg2);
if (CallSiteOps.GetMatch(site)) {
return;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// Rule worked. Add it to level 1 cache
//
CallSiteOps.AddRule(@this, rule);
// and then move it to the front of the L2 cache
CallSiteOps.MoveRule(cache, rule, i);
}
}
// Rule didn't match, try the next one
CallSiteOps.ClearMatch(site);
}
//
// Miss on Level 0, 1 and 2 caches. Create new rule
//
rule = null;
var args = new object[] { arg0, arg1, arg2 };
for (; ; ) {
@this.Target = originalRule;
rule = @this.Target = @this.Binder.BindCore(@this, args);
//
// Execute the rule on the matchmaker site
//
try {
rule(site, arg0, arg1, arg2);
if (CallSiteOps.GetMatch(site)) {
return;
}
} finally {
if (CallSiteOps.GetMatch(site)) {
//
// The rule worked. Add it to level 1 cache.
//
CallSiteOps.AddRule(@this, rule);
}
}
// Rule we got back didn't work, try another one
CallSiteOps.ClearMatch(site);
}
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters")]
internal static void NoMatchVoid3(CallSite site, T0 arg0, T1 arg1, T2 arg2) {
site._match = false;
return;
}
[Obsolete("pregenerated CallSite.Update delegate", true)]
internal static void UpdateAndExecuteVoid4(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3) {
//
// Declare the locals here upfront. It actually saves JIT stack space.
//
var @this = (CallSite>)site;
Action[] applicable;
Action