[VM] Address uncovered issues, mark test as passing
Change-Id: Ie2c5eb055ce6138952af145ce6fdb972c057bd16
Reviewed-on: https://dart-review.googlesource.com/55780
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
diff --git a/runtime/vm/compiler/backend/flow_graph.cc b/runtime/vm/compiler/backend/flow_graph.cc
index 4cc0e2e..4aedb3c 100644
--- a/runtime/vm/compiler/backend/flow_graph.cc
+++ b/runtime/vm/compiler/backend/flow_graph.cc
@@ -1020,8 +1020,9 @@
// Replace the argument descriptor slot with a special parameter.
if (parsed_function().has_arg_desc_var()) {
- Definition* defn = new SpecialParameterInstr(
- SpecialParameterInstr::kArgDescriptor, Thread::kNoDeoptId);
+ Definition* defn =
+ new SpecialParameterInstr(SpecialParameterInstr::kArgDescriptor,
+ Thread::kNoDeoptId, graph_entry_);
AllocateSSAIndexes(defn);
AddToInitialDefinitions(defn);
env[ArgumentDescriptorEnvIndex()] = defn;
@@ -1101,10 +1102,10 @@
Definition* param = nullptr;
if (raw_exception_var_envindex == i) {
param = new SpecialParameterInstr(SpecialParameterInstr::kException,
- Thread::kNoDeoptId);
+ Thread::kNoDeoptId, catch_entry);
} else if (raw_stacktrace_var_envindex == i) {
param = new SpecialParameterInstr(SpecialParameterInstr::kStackTrace,
- Thread::kNoDeoptId);
+ Thread::kNoDeoptId, catch_entry);
} else {
param = new (zone()) ParameterInstr(i, block_entry);
}
diff --git a/runtime/vm/compiler/backend/il.h b/runtime/vm/compiler/backend/il.h
index 9b33e12..875f806 100644
--- a/runtime/vm/compiler/backend/il.h
+++ b/runtime/vm/compiler/backend/il.h
@@ -3008,10 +3008,15 @@
kStackTrace
};
- SpecialParameterInstr(SpecialParameterKind kind, intptr_t deopt_id)
- : TemplateDefinition(deopt_id), kind_(kind) {}
+ SpecialParameterInstr(SpecialParameterKind kind,
+ intptr_t deopt_id,
+ BlockEntryInstr* block)
+ : TemplateDefinition(deopt_id), kind_(kind), block_(block) {}
DECLARE_INSTRUCTION(SpecialParameter)
+
+ virtual BlockEntryInstr* GetBlock() { return block_; }
+
virtual CompileType ComputeType() const;
virtual bool ComputeCanDeoptimize() const { return false; }
@@ -3046,6 +3051,7 @@
private:
const SpecialParameterKind kind_;
+ BlockEntryInstr* block_;
DISALLOW_COPY_AND_ASSIGN(SpecialParameterInstr);
};
diff --git a/runtime/vm/compiler/backend/il_test.cc b/runtime/vm/compiler/backend/il_test.cc
index 4792e3c..8fb8da0 100644
--- a/runtime/vm/compiler/backend/il_test.cc
+++ b/runtime/vm/compiler/backend/il_test.cc
@@ -13,9 +13,10 @@
EXPECT(target_instr->IsBlockEntry());
EXPECT(!target_instr->IsDefinition());
SpecialParameterInstr* context = new SpecialParameterInstr(
- SpecialParameterInstr::kContext, Thread::kNoDeoptId);
+ SpecialParameterInstr::kContext, Thread::kNoDeoptId, target_instr);
EXPECT(context->IsDefinition());
EXPECT(!context->IsBlockEntry());
+ EXPECT(context->GetBlock() == target_instr);
}
TEST_CASE(OptimizationTests) {
diff --git a/tests/language_2/language_2_kernel.status b/tests/language_2/language_2_kernel.status
index 7927e90..929306a 100644
--- a/tests/language_2/language_2_kernel.status
+++ b/tests/language_2/language_2_kernel.status
@@ -434,9 +434,6 @@
void_type_usage_test/paren_void_init: MissingCompileTimeError # Issue 32804
void_type_usage_test/paren_while: MissingCompileTimeError # Issue 32804
-[ $arch == simarm && $compiler == dartkp && $strong ]
-await_test: RuntimeError
-
[ $arch != simarm && $arch != simarm64 && $arch != simdbc64 && $compiler == dartk && $runtime == vm && $strong ]
export_ambiguous_main_test: Crash # Issue 32618