From: Rico Tzschichholz Date: Sun, 30 Oct 2016 14:47:02 +0000 (+0100) Subject: Avoid some string copying X-Git-Tag: 0.35.1~62 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=706ff17703b8f6f3593bbf59f1bf9497b1dc3c4e;p=thirdparty%2Fvala.git Avoid some string copying --- diff --git a/ccode/valaccodewriter.vala b/ccode/valaccodewriter.vala index 93f4a4261..7368852d1 100644 --- a/ccode/valaccodewriter.vala +++ b/ccode/valaccodewriter.vala @@ -225,10 +225,7 @@ public class Vala.CCodeWriter { // discard tabs at beginning of line var regex = new GLib.Regex ("^\t+"); - /* separate declaration due to missing memory management in foreach statements */ - var lines = text.split ("\n"); - - foreach (string line in lines) { + foreach (unowned string line in text.split ("\n")) { if (!first) { write_indent (); } else { diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 803b9cefa..8c8ccbbcc 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -616,7 +616,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { } if (sym.external_package || (!decl_space.is_header && CodeContext.get ().use_header && !sym.is_internal_symbol ())) { // add appropriate include file - foreach (string header_filename in get_ccode_header_filenames (sym).split (",")) { + foreach (unowned string header_filename in get_ccode_header_filenames (sym).split (",")) { decl_space.add_include (header_filename, !sym.external_package || (sym.external_package && sym.from_commandline)); diff --git a/codegen/valagirwriter.vala b/codegen/valagirwriter.vala index 628b28c7c..4d361f50d 100644 --- a/codegen/valagirwriter.vala +++ b/codegen/valagirwriter.vala @@ -215,11 +215,11 @@ public class Vala.GIRWriter : CodeVisitor { private void write_c_includes (Namespace ns) { // Collect C header filenames Set header_filenames = new HashSet (str_hash, str_equal); - foreach (string c_header_filename in CCodeBaseModule.get_ccode_header_filenames (ns).split (",")) { + foreach (unowned string c_header_filename in CCodeBaseModule.get_ccode_header_filenames (ns).split (",")) { header_filenames.add (c_header_filename); } foreach (Symbol symbol in ns.scope.get_symbol_table ().get_values ()) { - foreach (string c_header_filename in CCodeBaseModule.get_ccode_header_filenames (symbol).split (",")) { + foreach (unowned string c_header_filename in CCodeBaseModule.get_ccode_header_filenames (symbol).split (",")) { header_filenames.add (c_header_filename); } } diff --git a/vala/valacodecontext.vala b/vala/valacodecontext.vala index 0407561bc..4484c05b4 100644 --- a/vala/valacodecontext.vala +++ b/vala/valacodecontext.vala @@ -543,7 +543,7 @@ public class Vala.CodeContext { string filename = null; if (directories != null) { - foreach (string dir in directories) { + foreach (unowned string dir in directories) { filename = Path.build_path ("/", dir, basename); if (FileUtils.test (filename, FileTest.EXISTS)) { return filename; @@ -552,7 +552,7 @@ public class Vala.CodeContext { } if (data_dir != null) { - foreach (string dir in Environment.get_system_data_dirs ()) { + foreach (unowned string dir in Environment.get_system_data_dirs ()) { filename = Path.build_path ("/", dir, data_dir, basename); if (FileUtils.test (filename, FileTest.EXISTS)) { return filename; @@ -561,7 +561,7 @@ public class Vala.CodeContext { } if (versioned_data_dir != null) { - foreach (string dir in Environment.get_system_data_dirs ()) { + foreach (unowned string dir in Environment.get_system_data_dirs ()) { filename = Path.build_path ("/", dir, versioned_data_dir, basename); if (FileUtils.test (filename, FileTest.EXISTS)) { return filename; diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala index ceb6b3315..553d1c855 100644 --- a/vapigen/valagidlparser.vala +++ b/vapigen/valagidlparser.vala @@ -112,7 +112,7 @@ public class Vala.GIdlParser : CodeVisitor { string metadata; FileUtils.get_contents (metadata_filename, out metadata, null); - foreach (string line in metadata.split ("\n")) { + foreach (unowned string line in metadata.split ("\n")) { if (line.has_prefix ("#")) { // ignore comment lines continue; @@ -750,7 +750,7 @@ public class Vala.GIdlParser : CodeVisitor { if (suppress_throws == false && error_types != null) { var type_args = eval (error_types).split (","); - foreach (string type_arg in type_args) { + foreach (unowned string type_arg in type_args) { cb.add_error_type (parse_type_from_string (type_arg, true)); } } @@ -921,7 +921,7 @@ public class Vala.GIdlParser : CodeVisitor { } else if (nv[0] == "deprecated_since") { cl.set_attribute_string ("Version", "deprecated_since", eval (nv[1])); } else if (nv[0] == "type_parameters") { - foreach (string type_param_name in eval (nv[1]).split (",")) { + foreach (unowned string type_param_name in eval (nv[1]).split (",")) { cl.add_type_parameter (new TypeParameter (type_param_name, current_source_reference)); } } else if (nv[0] == "experimental") { @@ -2552,7 +2552,7 @@ public class Vala.GIdlParser : CodeVisitor { if (val.has_prefix ("\"") && val.has_suffix ("\"")) { p.initializer = new StringLiteral (val, param_type.source_reference); } else { - foreach (var member in val.split (".")) { + foreach (unowned string member in val.split (".")) { p.initializer = new MemberAccess (p.initializer, member, param_type.source_reference); } } @@ -2597,7 +2597,7 @@ public class Vala.GIdlParser : CodeVisitor { if (suppress_throws == false && error_types != null) { var type_args = eval (error_types).split (","); - foreach (string type_arg in type_args) { + foreach (unowned string type_arg in type_args) { m.add_error_type (parse_type_from_string (type_arg, true)); } }