Imported Upstream version 4.6.0.125

Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2016-08-03 10:59:49 +00:00
parent a569aebcfd
commit e79aa3c0ed
17047 changed files with 3137615 additions and 392334 deletions

View File

@@ -419,6 +419,9 @@ public class Tests : TestsBase, ITest2
ss_step_through ();
ss_non_user_code ();
ss_recursive (1);
ss_recursive2 (1);
ss_recursive2 (1);
ss_recursive_chaotic ();
ss_fp_clobber ();
}
@@ -568,6 +571,92 @@ public class Tests : TestsBase, ITest2
ss_recursive (n + 1);
}
// Breakpoint will be placed here
[MethodImplAttribute (MethodImplOptions.NoInlining)]
public static void ss_recursive2_trap ()
{
}
public static void ss_recursive2_at (string s)
{
// Console.WriteLine (s);
}
// This method is used both for a step over and step out test.
[MethodImplAttribute (MethodImplOptions.NoInlining)]
public static void ss_recursive2 (int x)
{
ss_recursive2_at ( "ss_recursive2 in " + x);
if (x < 5) {
int next = x + 1;
ss_recursive2_at ("ss_recursive2 descend " + x);
ss_recursive2_trap ();
ss_recursive2 (next);
}
ss_recursive2_at ("ss_recursive2 out " + x);
}
// Breakpoint will be placed here
[MethodImplAttribute (MethodImplOptions.NoInlining)]
public static void ss_recursive_chaotic_trap ()
{
}
[MethodImplAttribute (MethodImplOptions.NoInlining)]
public static void ss_recursive_chaotic_at (bool exiting, string at, int n)
{
// string indent = "";
// for (int count = 5 - n; count > 0; count--)
// indent += "\t";
// Console.WriteLine (indent + (exiting ? "<--" : "-->") + " " + at + " " + n);
}
[MethodImplAttribute (MethodImplOptions.NoInlining)]
public static void ss_recursive_chaotic_fizz (int n)
{
ss_recursive_chaotic_at (false, "fizz", n);
if (n > 0) {
int next = n - 1;
ss_recursive_chaotic_buzz (next);
ss_recursive_chaotic_fizzbuzz (next);
} else {
ss_recursive_chaotic_trap ();
}
ss_recursive_chaotic_at (true, "fizz", n);
}
[MethodImplAttribute (MethodImplOptions.NoInlining)]
public static void ss_recursive_chaotic_buzz (int n)
{
ss_recursive_chaotic_at (false, "buzz", n);
if (n > 0) {
int next = n - 1;
ss_recursive_chaotic_fizz (next);
ss_recursive_chaotic_fizzbuzz (next);
}
ss_recursive_chaotic_at (true, "buzz", n);
}
[MethodImplAttribute (MethodImplOptions.NoInlining)]
public static void ss_recursive_chaotic_fizzbuzz (int n)
{
ss_recursive_chaotic_at (false, "fizzbuzz", n);
if (n > 0) {
int next = n - 1;
ss_recursive_chaotic_fizz (next);
ss_recursive_chaotic_buzz (next);
ss_recursive_chaotic_fizzbuzz (next);
}
ss_recursive_chaotic_at (true, "fizzbuzz", n);
}
// Call a complex tree of recursive calls that has tripped up "step out" in the past.
[MethodImplAttribute (MethodImplOptions.NoInlining)]
public static void ss_recursive_chaotic ()
{
ss_recursive_chaotic_fizz (5);
}
[MethodImplAttribute (MethodImplOptions.NoInlining)]
public static void ss_fp_clobber () {
double v = ss_fp_clobber_1 (5.0);
@@ -1200,6 +1289,8 @@ public class Tests : TestsBase, ITest2
CrossDomain o = (CrossDomain)domain.CreateInstanceAndUnwrap (
typeof (CrossDomain).Assembly.FullName, "CrossDomain");
domains_print_across (o);
domains_2 (o, new CrossDomain ());
o.invoke_2 ();
@@ -1223,6 +1314,10 @@ public class Tests : TestsBase, ITest2
public static void domains_2 (object o, object o2) {
}
[MethodImplAttribute (MethodImplOptions.NoInlining)]
public static void domains_print_across (object o) {
}
[MethodImplAttribute (MethodImplOptions.NoInlining)]
public static void domains_3 () {
}
@@ -1454,8 +1549,13 @@ class TypeLoadClass {
class TypeLoadClass2 {
}
public class SentinelClass : MarshalByRefObject {
}
public class CrossDomain : MarshalByRefObject
{
SentinelClass printMe = new SentinelClass ();
public void invoke () {
Tests.invoke_in_domain ();
}