2002-08-19 Dick Porter <dick@ximian.com>
[mono.git] / mono / jit / emit-x86.c
index b16cf88a675f3fb4ad98994f06959a661f83411a..3f169db9c77e9b26f0026a0bfb0a9e53625068f7 100644 (file)
@@ -1224,6 +1224,7 @@ arch_jit_compile_cfg (MonoDomain *target_domain, MonoFlowGraph *cfg)
        MonoJitInfo *ji;
        guint32 ls_used_mask = 0;
        MonoMethod *method = cfg->method;
+       int offset, gap;
 
        ji = mono_mempool_alloc0 (target_domain->mp, sizeof (MonoJitInfo));
                
@@ -1264,6 +1265,21 @@ arch_jit_compile_cfg (MonoDomain *target_domain, MonoFlowGraph *cfg)
        arch_emit_epilogue (cfg);               
        cfg->epilogue_end = cfg->code - cfg->start;
 
+       offset = cfg->code - cfg->start;
+       gap = cfg->code_size - offset;
+       if (gap > 0) {
+               char *org = cfg->start;
+#if 0
+               cfg->start = g_realloc (cfg->start, offset);
+#else
+               cfg->start = mono_mempool_alloc (target_domain->code_mp, offset);
+               memcpy (cfg->start, org, offset);
+               g_free (org);
+#endif
+               cfg->code_size = offset;
+               cfg->code = cfg->start + offset;
+       }
+
        mono_compute_branches (cfg);
 
        ji->code_size = cfg->code - cfg->start;