Sequence points are now generated by default.
authorMarcos Henrich <marcos.henrich@xamarin.com>
Thu, 30 Oct 2014 21:14:16 +0000 (21:14 +0000)
committerMarcos Henrich <marcos.henrich@xamarin.com>
Mon, 17 Nov 2014 09:54:23 +0000 (17:54 +0800)
mono/mini/aot-compiler.c
mono/mini/debugger-agent.c
mono/mini/method-to-ir.c
mono/mini/mini.c
mono/mini/mini.h

index 8b047f8f15ac9e4fc2ad62d3fd59f5fb8cae6937..209eb597abbfb60585696f4f1e96a52b478f8e88 100644 (file)
@@ -8843,7 +8843,7 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
                MonoDebugOptions *opt = mini_get_debug_options ();
 
                opt->mdb_optimizations = TRUE;
-               opt->gen_seq_points = TRUE;
+               opt->gen_seq_points_debug_data = TRUE;
 
                if (!mono_debug_enabled ()) {
                        aot_printerrf (acfg, "The soft-debug AOT option requires the --debug option.\n");
index 3d38d1a9c20b3abacc36a70e8bd357323777b48b..e5ca36c2692032ce17622883e734f6c053003c11 100644 (file)
@@ -1021,7 +1021,7 @@ mono_debugger_agent_init (void)
        breakpoints_init ();
        suspend_init ();
 
-       mini_get_debug_options ()->gen_seq_points = TRUE;
+       mini_get_debug_options ()->gen_seq_points_debug_data = TRUE;
        /* 
         * This is needed because currently we don't handle liveness info.
         */
index 328b62b208b3af0644efd08bc140c133f4c83664..a7e2e8785907e3b4891cf227b595cc5660cce314 100755 (executable)
@@ -7126,7 +7126,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                seq_points = FALSE;
        }
 
-       if (cfg->gen_seq_points && cfg->method == method) {
+       if (cfg->gen_seq_points_debug_data && cfg->method == method) {
                minfo = mono_debug_lookup_method (method);
                if (minfo) {
                        int i, n_il_offsets;
index 37928136ddfe501cb185b355762614cc81a53c07..4cfc69acf0f4e8971e30a53135e450e6e6caa5ff 100755 (executable)
@@ -4845,7 +4845,9 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
        cfg->full_aot = full_aot;
        cfg->skip_visibility = method->skip_visibility;
        cfg->orig_method = method;
-       cfg->gen_seq_points = debug_options.gen_seq_points;
+       cfg->gen_seq_points = TRUE;
+       cfg->gen_seq_points_debug_data = debug_options.gen_seq_points_debug_data;
+
        cfg->explicit_null_checks = debug_options.explicit_null_checks;
        cfg->soft_breakpoints = debug_options.soft_breakpoints;
        cfg->check_pinvoke_callconv = debug_options.check_pinvoke_callconv;
@@ -6903,7 +6905,7 @@ mini_parse_debug_options (void)
                else if (!strcmp (arg, "explicit-null-checks"))
                        debug_options.explicit_null_checks = TRUE;
                else if (!strcmp (arg, "gen-seq-points"))
-                       debug_options.gen_seq_points = TRUE;
+                       debug_options.gen_seq_points_debug_data = TRUE;
                else if (!strcmp (arg, "init-stacks"))
                        debug_options.init_stacks = TRUE;
                else if (!strcmp (arg, "casts"))
index 5d5c86c1427b73ba052701cdd45db6080be8bf6c..6d5c09d09e8243a30fd883d8536b4d416a293dbb 100755 (executable)
@@ -1487,6 +1487,7 @@ typedef struct {
        guint            uses_simd_intrinsics : 1;
        guint            keep_cil_nops : 1;
        guint            gen_seq_points : 1;
+       guint            gen_seq_points_debug_data : 1;
        guint            explicit_null_checks : 1;
        guint            compute_gc_maps : 1;
        guint            soft_breakpoints : 1;
@@ -1837,7 +1838,11 @@ typedef struct {
        gboolean suspend_on_unhandled;
        gboolean dyn_runtime_invoke;
        gboolean gdb;
-       gboolean gen_seq_points;
+       /*
+        * Whenever data such as next sequence points and flags is required.
+        * Next sequence points and flags are required by the debugger agent.
+        */
+       gboolean gen_seq_points_debug_data;
        gboolean explicit_null_checks;
        /*
         * Fill stack frames with 0x2a in method prologs. This helps with the