|
@@ -183,6 +183,8 @@ interface
|
|
|
function pass_typecheck:tnode;override;
|
|
|
function pass_1 : tnode;override;
|
|
|
function simplify(forinline: boolean): tnode; override;
|
|
|
+ protected
|
|
|
+ procedure adjust_estimated_stack_size; virtual;
|
|
|
end;
|
|
|
ttryexceptnodeclass = class of ttryexceptnode;
|
|
|
|
|
@@ -195,6 +197,7 @@ interface
|
|
|
function simplify(forinline:boolean): tnode;override;
|
|
|
protected
|
|
|
function create_finalizer_procdef: tprocdef;
|
|
|
+ procedure adjust_estimated_stack_size; virtual;
|
|
|
end;
|
|
|
ttryfinallynodeclass = class of ttryfinallynode;
|
|
|
|
|
@@ -2068,7 +2071,8 @@ implementation
|
|
|
|
|
|
include(current_procinfo.flags,pi_do_call);
|
|
|
include(current_procinfo.flags,pi_uses_exceptions);
|
|
|
- inc(current_procinfo.estimatedtempsize,rec_jmp_buf.size*2);
|
|
|
+
|
|
|
+ adjust_estimated_stack_size;
|
|
|
end;
|
|
|
|
|
|
|
|
@@ -2080,6 +2084,11 @@ implementation
|
|
|
result:=cnothingnode.create;
|
|
|
end;
|
|
|
|
|
|
+ procedure ttryexceptnode.adjust_estimated_stack_size;
|
|
|
+ begin
|
|
|
+ inc(current_procinfo.estimatedtempsize,rec_jmp_buf.size*2);
|
|
|
+ end;
|
|
|
+
|
|
|
|
|
|
{*****************************************************************************
|
|
|
TTRYFINALLYNODE
|
|
@@ -2141,7 +2150,7 @@ implementation
|
|
|
if not(implicitframe) then
|
|
|
include(current_procinfo.flags,pi_uses_exceptions);
|
|
|
|
|
|
- inc(current_procinfo.estimatedtempsize,rec_jmp_buf.size);
|
|
|
+ adjust_estimated_stack_size;
|
|
|
end;
|
|
|
|
|
|
|
|
@@ -2206,6 +2215,12 @@ implementation
|
|
|
end;
|
|
|
|
|
|
|
|
|
+ procedure ttryfinallynode.adjust_estimated_stack_size;
|
|
|
+ begin
|
|
|
+ inc(current_procinfo.estimatedtempsize,rec_jmp_buf.size);
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
{*****************************************************************************
|
|
|
TONNODE
|
|
|
*****************************************************************************}
|