[vala] codegen: Use create_temp_value and load_temp_value on property access
- From: Luca Bruno <lucabru src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala] codegen: Use create_temp_value and load_temp_value on property access
- Date: Fri, 8 Jul 2011 21:25:46 +0000 (UTC)
commit d3dc82612dd7d82e4c364cc9ae9caafd95913b92
Author: Luca Bruno <lucabru src gnome org>
Date: Fri Jul 8 23:01:25 2011 +0200
codegen: Use create_temp_value and load_temp_value on property access
codegen/valaccodememberaccessmodule.vala | 20 +++++---------------
1 files changed, 5 insertions(+), 15 deletions(-)
---
diff --git a/codegen/valaccodememberaccessmodule.vala b/codegen/valaccodememberaccessmodule.vala
index e09bb2a..12278d0 100644
--- a/codegen/valaccodememberaccessmodule.vala
+++ b/codegen/valaccodememberaccessmodule.vala
@@ -221,10 +221,9 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule {
ccall.add_argument (pub_inst);
}
- var temp_var = get_temp_variable (base_property.get_accessor.value_type, base_property.get_accessor.value_type.value_owned);
- emit_temp_var (temp_var);
- var ctemp = get_variable_cexpression (temp_var.name);
- set_cvalue (expr, ctemp);
+ var temp_value = create_temp_value (base_property.get_accessor.value_type, false, 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
@@ -237,21 +236,12 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule {
array_type = base_property.property_type as ArrayType;
if (array_type != null && !base_property.no_array_length) {
for (int dim = 1; dim <= array_type.rank; dim++) {
- temp_var = get_temp_variable (int_type);
- ctemp = get_variable_cexpression (temp_var.name);
- emit_temp_var (temp_var);
- ccall.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, ctemp));
- append_array_length (expr, ctemp);
+ ccall.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, get_array_length_cvalue (temp_value, dim)));
}
} else {
delegate_type = base_property.property_type as DelegateType;
if (delegate_type != null && delegate_type.delegate_symbol.has_target) {
- temp_var = get_temp_variable (new PointerType (new VoidType ()), false, expr, false);
- ctemp = get_variable_cexpression (temp_var.name);
- emit_temp_var (temp_var);
- ccall.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, ctemp));
- set_delegate_target (expr, ctemp);
- set_delegate_target_destroy_notify (expr, new CCodeConstant ("NULL"));
+ ccall.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, get_delegate_target_cvalue (temp_value)));
}
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]