summaryrefslogtreecommitdiff
path: root/compiler/optimizing/nodes.h
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/optimizing/nodes.h')
-rw-r--r--compiler/optimizing/nodes.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/compiler/optimizing/nodes.h b/compiler/optimizing/nodes.h
index 978e7c419e..16e26dc7bc 100644
--- a/compiler/optimizing/nodes.h
+++ b/compiler/optimizing/nodes.h
@@ -2288,6 +2288,9 @@ class HInstruction : public ArenaObject<kArenaAllocInstruction> {
}
virtual bool NeedsEnvironment() const { return false; }
+ virtual bool NeedsBss() const {
+ return false;
+ }
uint32_t GetDexPc() const { return dex_pc_; }
@@ -4916,6 +4919,9 @@ class HInvokeStaticOrDirect final : public HInvoke {
}
bool IsClonable() const override { return true; }
+ bool NeedsBss() const override {
+ return GetMethodLoadKind() == MethodLoadKind::kBssEntry;
+ }
void SetDispatchInfo(DispatchInfo dispatch_info) {
bool had_current_method_input = HasCurrentMethodInput();
@@ -5201,6 +5207,9 @@ class HInvokeInterface final : public HInvoke {
}
bool IsClonable() const override { return true; }
+ bool NeedsBss() const override {
+ return GetHiddenArgumentLoadKind() == MethodLoadKind::kBssEntry;
+ }
bool CanDoImplicitNullCheckOn(HInstruction* obj) const override {
// TODO: Add implicit null checks in intrinsics.
@@ -6847,6 +6856,12 @@ class HLoadClass final : public HInstruction {
bool NeedsEnvironment() const override {
return CanCallRuntime();
}
+ bool NeedsBss() const override {
+ LoadKind load_kind = GetLoadKind();
+ return load_kind == LoadKind::kBssEntry ||
+ load_kind == LoadKind::kBssEntryPublic ||
+ load_kind == LoadKind::kBssEntryPackage;
+ }
void SetMustGenerateClinitCheck(bool generate_clinit_check) {
SetPackedFlag<kFlagGenerateClInitCheck>(generate_clinit_check);
@@ -7044,6 +7059,9 @@ class HLoadString final : public HInstruction {
}
bool IsClonable() const override { return true; }
+ bool NeedsBss() const override {
+ return GetLoadKind() == LoadKind::kBssEntry;
+ }
void SetLoadKind(LoadKind load_kind);