Skip to content

Commit 6900a62

Browse files
author
Jordan Cantrell
committed
generic commit
1 parent 82bd310 commit 6900a62

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

clang/include/clang/AST/RecordFieldReorganizer.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,15 @@ class RecordFieldReorganizer {
3737
};
3838

3939
class Randstruct : public RecordFieldReorganizer {
40+
public:
41+
Randstruct(std::string seed) : Seq(seed.begin(), seed.end()), rng(Seq) {}
42+
private:
43+
std::seed_seq Seq;
44+
std::default_random_engine rng;
4045
protected:
46+
virtual SmallVector<FieldDecl *, 64> randomize() override;
47+
SmallVector<Decl *, 64> Randstruct::perfrandomize(const ASTContext &ctx,
48+
SmallVector<Decl *, 64> fields);
4149
virtual void reorganize(const ASTContext &C, const RecordDecl *D,
4250
SmallVector<Decl *, 64> &NewOrder) const override;
4351
};

clang/lib/AST/RecordFieldReorganizer.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,14 +144,16 @@ bool BitfieldRun::canFit(size_t size) const {
144144

145145
bool BitfieldRun::isBitfieldRun() const { return true; }
146146

147-
SmallVector<Decl *, 64> randomize(SmallVector<Decl *, 64> fields) {
147+
SmallVector<Decl *, 64> Randstruct::randomize(SmallVector<Decl *, 64> fields) {
148148
std::seed_seq Seq(RandstructSeed.begin(), RandstructSeed.end());
149149
auto rng = std::default_random_engine{Seq};
150150
std::shuffle(std::begin(fields), std::end(fields), rng);
151151
return fields;
152152
}
153153

154-
SmallVector<Decl *, 64> perfrandomize(const ASTContext &ctx,
154+
Randstruct::Randstruct(std::String Seed) { RandstructSeed = Seed; }
155+
156+
SmallVector<Decl *, 64> Randstruct::perfrandomize(const ASTContext &ctx,
155157
SmallVector<Decl *, 64> fields) {
156158
// All of the buckets produced by best-effort cache-line algorithm.
157159
std::vector<std::unique_ptr<Bucket>> buckets;

0 commit comments

Comments
 (0)