Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(20)

Unified Diff: src/IceOperand.h

Issue 1738443002: Subzero. Performance tweaks. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Addresses comments -- all of them Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/IceMemory.cpp ('k') | src/IceOperand.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/IceOperand.h
diff --git a/src/IceOperand.h b/src/IceOperand.h
index 9b46e35cda0cc182304446655cc10d7096129675..443e2d01ddefc98b642c3de936671cd878e1098f 100644
--- a/src/IceOperand.h
+++ b/src/IceOperand.h
@@ -19,8 +19,8 @@
#ifndef SUBZERO_SRC_ICEOPERAND_H
#define SUBZERO_SRC_ICEOPERAND_H
-#include "IceCfg.h"
#include "IceDefs.h"
+#include "IceCfg.h"
#include "IceGlobalContext.h"
#include "IceTypes.h"
@@ -301,18 +301,21 @@ class RelocatableTuple {
RelocatableTuple &operator=(const RelocatableTuple &) = delete;
public:
- RelocatableTuple(const RelocOffsetArray &OffsetExpr, const IceString &Name,
+ RelocatableTuple(const RelocOffsetT Offset,
+ const RelocOffsetArray &OffsetExpr, const IceString &Name,
bool SuppressMangling)
- : OffsetExpr(OffsetExpr), Name(Name), SuppressMangling(SuppressMangling) {
- }
+ : Offset(Offset), OffsetExpr(OffsetExpr), Name(Name),
+ SuppressMangling(SuppressMangling) {}
- RelocatableTuple(const RelocOffsetArray &OffsetExpr, const IceString &Name,
+ RelocatableTuple(const RelocOffsetT Offset,
+ const RelocOffsetArray &OffsetExpr, const IceString &Name,
const IceString &EmitString, bool SuppressMangling)
- : OffsetExpr(OffsetExpr), Name(Name), EmitString(EmitString),
- SuppressMangling(SuppressMangling) {}
+ : Offset(Offset), OffsetExpr(OffsetExpr), Name(Name),
+ EmitString(EmitString), SuppressMangling(SuppressMangling) {}
RelocatableTuple(const RelocatableTuple &) = default;
+ const RelocOffsetT Offset;
const RelocOffsetArray OffsetExpr;
const IceString Name;
const IceString EmitString;
@@ -332,16 +335,16 @@ public:
static ConstantRelocatable *create(GlobalContext *Ctx, Type Ty,
const RelocatableTuple &Tuple) {
return new (Ctx->allocate<ConstantRelocatable>())
- ConstantRelocatable(Ty, Tuple.OffsetExpr, Tuple.Name, Tuple.EmitString,
- Tuple.SuppressMangling);
+ ConstantRelocatable(Ty, Tuple.Offset, Tuple.OffsetExpr, Tuple.Name,
+ Tuple.EmitString, Tuple.SuppressMangling);
}
RelocOffsetT getOffset() const {
- RelocOffsetT Offset = 0;
+ RelocOffsetT Ret = Offset;
for (const auto *const OffsetReloc : OffsetExpr) {
- Offset += OffsetReloc->getOffset();
+ Ret += OffsetReloc->getOffset();
}
- return Offset;
+ return Ret;
}
const IceString &getEmitString() const { return EmitString; }
@@ -361,13 +364,15 @@ public:
}
private:
- ConstantRelocatable(Type Ty, const RelocOffsetArray &OffsetExpr,
- const IceString &Name, const IceString &EmitString,
- bool SuppressMangling)
- : Constant(kConstRelocatable, Ty), OffsetExpr(OffsetExpr), Name(Name),
- EmitString(EmitString), SuppressMangling(SuppressMangling) {}
+ ConstantRelocatable(Type Ty, const RelocOffsetT Offset,
+ const RelocOffsetArray &OffsetExpr, const IceString &Name,
+ const IceString &EmitString, bool SuppressMangling)
+ : Constant(kConstRelocatable, Ty), Offset(Offset), OffsetExpr(OffsetExpr),
+ Name(Name), EmitString(EmitString), SuppressMangling(SuppressMangling) {
+ }
- const RelocOffsetArray OffsetExpr; /// fixed offset to add
+ const RelocOffsetT Offset; /// fixed, known offset to add
+ const RelocOffsetArray OffsetExpr; /// fixed, unknown offset to add
const IceString Name; /// optional for debug/dump
const IceString EmitString; /// optional for textual emission
const bool SuppressMangling;
@@ -463,7 +468,7 @@ private:
bool operator>=(const RegNumT &) = delete;
};
-/// RegNumBVIter wraps llvm::SmallBitVector so that instead of this pattern:
+/// RegNumBVIter wraps SmallBitVector so that instead of this pattern:
///
/// for (int i = V.find_first(); i != -1; i = V.find_next(i)) {
/// RegNumT RegNum = RegNumT::fromInt(i);
@@ -475,12 +480,10 @@ private:
/// for (RegNumT RegNum : RegNumBVIter(V)) {
/// ...
/// }
-class RegNumBVIter {
- using T = llvm::SmallBitVector;
+template <class B> class RegNumBVIterImpl {
+ using T = B;
static constexpr int Sentinel = -1;
- RegNumBVIter() = delete;
- RegNumBVIter(const RegNumBVIter &) = delete;
- RegNumBVIter &operator=(const RegNumBVIter &) = delete;
+ RegNumBVIterImpl() = delete;
public:
class Iterator {
@@ -507,7 +510,9 @@ public:
int Current;
};
- explicit RegNumBVIter(const T &V) : V(V) {}
+ RegNumBVIterImpl(const RegNumBVIterImpl &) = default;
+ RegNumBVIterImpl &operator=(const RegNumBVIterImpl &) = delete;
+ explicit RegNumBVIterImpl(const T &V) : V(V) {}
Iterator begin() { return Iterator(V); }
Iterator end() { return Iterator(V, Sentinel); }
@@ -515,6 +520,10 @@ private:
const T &V;
};
+template <class B> RegNumBVIterImpl<B> RegNumBVIter(const B &BV) {
+ return RegNumBVIterImpl<B>(BV);
+}
+
/// RegWeight is a wrapper for a uint32_t weight value, with a special value
/// that represents infinite weight, and an addWeight() method that ensures that
/// W+infinity=infinity.
« no previous file with comments | « src/IceMemory.cpp ('k') | src/IceOperand.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698