mirror of https://github.com/YosysHQ/yosys.git
Fixed cstr_buf for std::string with small string optimization
This commit is contained in:
parent
3a6abc9bf6
commit
4c733301e6
|
@ -61,7 +61,7 @@ struct BlifDumper
|
|||
{
|
||||
}
|
||||
|
||||
std::vector<std::string> cstr_buf;
|
||||
vector<shared_str> cstr_buf;
|
||||
|
||||
const char *cstr(RTLIL::IdString id)
|
||||
{
|
||||
|
|
|
@ -155,7 +155,7 @@ struct BtorDumper
|
|||
|
||||
}
|
||||
|
||||
std::vector<std::string> cstr_buf;
|
||||
vector<shared_str> cstr_buf;
|
||||
|
||||
const char *cstr(const RTLIL::IdString id)
|
||||
{
|
||||
|
|
|
@ -52,7 +52,7 @@ string log_last_error;
|
|||
|
||||
vector<int> header_count;
|
||||
pool<RTLIL::IdString> log_id_cache;
|
||||
vector<string> string_buf;
|
||||
vector<shared_str> string_buf;
|
||||
int string_buf_index = -1;
|
||||
|
||||
static struct timeval initial_tv = { 0, 0 };
|
||||
|
|
|
@ -147,7 +147,7 @@ RTLIL::Const RTLIL::Const::from_string(std::string str)
|
|||
std::string RTLIL::Const::decode_string() const
|
||||
{
|
||||
std::string string;
|
||||
std::vector <char> string_chars;
|
||||
std::vector<char> string_chars;
|
||||
for (int i = 0; i < int (bits.size()); i += 8) {
|
||||
char ch = 0;
|
||||
for (int j = 0; j < 8 && i + j < int (bits.size()); j++)
|
||||
|
|
|
@ -140,6 +140,17 @@ using std::vector;
|
|||
using std::string;
|
||||
using std::pair;
|
||||
|
||||
// A primitive shared string implementation that does not
|
||||
// move its .c_str() when the object is copied or moved.
|
||||
struct shared_str {
|
||||
std::shared_ptr<string> content;
|
||||
shared_str() { }
|
||||
shared_str(string s) { content = std::shared_ptr<string>(new string(s)); }
|
||||
shared_str(const char *s) { content = std::shared_ptr<string>(new string(s)); }
|
||||
const char *c_str() { return content->c_str(); }
|
||||
const string &str() { return *content; }
|
||||
};
|
||||
|
||||
using hashlib::mkhash;
|
||||
using hashlib::mkhash_init;
|
||||
using hashlib::mkhash_add;
|
||||
|
|
|
@ -41,7 +41,7 @@ struct ShowWorker
|
|||
{
|
||||
CellTypes ct;
|
||||
|
||||
std::vector<std::string> dot_escape_store;
|
||||
vector<shared_str> dot_escape_store;
|
||||
std::map<RTLIL::IdString, int> dot_id2num_store;
|
||||
std::map<RTLIL::IdString, int> autonames;
|
||||
int single_idx_count;
|
||||
|
|
Loading…
Reference in New Issue