minor workaround for lazy binding

[ROCm/clr commit: b5045af7e9]
이 커밋은 다음에 포함됨:
Siu Chi Chan
2019-04-02 17:28:06 -04:00
부모 817e064745
커밋 f6837a4e7f
2개의 변경된 파일6개의 추가작업 그리고 11개의 파일을 삭제
+5 -4
파일 보기
@@ -89,9 +89,10 @@ struct Bundled_code {
std::vector<char> blob;
};
#define magic_string_ "__CLANG_OFFLOAD_BUNDLE__"
class Bundled_code_header {
// DATA - STATICS
static constexpr const char magic_string_[] = "__CLANG_OFFLOAD_BUNDLE__";
static constexpr auto magic_string_sz_ = sizeof(magic_string_) - 1;
// DATA
@@ -143,12 +144,12 @@ class Bundled_code_header {
std::vector<char>{std::istreambuf_iterator<char>{is}, std::istreambuf_iterator<char>{}},
x);
}
// FRIENDS - ACCESSORS
friend inline bool valid(const Bundled_code_header& x) {
return std::equal(magic_string_, magic_string_ + magic_string_sz_,
x.header_.bundler_magic_string_);
const std::string ms = {magic_string_};
return std::equal(ms.begin(), ms.end(), x.header_.bundler_magic_string_);
}
friend inline const std::vector<Bundled_code>& bundles(const Bundled_code_header& x) {
return x.bundles_;
}
+1 -7
파일 보기
@@ -10,9 +10,6 @@
using namespace std;
// DATA - STATICS
constexpr const char hip_impl::Bundled_code_header::magic_string_[];
// CREATORS
hip_impl::Bundled_code_header::Bundled_code_header(const vector<char>& x)
: Bundled_code_header{x.cbegin(), x.cend()} {}
@@ -22,12 +19,9 @@ hip_impl::Bundled_code_header::Bundled_code_header(
// hipLoadModuleData is so poorly specified (for no fault of its own).
if (!p) return;
if (!valid(*static_cast<const Bundled_code_header*>(p))) return;
auto ph = static_cast<const Header_*>(p);
if (!equal(magic_string_, magic_string_ + magic_string_sz_, ph->bundler_magic_string_)) {
return;
}
size_t sz = sizeof(Header_) + ph->bundle_cnt_ * sizeof(Bundled_code::Header);
auto pb = static_cast<const char*>(p) + sizeof(Header_);
auto n = ph->bundle_cnt_;