Chromium Code Reviews| Index: src/trusted/validator_arm/address_set.cc |
| diff --git a/src/trusted/validator_arm/address_set.cc b/src/trusted/validator_arm/address_set.cc |
| index 3c9b8bc20404d8d6557aa032964ab12048fe9a9d..ba507f530e7c46435552abce231ee4db6012cbee 100644 |
| --- a/src/trusted/validator_arm/address_set.cc |
| +++ b/src/trusted/validator_arm/address_set.cc |
| @@ -9,11 +9,13 @@ |
| #include <stdio.h> |
| #include <string.h> |
| +#define ADDRFACTOR sizeof(uint16_t) |
| + |
| namespace nacl_arm_val { |
| AddressSet::AddressSet(uint32_t base, uint32_t size) |
|
Karl
2011/08/30 19:53:52
There appears to be inconsistencies between sizes.
|
| - : base_(base), size_(size), bits_(new uint32_t[(size + 3) / 4]) { |
| - memset(bits_, 0, sizeof(uint32_t) * ((size + 3) / 4)); |
| + : base_(base), size_(size), bits_(new uint32_t[(size + 3) / ADDRFACTOR]) { |
|
Karl
2011/08/30 19:53:52
Isn't 3 based on ADDRFACTOR?
|
| + memset(bits_, 0, sizeof(uint32_t) * ((size + 3) / ADDRFACTOR)); |
| } |
| AddressSet::~AddressSet() { |
| @@ -22,7 +24,7 @@ AddressSet::~AddressSet() { |
| void AddressSet::add(uint32_t address) { |
| if ((address - base_) < size_) { |
| - uint32_t word_address = (address - base_) / sizeof(uint32_t); |
| + uint32_t word_address = (address - base_) / ADDRFACTOR; |
| bits_[word_address / 32] |= 1 << (word_address % 32); |
|
Karl
2011/08/30 19:53:52
Doesn't 32 conflict with size of ADDRFACTOR?
|
| } |
| @@ -30,7 +32,7 @@ void AddressSet::add(uint32_t address) { |
| bool AddressSet::contains(uint32_t address) const { |
| if ((address - base_) < size_) { |
| - uint32_t word_address = (address - base_) / sizeof(uint32_t); |
| + uint32_t word_address = (address - base_) / ADDRFACTOR; |
| return bits_[word_address / 32] & (1 << (word_address % 32)); |
|
Karl
2011/08/30 19:53:52
Again, is 32 consistent with ADDRFACTOR?
|
| } else { |
| @@ -64,11 +66,11 @@ bool AddressSet::Iterator::operator!=(const AddressSet::Iterator &other) const { |
| } |
| uint32_t AddressSet::Iterator::operator*() const { |
| - return parent_.base_ + 4 * ((index_ * 32) + shift_); |
| + return parent_.base_ + ADDRFACTOR * ((index_ * 32) + shift_); |
| } |
| void AddressSet::Iterator::advance() { |
| - uint32_t max_index = (parent_.size_ + 3) / 4; |
| + uint32_t max_index = (parent_.size_ + 3) / ADDRFACTOR; |
|
bsy
2011/09/01 00:30:00
s/3/(ADDRFACTOR-1)/?
jasonwkim
2011/09/16 20:09:16
Done
|
| for (; index_ < max_index; index_++) { |
| uint32_t word = (shift_ > 31)? 0 : parent_.bits_[index_] >> shift_; |
|
Karl
2011/08/30 19:53:52
Does this conflict with ADDRFACTOR value?
|