Index: runtime/vm/intermediate_language.cc |
diff --git a/runtime/vm/intermediate_language.cc b/runtime/vm/intermediate_language.cc |
index ce6092afed4789b100a15d61c894a1700ec73bdd..5834dc13953c2f2a2f7ef16ba88b4b9b38163dd7 100644 |
--- a/runtime/vm/intermediate_language.cc |
+++ b/runtime/vm/intermediate_language.cc |
@@ -17,6 +17,7 @@ |
#include "vm/object.h" |
#include "vm/object_store.h" |
#include "vm/os.h" |
+#include "vm/regexp_assembler.h" |
#include "vm/resolver.h" |
#include "vm/scopes.h" |
#include "vm/stub_code.h" |
@@ -371,6 +372,14 @@ bool LoadIndexedInstr::AttributesEqual(Instruction* other) const { |
} |
+bool LoadCodeUnitsInstr::AttributesEqual(Instruction* other) const { |
+ LoadCodeUnitsInstr* other_load = other->AsLoadCodeUnits(); |
+ ASSERT(other_load != NULL); |
+ return (class_id() == other_load->class_id() && |
+ element_count() == other_load->element_count()); |
+} |
+ |
+ |
ConstantInstr::ConstantInstr(const Object& value) : value_(value) { |
// Check that the value is not an incorrect Integer representation. |
ASSERT(!value.IsBigint() || !Bigint::Cast(value).FitsIntoSmi()); |
@@ -461,6 +470,7 @@ GraphEntryInstr::GraphEntryInstr(const ParsedFunction* parsed_function, |
parsed_function_(parsed_function), |
normal_entry_(normal_entry), |
catch_entries_(), |
+ indirect_entries_(), |
initial_definitions_(), |
osr_id_(osr_id), |
entry_count_(0), |
@@ -2530,6 +2540,17 @@ void TargetEntryInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
} |
+LocationSummary* IndirectEntryInstr::MakeLocationSummary( |
+ Isolate* isolate, bool optimizing) const { |
+ return JoinEntryInstr::MakeLocationSummary(isolate, optimizing); |
+} |
+ |
+ |
+void IndirectEntryInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
+ JoinEntryInstr::EmitNativeCode(compiler); |
+} |
+ |
+ |
LocationSummary* PhiInstr::MakeLocationSummary(Isolate* isolate, |
bool optimizing) const { |
UNREACHABLE(); |
@@ -3326,6 +3347,23 @@ const char* MathUnaryInstr::KindToCString(MathUnaryKind kind) { |
return ""; |
} |
+typedef RawBool* (*CaseInsensitiveCompareUC16Function) ( |
+ RawString* string_raw, |
+ RawSmi* lhs_index_raw, |
+ RawSmi* rhs_index_raw, |
+ RawSmi* length_raw); |
+ |
+ |
+extern const RuntimeEntry kCaseInsensitiveCompareUC16RuntimeEntry( |
+ "CaseInsensitiveCompareUC16", reinterpret_cast<RuntimeFunction>( |
+ static_cast<CaseInsensitiveCompareUC16Function>( |
+ &IRRegExpMacroAssembler::CaseInsensitiveCompareUC16)), 4, true, false); |
+ |
+ |
+const RuntimeEntry& CaseInsensitiveCompareUC16Instr::TargetFunction() const { |
+ return kCaseInsensitiveCompareUC16RuntimeEntry; |
+} |
+ |
MergedMathInstr::MergedMathInstr(ZoneGrowableArray<Value*>* inputs, |
intptr_t original_deopt_id, |