[vala/staging: 2/4] codegen: Make get_temp_variable() default to init=false



commit 971f474f105bd1bbee7144eb4183635084c96821
Author: Rico Tzschichholz <ricotz ubuntu com>
Date:   Thu Nov 10 10:24:42 2016 +0100

    codegen: Make get_temp_variable() default to init=false

 codegen/valaccodebasemodule.vala         |    2 +-
 codegen/valaccodememberaccessmodule.vala |    5 +++--
 codegen/valaccodemethodcallmodule.vala   |   10 +++++-----
 3 files changed, 9 insertions(+), 8 deletions(-)
---
diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala
index 3921b0e..764b4d1 100644
--- a/codegen/valaccodebasemodule.vala
+++ b/codegen/valaccodebasemodule.vala
@@ -2570,7 +2570,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                return result;
        }
 
-       public LocalVariable get_temp_variable (DataType type, bool value_owned = true, CodeNode? 
node_reference = null, bool init = true) {
+       public LocalVariable get_temp_variable (DataType type, bool value_owned = true, CodeNode? 
node_reference = null, bool init = false) {
                var var_type = type.copy ();
                var_type.value_owned = value_owned;
                var local = new LocalVariable (var_type, "_tmp%d_".printf (next_temp_var_id));
diff --git a/codegen/valaccodememberaccessmodule.vala b/codegen/valaccodememberaccessmodule.vala
index 65c71ae..fb8a156 100644
--- a/codegen/valaccodememberaccessmodule.vala
+++ b/codegen/valaccodememberaccessmodule.vala
@@ -224,13 +224,14 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule {
                                        ccall.add_argument (pub_inst);
                                }
 
-                               var temp_value = (GLibValue) create_temp_value (prop.get_accessor.value_type, 
false, expr);
+                               bool prop_is_real_non_null_struct_type = 
prop.property_type.is_real_non_null_struct_type ();
+                               var temp_value = (GLibValue) create_temp_value (prop.get_accessor.value_type, 
prop_is_real_non_null_struct_type, expr);
                                expr.target_value = load_temp_value (temp_value);
                                var ctemp = get_cvalue_ (temp_value);
 
                                // Property access to real struct types is handled differently
                                // The value is returned by out parameter
-                               if (prop.property_type.is_real_non_null_struct_type ()) {
+                               if (prop_is_real_non_null_struct_type) {
                                        ccall.add_argument (new CCodeUnaryExpression 
(CCodeUnaryOperator.ADDRESS_OF, ctemp));
                                        ccode.add_expression (ccall);
                                } else {
diff --git a/codegen/valaccodemethodcallmodule.vala b/codegen/valaccodemethodcallmodule.vala
index 7786d1b..31e1839 100644
--- a/codegen/valaccodemethodcallmodule.vala
+++ b/codegen/valaccodemethodcallmodule.vala
@@ -402,7 +402,7 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
                                        } else {
                                                arg.target_value = null;
 
-                                               var temp_var = get_temp_variable (param.variable_type, 
param.variable_type.value_owned);
+                                               var temp_var = get_temp_variable (param.variable_type, 
param.variable_type.value_owned, null, true);
                                                emit_temp_var (temp_var);
                                                set_cvalue (arg, get_variable_cexpression (temp_var.name));
                                                arg.target_value.value_type = arg.target_type;
@@ -425,12 +425,12 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
                                                        var deleg_type = (DelegateType) param.variable_type;
                                                        var d = deleg_type.delegate_symbol;
                                                        if (d.has_target) {
-                                                               temp_var = get_temp_variable (new PointerType 
(new VoidType ()));
+                                                               temp_var = get_temp_variable (new PointerType 
(new VoidType ()), true, null, true);
                                                                emit_temp_var (temp_var);
                                                                set_delegate_target (arg, 
get_variable_cexpression (temp_var.name));
                                                                carg_map.set (get_param_pos 
(get_ccode_delegate_target_pos (param)), new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, 
get_delegate_target (arg)));
                                                                if (deleg_type.is_disposable ()) {
-                                                                       temp_var = get_temp_variable 
(gdestroynotify_type);
+                                                                       temp_var = get_temp_variable 
(gdestroynotify_type, true, null, true);
                                                                        emit_temp_var (temp_var);
                                                                        set_delegate_target_destroy_notify 
(arg, get_variable_cexpression (temp_var.name));
                                                                        carg_map.set (get_param_pos 
(get_ccode_delegate_target_pos (param) + 0.01), new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, 
get_delegate_target_destroy_notify (arg)));
@@ -644,7 +644,7 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
                CCodeExpression out_param_ref = null;
 
                if (return_result_via_out_param) {
-                       var out_param_var = get_temp_variable (itype.get_return_type ());
+                       var out_param_var = get_temp_variable (itype.get_return_type (), true, null, true);
                        out_param_ref = get_variable_cexpression (out_param_var.name);
                        emit_temp_var (out_param_var);
                        out_arg_map.set (get_param_pos (-3), new CCodeUnaryExpression 
(CCodeUnaryOperator.ADDRESS_OF, out_param_ref));
@@ -790,7 +790,7 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
                        if (m != null && m.get_format_arg_index () >= 0) {
                                set_cvalue (expr, ccall_expr);
                        } else if (!return_result_via_out_param) {
-                               var temp_var = get_temp_variable (result_type, result_type.value_owned);
+                               var temp_var = get_temp_variable (result_type, result_type.value_owned, null, 
false);
                                var temp_ref = get_variable_cexpression (temp_var.name);
 
                                emit_temp_var (temp_var);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]