Chromium Code Reviews| Index: runtime/vm/intermediate_language.cc |
| diff --git a/runtime/vm/intermediate_language.cc b/runtime/vm/intermediate_language.cc |
| index 69fcda120b6c1c19473811a09e8d286b39e5c86d..2a3ff6fd71a0e0585a2887acdf882a4ebc64f8ee 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" |
| @@ -370,6 +371,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()); |
|
Florian Schneider
2014/10/01 17:04:13
Did you forget checking index_scale()?
jgruber1
2014/10/03 18:59:51
I removed the index_scale_ member since index_scal
|
| +} |
| + |
| + |
| ConstantInstr::ConstantInstr(const Object& value) : value_(value) { |
| // Check that the value is not an incorrect Integer representation. |
| ASSERT(!value.IsBigint() || !Bigint::Cast(value).FitsIntoSmi()); |
| @@ -460,6 +469,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), |
| @@ -1776,6 +1786,12 @@ Definition* MathUnaryInstr::Canonicalize(FlowGraph* flow_graph) { |
| } |
| +Definition* CaseInsensitiveCompareUC16Instr::Canonicalize( |
|
Florian Schneider
2014/10/01 17:04:13
Just remove CaseInsensitiveCompareUC16Instr::Canon
jgruber1
2014/10/03 18:59:51
Done.
|
| + FlowGraph* flow_graph) { |
| + return this; |
| +} |
| + |
| + |
| Definition* LoadFieldInstr::Canonicalize(FlowGraph* flow_graph) { |
| if (!HasUses()) return NULL; |
| if (!IsImmutableLengthLoad()) return this; |
| @@ -2508,6 +2524,13 @@ void TargetEntryInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
| } |
| +LocationSummary* IndirectEntryInstr::MakeLocationSummary( |
| + Isolate* isolate, bool optimizing) const { |
| + UNREACHABLE(); |
| + return NULL; |
| +} |
| + |
| + |
| LocationSummary* PhiInstr::MakeLocationSummary(Isolate* isolate, |
| bool optimizing) const { |
| UNREACHABLE(); |
| @@ -3288,6 +3311,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, |