From: Rico Tzschichholz Date: Wed, 14 Dec 2016 18:37:12 +0000 (+0100) Subject: codegen: Re-use CCodeIdentifier ("_data_") X-Git-Tag: 0.35.3~21 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=136c400d312cafd127dc6d223c4e2970ed8e1585;p=thirdparty%2Fvala.git codegen: Re-use CCodeIdentifier ("_data_") --- diff --git a/codegen/valaccodemethodmodule.vala b/codegen/valaccodemethodmodule.vala index 6d8d3b6ed..35de6deda 100644 --- a/codegen/valaccodemethodmodule.vala +++ b/codegen/valaccodemethodmodule.vala @@ -124,18 +124,19 @@ public abstract class Vala.CCodeMethodModule : CCodeStructModule { } public void complete_async () { - var async_result_expr = new CCodeMemberAccess.pointer (new CCodeIdentifier ("_data_"), "_async_result"); + var data_var = new CCodeIdentifier ("_data_"); + var async_result_expr = new CCodeMemberAccess.pointer (data_var, "_async_result"); if (context.require_glib_version (2, 36)) { var finish_call = new CCodeFunctionCall (new CCodeIdentifier ("g_task_return_pointer")); finish_call.add_argument (async_result_expr); - finish_call.add_argument (new CCodeIdentifier ("_data_")); + finish_call.add_argument (data_var); finish_call.add_argument (new CCodeConstant ("NULL")); ccode.add_expression (finish_call); // Preserve the "complete now" behavior if state != 0, do so by // iterating the GTask's main context till the task is complete. - var state = new CCodeMemberAccess.pointer (new CCodeIdentifier ("_data_"), "_state_"); + var state = new CCodeMemberAccess.pointer (data_var, "_state_"); var zero = new CCodeConstant ("0"); var state_is_not_zero = new CCodeBinaryExpression (CCodeBinaryOperator.INEQUALITY, state, zero); ccode.open_if (state_is_not_zero); @@ -147,7 +148,7 @@ public abstract class Vala.CCodeMethodModule : CCodeStructModule { task_complete.add_argument (async_result_expr); task_is_complete = new CCodeBinaryExpression (CCodeBinaryOperator.INEQUALITY, task_complete, new CCodeConstant ("TRUE")); } else { - var task_complete = new CCodeMemberAccess.pointer (new CCodeIdentifier ("_data_"), "_task_complete_"); + var task_complete = new CCodeMemberAccess.pointer (data_var, "_task_complete_"); task_is_complete = new CCodeBinaryExpression (CCodeBinaryOperator.INEQUALITY, task_complete, new CCodeConstant ("TRUE")); } @@ -162,7 +163,7 @@ public abstract class Vala.CCodeMethodModule : CCodeStructModule { ccode.close (); } else { - var state = new CCodeMemberAccess.pointer (new CCodeIdentifier ("_data_"), "_state_"); + var state = new CCodeMemberAccess.pointer (data_var, "_state_"); var zero = new CCodeConstant ("0"); var state_is_zero = new CCodeBinaryExpression (CCodeBinaryOperator.EQUALITY, state, zero); ccode.open_if (state_is_zero); diff --git a/codegen/valagasyncmodule.vala b/codegen/valagasyncmodule.vala index d389ae6db..a077b4a54 100644 --- a/codegen/valagasyncmodule.vala +++ b/codegen/valagasyncmodule.vala @@ -696,17 +696,19 @@ public class Vala.GAsyncModule : GtkModule { push_function (readyfunc); + var data_var = new CCodeIdentifier ("_data_"); + ccode.add_declaration (dataname + "*", new CCodeVariableDeclarator ("_data_")); - ccode.add_assignment (new CCodeIdentifier ("_data_"), new CCodeIdentifier ("_user_data_")); - ccode.add_assignment (new CCodeMemberAccess.pointer (new CCodeIdentifier ("_data_"), "_source_object_"), new CCodeIdentifier ("source_object")); - ccode.add_assignment (new CCodeMemberAccess.pointer (new CCodeIdentifier ("_data_"), "_res_"), new CCodeIdentifier ("_res_")); + ccode.add_assignment (data_var, new CCodeIdentifier ("_user_data_")); + ccode.add_assignment (new CCodeMemberAccess.pointer (data_var, "_source_object_"), new CCodeIdentifier ("source_object")); + ccode.add_assignment (new CCodeMemberAccess.pointer (data_var, "_res_"), new CCodeIdentifier ("_res_")); if (context.require_glib_version (2, 36) && !context.require_glib_version (2, 44)) { - ccode.add_assignment (new CCodeMemberAccess.pointer (new CCodeIdentifier ("_data_"), "_task_complete_"), new CCodeConstant ("TRUE")); + ccode.add_assignment (new CCodeMemberAccess.pointer (data_var, "_task_complete_"), new CCodeConstant ("TRUE")); } var ccall = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_real_name (m) + "_co")); - ccall.add_argument (new CCodeIdentifier ("_data_")); + ccall.add_argument (data_var); ccode.add_expression (ccall); readyfunc.modifiers |= CCodeModifiers.STATIC;