System/Libraries/Graphics2D: Consolidate CAlloc/Free requests for @callable_context2d

This commit is contained in:
Alec Murphy 2025-04-27 06:08:44 -04:00
parent 80f599a19a
commit a75b69face

View file

@ -682,18 +682,10 @@ U0 DelContext2D(Context2D* ctx)
if (!ctx) { if (!ctx) {
return; return;
} }
Free(ctx->fb); if (ctx->fb)
Free(ctx->scaled); Free(ctx->fb);
Free(ctx->rotated); if (ctx->blot)
Free(ctx->clipped); Free(ctx->blot);
Free(ctx->line);
Free(ctx->plot);
Free(ctx->peek);
Free(ctx->fill_rect);
Free(ctx->fill);
Free(ctx->copy_rect);
Free(ctx->blur);
Free(ctx->blot);
Free(ctx); Free(ctx);
} }
@ -1670,12 +1662,18 @@ U32 @c2d_peek_wrapper_function(I64 x, I64 y)
Free(ctx); Free(ctx);
U64 a; U64 a;
I64 code_size;
I64 buffer_size = (MSize(&@c2d_blot_wrapper_function) + MSize(&@c2d_blur_wrapper_function) + MSize(&@c2d_copy_rect_wrapper_function) + MSize(&@c2d_fill_wrapper_function) + MSize(&@c2d_fill_rect_wrapper_function) + MSize(&@c2d_peek_wrapper_function) + MSize(&@c2d_plot_wrapper_function) + MSize(&@c2d_line_wrapper_function) + MSize(&@c2d_text_wrapper_function) + MSize(&@c2d_clipped_wrapper_function) + MSize(&@c2d_rotated_wrapper_function) + MSize(&@c2d_scaled_wrapper_function));
buffer_size += buffer_size % 16;
U64 code_ptr = CAlloc(buffer_size, adam_task->code_heap);
I64 code_size = 0;
// blot // blot
code_size = MSize(&@c2d_blot_wrapper_function); code_size = MSize(&@c2d_blot_wrapper_function);
res->blot = CAlloc(code_size, adam_task->code_heap); res->blot = code_ptr;
MemCpy(res->blot, &@c2d_blot_wrapper_function, code_size); MemCpy(res->blot, &@c2d_blot_wrapper_function, code_size);
code_ptr += code_size;
a = res->blot; a = res->blot;
a += 0x1c; a += 0x1c;
@ -1687,8 +1685,9 @@ U32 @c2d_peek_wrapper_function(I64 x, I64 y)
// blur // blur
code_size = MSize(&@c2d_blur_wrapper_function); code_size = MSize(&@c2d_blur_wrapper_function);
res->blur = CAlloc(code_size, adam_task->code_heap); res->blur = code_ptr;
MemCpy(res->blur, &@c2d_blur_wrapper_function, code_size); MemCpy(res->blur, &@c2d_blur_wrapper_function, code_size);
code_ptr += code_size;
a = res->blur; a = res->blur;
a += 0x10; a += 0x10;
@ -1700,8 +1699,9 @@ U32 @c2d_peek_wrapper_function(I64 x, I64 y)
// copy_rect // copy_rect
code_size = MSize(&@c2d_copy_rect_wrapper_function); code_size = MSize(&@c2d_copy_rect_wrapper_function);
res->copy_rect = CAlloc(code_size, adam_task->code_heap); res->copy_rect = code_ptr;
MemCpy(res->copy_rect, &@c2d_copy_rect_wrapper_function, code_size); MemCpy(res->copy_rect, &@c2d_copy_rect_wrapper_function, code_size);
code_ptr += code_size;
a = res->copy_rect; a = res->copy_rect;
a += 0x1c; a += 0x1c;
@ -1713,8 +1713,9 @@ U32 @c2d_peek_wrapper_function(I64 x, I64 y)
// fill // fill
code_size = MSize(&@c2d_fill_wrapper_function); code_size = MSize(&@c2d_fill_wrapper_function);
res->fill = CAlloc(code_size, adam_task->code_heap); res->fill = code_ptr;
MemCpy(res->fill, &@c2d_fill_wrapper_function, code_size); MemCpy(res->fill, &@c2d_fill_wrapper_function, code_size);
code_ptr += code_size;
a = res->fill; a = res->fill;
a += 0x0f; a += 0x0f;
@ -1726,8 +1727,9 @@ U32 @c2d_peek_wrapper_function(I64 x, I64 y)
// fill_rect // fill_rect
code_size = MSize(&@c2d_fill_rect_wrapper_function); code_size = MSize(&@c2d_fill_rect_wrapper_function);
res->fill_rect = CAlloc(code_size, adam_task->code_heap); res->fill_rect = code_ptr;
MemCpy(res->fill_rect, &@c2d_fill_rect_wrapper_function, code_size); MemCpy(res->fill_rect, &@c2d_fill_rect_wrapper_function, code_size);
code_ptr += code_size;
a = res->fill_rect; a = res->fill_rect;
a += 0x28; a += 0x28;
@ -1739,8 +1741,9 @@ U32 @c2d_peek_wrapper_function(I64 x, I64 y)
// peek // peek
code_size = MSize(&@c2d_peek_wrapper_function); code_size = MSize(&@c2d_peek_wrapper_function);
res->peek = CAlloc(code_size, adam_task->code_heap); res->peek = code_ptr;
MemCpy(res->peek, &@c2d_peek_wrapper_function, code_size); MemCpy(res->peek, &@c2d_peek_wrapper_function, code_size);
code_ptr += code_size;
a = res->peek; a = res->peek;
a += 0x16; a += 0x16;
@ -1752,8 +1755,9 @@ U32 @c2d_peek_wrapper_function(I64 x, I64 y)
// plot // plot
code_size = MSize(&@c2d_plot_wrapper_function); code_size = MSize(&@c2d_plot_wrapper_function);
res->plot = CAlloc(code_size, adam_task->code_heap); res->plot = code_ptr;
MemCpy(res->plot, &@c2d_plot_wrapper_function, code_size); MemCpy(res->plot, &@c2d_plot_wrapper_function, code_size);
code_ptr += code_size;
a = res->plot; a = res->plot;
a += 0x1b; a += 0x1b;
@ -1765,8 +1769,9 @@ U32 @c2d_peek_wrapper_function(I64 x, I64 y)
// line // line
code_size = MSize(&@c2d_line_wrapper_function); code_size = MSize(&@c2d_line_wrapper_function);
res->line = CAlloc(code_size, adam_task->code_heap); res->line = code_ptr;
MemCpy(res->line, &@c2d_line_wrapper_function, code_size); MemCpy(res->line, &@c2d_line_wrapper_function, code_size);
code_ptr += code_size;
a = res->line; a = res->line;
a += 0x28; a += 0x28;
@ -1778,8 +1783,9 @@ U32 @c2d_peek_wrapper_function(I64 x, I64 y)
// text // text
code_size = MSize(&@c2d_text_wrapper_function); code_size = MSize(&@c2d_text_wrapper_function);
res->text = CAlloc(code_size, adam_task->code_heap); res->text = code_ptr;
MemCpy(res->text, &@c2d_text_wrapper_function, code_size); MemCpy(res->text, &@c2d_text_wrapper_function, code_size);
code_ptr += code_size;
a = res->text; a = res->text;
a += 0x2e; a += 0x2e;
@ -1791,8 +1797,9 @@ U32 @c2d_peek_wrapper_function(I64 x, I64 y)
// clipped // clipped
code_size = MSize(&@c2d_clipped_wrapper_function); code_size = MSize(&@c2d_clipped_wrapper_function);
res->clipped = CAlloc(code_size, adam_task->code_heap); res->clipped = code_ptr;
MemCpy(res->clipped, &@c2d_clipped_wrapper_function, code_size); MemCpy(res->clipped, &@c2d_clipped_wrapper_function, code_size);
code_ptr += code_size;
a = res->clipped; a = res->clipped;
a += 0x0b; a += 0x0b;
@ -1804,8 +1811,9 @@ U32 @c2d_peek_wrapper_function(I64 x, I64 y)
// rotated // rotated
code_size = MSize(&@c2d_rotated_wrapper_function); code_size = MSize(&@c2d_rotated_wrapper_function);
res->rotated = CAlloc(code_size, adam_task->code_heap); res->rotated = code_ptr;
MemCpy(res->rotated, &@c2d_rotated_wrapper_function, code_size); MemCpy(res->rotated, &@c2d_rotated_wrapper_function, code_size);
code_ptr += code_size;
a = res->rotated; a = res->rotated;
a += 0x0b; a += 0x0b;
@ -1817,8 +1825,9 @@ U32 @c2d_peek_wrapper_function(I64 x, I64 y)
// scaled // scaled
code_size = MSize(&@c2d_scaled_wrapper_function); code_size = MSize(&@c2d_scaled_wrapper_function);
res->scaled = CAlloc(code_size, adam_task->code_heap); res->scaled = code_ptr;
MemCpy(res->scaled, &@c2d_scaled_wrapper_function, code_size); MemCpy(res->scaled, &@c2d_scaled_wrapper_function, code_size);
code_ptr += code_size;
a = res->scaled; a = res->scaled;
a += 0x0b; a += 0x0b;