| Index: courgette/adjustment_method_2.cc
|
| diff --git a/courgette/adjustment_method_2.cc b/courgette/adjustment_method_2.cc
|
| index 57f02ac7d233f6d565286bce4caf551cb0d91199..d783cdac81079969af84965c1be13cfc2411d58e 100644
|
| --- a/courgette/adjustment_method_2.cc
|
| +++ b/courgette/adjustment_method_2.cc
|
| @@ -4,6 +4,9 @@
|
|
|
| #include "courgette/adjustment_method.h"
|
|
|
| +#include <stddef.h>
|
| +#include <stdint.h>
|
| +
|
| #include <algorithm>
|
| #include <limits>
|
| #include <list>
|
| @@ -12,9 +15,9 @@
|
| #include <string>
|
| #include <vector>
|
|
|
| -#include "base/basictypes.h"
|
| #include "base/format_macros.h"
|
| #include "base/logging.h"
|
| +#include "base/macros.h"
|
| #include "base/strings/stringprintf.h"
|
| #include "base/time/time.h"
|
| #include "courgette/assembly_program.h"
|
| @@ -176,16 +179,16 @@ class LabelInfo {
|
|
|
| Label* label_; // The label that this info a surrogate for.
|
|
|
| - uint32 is_model_ : 1; // Is the label in the model?
|
| - uint32 debug_index_ : 31; // A small number for naming the label in debug
|
| - // output. The pair (is_model_, debug_index_) is
|
| - // unique.
|
| + uint32_t is_model_ : 1; // Is the label in the model?
|
| + uint32_t debug_index_ : 31; // A small number for naming the label in debug
|
| + // output. The pair (is_model_, debug_index_) is
|
| + // unique.
|
|
|
| int refs_; // Number of times this Label is referenced.
|
|
|
| LabelInfo* assignment_; // Label from other program corresponding to this.
|
|
|
| - std::vector<uint32> positions_; // Offsets into the trace of references.
|
| + std::vector<uint32_t> positions_; // Offsets into the trace of references.
|
|
|
| private:
|
| AssignmentCandidates* candidates_;
|
| @@ -213,7 +216,7 @@ class LabelInfoMaker {
|
| public:
|
| LabelInfoMaker() : debug_label_index_gen_(0) {}
|
|
|
| - LabelInfo* MakeLabelInfo(Label* label, bool is_model, uint32 position) {
|
| + LabelInfo* MakeLabelInfo(Label* label, bool is_model, uint32_t position) {
|
| LabelInfo& slot = label_infos_[label];
|
| if (slot.label_ == NULL) {
|
| slot.label_ = label;
|
| @@ -364,7 +367,7 @@ LabelInfo::~LabelInfo() {
|
| // position of one of the occurrences in the Trace.
|
| class Shingle {
|
| public:
|
| - static const uint8 kWidth = 5;
|
| + static const uint8_t kWidth = 5;
|
|
|
| struct InterningLess {
|
| bool operator()(const Shingle& a, const Shingle& b) const;
|
| @@ -388,7 +391,7 @@ class Shingle {
|
|
|
| LabelInfo* at(size_t i) const { return trace_[exemplar_position_ + i]; }
|
| void add_position(size_t position) {
|
| - positions_.push_back(static_cast<uint32>(position));
|
| + positions_.push_back(static_cast<uint32_t>(position));
|
| }
|
| int position_count() const { return static_cast<int>(positions_.size()); }
|
|
|
| @@ -414,7 +417,7 @@ class Shingle {
|
|
|
| const Trace& trace_; // The shingle lives inside trace_.
|
| size_t exemplar_position_; // At this position (and other positions).
|
| - std::vector<uint32> positions_; // Includes exemplar_position_.
|
| + std::vector<uint32_t> positions_; // Includes exemplar_position_.
|
|
|
| ShinglePattern* pattern_; // Pattern changes as LabelInfos are assigned.
|
|
|
| @@ -430,7 +433,7 @@ class Shingle {
|
| std::string ToString(const Shingle* instance) {
|
| std::string s;
|
| const char* sep = "<";
|
| - for (uint8 i = 0; i < Shingle::kWidth; ++i) {
|
| + for (uint8_t i = 0; i < Shingle::kWidth; ++i) {
|
| // base::StringAppendF(&s, "%s%x ", sep, instance.at(i)->label_->rva_);
|
| s += sep;
|
| s += ToString(instance->at(i));
|
| @@ -446,7 +449,7 @@ std::string ToString(const Shingle* instance) {
|
| bool Shingle::InterningLess::operator()(
|
| const Shingle& a,
|
| const Shingle& b) const {
|
| - for (uint8 i = 0; i < kWidth; ++i) {
|
| + for (uint8_t i = 0; i < kWidth; ++i) {
|
| LabelInfo* info_a = a.at(i);
|
| LabelInfo* info_b = b.at(i);
|
| if (info_a->label_->rva_ < info_b->label_->rva_)
|
| @@ -478,11 +481,11 @@ class ShinglePattern {
|
| // --> <kFixed+0, kVariable+1, kFixed+2, kVariable+1, kFixed+0>
|
| struct Index {
|
| explicit Index(const Shingle* instance);
|
| - uint8 kinds_[Shingle::kWidth];
|
| - uint8 variables_;
|
| - uint8 unique_variables_;
|
| - uint8 first_variable_index_;
|
| - uint32 hash_;
|
| + uint8_t kinds_[Shingle::kWidth];
|
| + uint8_t variables_;
|
| + uint8_t unique_variables_;
|
| + uint8_t first_variable_index_;
|
| + uint32_t hash_;
|
| int assigned_indexes_[Shingle::kWidth];
|
| };
|
|
|
| @@ -526,10 +529,10 @@ std::string ToString(const ShinglePattern::Index* index) {
|
| } else {
|
| base::StringAppendF(&s, "<%d: ", index->variables_);
|
| const char* sep = "";
|
| - for (uint8 i = 0; i < Shingle::kWidth; ++i) {
|
| + for (uint8_t i = 0; i < Shingle::kWidth; ++i) {
|
| s += sep;
|
| sep = ", ";
|
| - uint32 kind = index->kinds_[i];
|
| + uint32_t kind = index->kinds_[i];
|
| int offset = kind & ShinglePattern::kOffsetMask;
|
| if (kind & ShinglePattern::kVariable)
|
| base::StringAppendF(&s, "V%d", offset);
|
| @@ -622,7 +625,7 @@ struct ShinglePatternIndexLess {
|
| if (a.hash_ < b.hash_) return true;
|
| if (a.hash_ > b.hash_) return false;
|
|
|
| - for (uint8 i = 0; i < Shingle::kWidth; ++i) {
|
| + for (uint8_t i = 0; i < Shingle::kWidth; ++i) {
|
| if (a.kinds_[i] < b.kinds_[i]) return true;
|
| if (a.kinds_[i] > b.kinds_[i]) return false;
|
| if ((a.kinds_[i] & ShinglePattern::kVariable) == 0) {
|
| @@ -636,22 +639,22 @@ struct ShinglePatternIndexLess {
|
| }
|
| };
|
|
|
| -static uint32 hash_combine(uint32 h, uint32 v) {
|
| +static uint32_t hash_combine(uint32_t h, uint32_t v) {
|
| h += v;
|
| return (h * (37 + 0x0000d100)) ^ (h >> 13);
|
| }
|
|
|
| ShinglePattern::Index::Index(const Shingle* instance) {
|
| - uint32 hash = 0;
|
| + uint32_t hash = 0;
|
| variables_ = 0;
|
| unique_variables_ = 0;
|
| first_variable_index_ = 255;
|
|
|
| - for (uint8 i = 0; i < Shingle::kWidth; ++i) {
|
| + for (uint8_t i = 0; i < Shingle::kWidth; ++i) {
|
| LabelInfo* info = instance->at(i);
|
| - uint8 kind = 0;
|
| + uint8_t kind = 0;
|
| int code = -1;
|
| - uint8 j = 0;
|
| + uint8_t j = 0;
|
| for ( ; j < i; ++j) {
|
| if (info == instance->at(j)) { // Duplicate LabelInfo
|
| kind = kinds_[j];
|
| @@ -942,7 +945,7 @@ class AssignmentProblem {
|
|
|
| // For the positions in |info|, find the shingles that overlap that position.
|
| void AddAffectedPositions(LabelInfo* info, ShingleSet* affected_shingles) {
|
| - const uint8 kWidth = Shingle::kWidth;
|
| + const uint8_t kWidth = Shingle::kWidth;
|
| for (size_t i = 0; i < info->positions_.size(); ++i) {
|
| size_t position = info->positions_[i];
|
| // Find bounds to the subrange of |trace_| we are in.
|
| @@ -1059,7 +1062,7 @@ class AssignmentProblem {
|
| // int score = p1; // ? weigh all equally??
|
| int score = std::min(p1, m1);
|
|
|
| - for (uint8 i = 0; i < Shingle::kWidth; ++i) {
|
| + for (uint8_t i = 0; i < Shingle::kWidth; ++i) {
|
| LabelInfo* program_info = program_instance->at(i);
|
| LabelInfo* model_info = model_instance->at(i);
|
| if ((model_info->assignment_ == NULL) !=
|
| @@ -1275,9 +1278,8 @@ class Adjuster : public AdjustmentMethod {
|
| }
|
|
|
| void ReferenceLabel(Trace* trace, Label* label, bool is_model) {
|
| - trace->push_back(
|
| - label_info_maker_.MakeLabelInfo(label, is_model,
|
| - static_cast<uint32>(trace->size())));
|
| + trace->push_back(label_info_maker_.MakeLabelInfo(
|
| + label, is_model, static_cast<uint32_t>(trace->size())));
|
| }
|
|
|
| AssemblyProgram* prog_; // Program to be adjusted, owned by caller.
|
|
|