Chromium Code Reviews| Index: runtime/vm/flags.cc |
| diff --git a/runtime/vm/flags.cc b/runtime/vm/flags.cc |
| index d02a0a246879bdb8bfa7aed442d8ca17762f4576..7d07db79f2b7d030af92e24ee931cdcbb219a01d 100644 |
| --- a/runtime/vm/flags.cc |
| +++ b/runtime/vm/flags.cc |
| @@ -301,15 +301,41 @@ bool Flags::ProcessCommandLineFlags(int number_of_vm_flags, |
| } |
| } |
| if (FLAG_print_flags) { |
| + PrintFlags(); |
| + } |
| + return true; |
| +} |
| + |
| + |
| +int Flags::CompareFlagNames(const void* left, const void* right) { |
| + const Flag* left_flag = *reinterpret_cast<const Flag* const *>(left); |
| + const Flag* right_flag = *reinterpret_cast<const Flag* const *>(right); |
| + return strcmp(left_flag->name_, right_flag->name_); |
| +} |
| + |
| + |
| +void Flags::PrintFlags() { |
| OS::Print("Flag settings:\n"); |
| Flag* flag = Flags::flags_; |
| + int num_flags = 0; |
| while (flag != NULL) { |
| - flag->Print(); |
| + num_flags++; |
|
Ivan Posva
2012/08/20 23:50:35
You could increment this as part of registration o
|
| + flag = flag->next_; |
| + } |
| + Flag** flag_array = new Flag*[num_flags]; |
| + flag = Flags::flags_; |
| + int flag_index = 0; |
| + while (flag != NULL) { |
|
Ivan Posva
2012/08/20 23:50:35
for (int i = 0; i < num_flags; i++) {
ASSERT(fl
Bill Hesse
2012/08/21 09:21:02
Done.
|
| + flag_array[flag_index] = flag; |
| + flag_index++; |
| flag = flag->next_; |
| } |
| - } |
| - return true; |
| -} |
| + qsort(flag_array, num_flags, sizeof flag_array[0], CompareFlagNames); |
| + for (int i = 0; i < num_flags; ++i) { |
| + flag_array[i]->Print(); |
| + } |
| + delete[] flag_array; |
| + } |
| } // namespace dart |