Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(991)

Unified Diff: runtime/vm/intermediate_language.h

Issue 754383002: Revert "Integrate the Irregexp Regular Expression Engine." (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/il_printer.cc ('k') | runtime/vm/intermediate_language.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/intermediate_language.h
diff --git a/runtime/vm/intermediate_language.h b/runtime/vm/intermediate_language.h
index d805eb4230da61412845ae352ec74e2ea80df877..6d8c42ebb2b18fa073133976f51a0437fcc60b13 100644
--- a/runtime/vm/intermediate_language.h
+++ b/runtime/vm/intermediate_language.h
@@ -430,7 +430,6 @@ class EmbeddedArray<T, 0> {
M(GraphEntry) \
M(JoinEntry) \
M(TargetEntry) \
- M(IndirectEntry) \
M(CatchBlockEntry) \
M(Phi) \
M(Redefinition) \
@@ -441,7 +440,6 @@ class EmbeddedArray<T, 0> {
M(Throw) \
M(ReThrow) \
M(Goto) \
- M(IndirectGoto) \
M(Branch) \
M(AssertAssignable) \
M(AssertBoolean) \
@@ -460,7 +458,6 @@ class EmbeddedArray<T, 0> {
M(NativeCall) \
M(DebugStepCheck) \
M(LoadIndexed) \
- M(LoadCodeUnits) \
M(StoreIndexed) \
M(StoreInstanceField) \
M(InitStaticField) \
@@ -504,7 +501,6 @@ class EmbeddedArray<T, 0> {
M(Unbox) \
M(BoxInt64) \
M(UnboxInt64) \
- M(CaseInsensitiveCompareUC16) \
M(BinaryMintOp) \
M(ShiftMintOp) \
M(UnaryMintOp) \
@@ -1171,9 +1167,6 @@ class BlockEntryInstr : public Instruction {
void set_block_id(intptr_t block_id) { block_id_ = block_id; }
- intptr_t offset() const { return offset_; }
- void set_offset(intptr_t offset) { offset_ = offset; }
-
// For all instruction in this block: Remove all inputs (including in the
// environment) from their definition's use lists for all instructions.
void ClearAllInstructions();
@@ -1190,7 +1183,6 @@ class BlockEntryInstr : public Instruction {
dominator_(NULL),
dominated_blocks_(1),
last_instruction_(NULL),
- offset_(-1),
parallel_move_(NULL),
loop_info_(NULL) {
}
@@ -1216,9 +1208,6 @@ class BlockEntryInstr : public Instruction {
GrowableArray<BlockEntryInstr*> dominated_blocks_;
Instruction* last_instruction_;
- // Offset of this block from the start of the emitted code.
- intptr_t offset_;
-
// Parallel move that will be used by linear scan register allocator to
// connect live ranges at the start of the block.
ParallelMoveInstr* parallel_move_;
@@ -1299,10 +1288,6 @@ class GraphEntryInstr : public BlockEntryInstr {
CatchBlockEntryInstr* GetCatchEntry(intptr_t index);
- void AddIndirectEntry(IndirectEntryInstr* entry) {
- indirect_entries_.Add(entry);
- }
-
GrowableArray<Definition*>* initial_definitions() {
return &initial_definitions_;
}
@@ -1337,10 +1322,6 @@ class GraphEntryInstr : public BlockEntryInstr {
return catch_entries_;
}
- const GrowableArray<IndirectEntryInstr*>& indirect_entries() const {
- return indirect_entries_;
- }
-
virtual void PrintTo(BufferFormatter* f) const;
private:
@@ -1350,8 +1331,6 @@ class GraphEntryInstr : public BlockEntryInstr {
const ParsedFunction* parsed_function_;
TargetEntryInstr* normal_entry_;
GrowableArray<CatchBlockEntryInstr*> catch_entries_;
- // Indirect targets are blocks reachable only through indirect gotos.
- GrowableArray<IndirectEntryInstr*> indirect_entries_;
GrowableArray<Definition*> initial_definitions_;
const intptr_t osr_id_;
intptr_t entry_count_;
@@ -1397,7 +1376,6 @@ class JoinEntryInstr : public BlockEntryInstr {
friend class BlockEntryInstr;
friend class InlineExitCollector;
friend class PolymorphicInliner;
- friend class IndirectEntryInstr; // Access in il_printer.cc.
// Direct access to phis_ in order to resize it due to phi elimination.
friend class ConstantPropagator;
@@ -1476,25 +1454,6 @@ class TargetEntryInstr : public BlockEntryInstr {
};
-class IndirectEntryInstr : public JoinEntryInstr {
- public:
- IndirectEntryInstr(intptr_t block_id,
- intptr_t indirect_id,
- intptr_t try_index)
- : JoinEntryInstr(block_id, try_index),
- indirect_id_(indirect_id) { }
-
- DECLARE_INSTRUCTION(IndirectEntry)
-
- virtual void PrintTo(BufferFormatter* f) const;
-
- intptr_t indirect_id() const { return indirect_id_; }
-
- private:
- const intptr_t indirect_id_;
-};
-
-
class CatchBlockEntryInstr : public BlockEntryInstr {
public:
CatchBlockEntryInstr(intptr_t block_id,
@@ -2167,58 +2126,6 @@ class GotoInstr : public TemplateInstruction<0, NoThrow> {
};
-// IndirectGotoInstr represents a dynamically computed jump. Only
-// IndirectEntryInstr targets are valid targets of an indirect goto. The
-// concrete target to jump to is given as a parameter to the indirect goto.
-//
-// In order to preserve split-edge form, an indirect goto does not itself point
-// to its targets. Instead, for each possible target, the successors_ field
-// will contain an ordinary goto instruction that jumps to the target.
-// TODO(zerny): Implement direct support instead of embedding gotos.
-//
-// Byte offsets of all possible targets are stored in the offsets_ array. The
-// desired offset is looked up while the generated code is executing, and passed
-// to IndirectGoto as an input.
-class IndirectGotoInstr : public TemplateInstruction<1, NoThrow> {
- public:
- IndirectGotoInstr(GrowableObjectArray* offsets,
- Value* offset_from_start)
- : offsets_(*offsets) {
- SetInputAt(0, offset_from_start);
- }
-
- DECLARE_INSTRUCTION(IndirectGoto)
-
- virtual intptr_t ArgumentCount() const { return 0; }
-
- void AddSuccessor(TargetEntryInstr* successor) {
- ASSERT(successor->next()->IsGoto());
- ASSERT(successor->next()->AsGoto()->successor()->IsIndirectEntry());
- successors_.Add(successor);
- }
-
- virtual intptr_t SuccessorCount() const { return successors_.length(); }
- virtual TargetEntryInstr* SuccessorAt(intptr_t index) const {
- ASSERT(index < SuccessorCount());
- return successors_[index];
- }
-
- virtual bool CanDeoptimize() const { return false; }
- virtual bool CanBecomeDeoptimizationTarget() const { return false; }
-
- virtual EffectSet Effects() const { return EffectSet::None(); }
-
- virtual void PrintTo(BufferFormatter* f) const;
-
- const GrowableObjectArray& offsets() const { return offsets_; }
- void ComputeOffsetTable(Isolate* isolate);
-
- private:
- GrowableArray<TargetEntryInstr*> successors_;
- GrowableObjectArray& offsets_;
-};
-
-
class ComparisonInstr : public TemplateDefinition<2, NoThrow, Pure> {
public:
Value* left() const { return inputs_[0]; }
@@ -3676,67 +3583,6 @@ class LoadIndexedInstr : public TemplateDefinition<2, NoThrow> {
};
-// Loads the specified number of code units from the given string, packing
-// multiple code units into a single datatype. In essence, this is a specialized
-// version of LoadIndexedInstr which accepts only string targets and can load
-// multiple elements at once. The result datatype differs depending on the
-// string type, element count, and architecture; if possible, the result is
-// packed into a Smi, falling back to a Mint otherwise.
-// TODO(zerny): Add support for loading into UnboxedInt32x4.
-class LoadCodeUnitsInstr : public TemplateDefinition<2, NoThrow> {
- public:
- LoadCodeUnitsInstr(Value* str,
- Value* index,
- intptr_t element_count,
- intptr_t class_id,
- intptr_t token_pos)
- : class_id_(class_id),
- token_pos_(token_pos),
- element_count_(element_count),
- representation_(kTagged) {
- ASSERT(element_count == 1 || element_count == 2 || element_count == 4);
- ASSERT(class_id == kOneByteStringCid || class_id == kTwoByteStringCid);
- SetInputAt(0, str);
- SetInputAt(1, index);
- }
-
- intptr_t token_pos() const { return token_pos_; }
-
- DECLARE_INSTRUCTION(LoadCodeUnits)
- virtual CompileType ComputeType() const;
-
- bool IsExternal() const {
- return array()->definition()->representation() == kUntagged;
- }
-
- Value* array() const { return inputs_[0]; }
- Value* index() const { return inputs_[1]; }
- intptr_t index_scale() const { return Instance::ElementSizeFor(class_id_); }
- intptr_t class_id() const { return class_id_; }
- intptr_t element_count() const { return element_count_; }
-
- bool can_pack_into_smi() const {
- return element_count() <= kSmiBits / (index_scale() * kBitsPerByte);
- }
-
- virtual bool CanDeoptimize() const { return false; }
-
- virtual Representation representation() const { return representation_; }
- void set_representation(Representation repr) { representation_ = repr; }
- virtual void InferRange(RangeAnalysis* analysis, Range* range);
-
- virtual EffectSet Effects() const { return EffectSet::None(); }
-
- private:
- const intptr_t class_id_;
- const intptr_t token_pos_;
- const intptr_t element_count_;
- Representation representation_;
-
- DISALLOW_COPY_AND_ASSIGN(LoadCodeUnitsInstr);
-};
-
-
class StringFromCharCodeInstr : public TemplateDefinition<1, NoThrow, Pure> {
public:
StringFromCharCodeInstr(Value* char_code, intptr_t cid) : cid_(cid) {
@@ -4941,60 +4787,6 @@ class MathUnaryInstr : public TemplateDefinition<1, NoThrow, Pure> {
};
-// Calls into the runtime and performs a case-insensitive comparison of the
-// UTF16 strings (i.e. TwoByteString or ExternalTwoByteString) located at
-// str[lhs_index:lhs_index + length] and str[rhs_index:rhs_index + length].
-//
-// TODO(zerny): Remove this once (if) functions inherited from unibrow
-// are moved to dart code.
-class CaseInsensitiveCompareUC16Instr
- : public TemplateDefinition<4, NoThrow, Pure> {
- public:
- CaseInsensitiveCompareUC16Instr(
- Value* str,
- Value* lhs_index,
- Value* rhs_index,
- Value* length,
- intptr_t cid)
- : cid_(cid) {
- ASSERT(cid == kTwoByteStringCid || cid == kExternalTwoByteStringCid);
- ASSERT(index_scale() == 2);
- SetInputAt(0, str);
- SetInputAt(1, lhs_index);
- SetInputAt(2, rhs_index);
- SetInputAt(3, length);
- }
-
- Value* str() const { return inputs_[0]; }
- Value* lhs_index() const { return inputs_[1]; }
- Value* rhs_index() const { return inputs_[2]; }
- Value* length() const { return inputs_[3]; }
-
- const RuntimeEntry& TargetFunction() const;
- bool IsExternal() const { return cid_ == kExternalTwoByteStringCid; }
- intptr_t class_id() const { return cid_; }
- intptr_t index_scale() const { return Instance::ElementSizeFor(cid_); }
-
- virtual bool CanDeoptimize() const { return false; }
-
- virtual Representation representation() const {
- return kTagged;
- }
-
- DECLARE_INSTRUCTION(CaseInsensitiveCompareUC16)
- virtual CompileType ComputeType() const;
-
- virtual bool AttributesEqual(Instruction* other) const {
- return other->AsCaseInsensitiveCompareUC16()->cid_ == cid_;
- }
-
- private:
- const intptr_t cid_;
-
- DISALLOW_COPY_AND_ASSIGN(CaseInsensitiveCompareUC16Instr);
-};
-
-
// Represents Math's static min and max functions.
class MathMinMaxInstr : public TemplateDefinition<2, NoThrow, Pure> {
public:
« no previous file with comments | « runtime/vm/il_printer.cc ('k') | runtime/vm/intermediate_language.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698