| Index: src/arm/lithium-arm.h
|
| diff --git a/src/arm/lithium-arm.h b/src/arm/lithium-arm.h
|
| index 2f8cc1c7f3a71908832505c7c76e7a1018c5e51e..4ddb281b0a89c6e9d2cdd80ed5f005c924e2bd8b 100644
|
| --- a/src/arm/lithium-arm.h
|
| +++ b/src/arm/lithium-arm.h
|
| @@ -1,4 +1,4 @@
|
| -// Copyright 2010 the V8 project authors. All rights reserved.
|
| +// Copyright 2011 the V8 project authors. All rights reserved.
|
| // Redistribution and use in source and binary forms, with or without
|
| // modification, are permitted provided that the following conditions are
|
| // met:
|
| @@ -30,6 +30,7 @@
|
|
|
| #include "hydrogen.h"
|
| #include "lithium-allocator.h"
|
| +#include "lithium.h"
|
| #include "safepoint-table.h"
|
|
|
| namespace v8 {
|
| @@ -62,6 +63,7 @@ class Translation;
|
| // LDivI
|
| // LInstanceOf
|
| // LInstanceOfAndBranch
|
| +// LInstanceOfKnownGlobal
|
| // LLoadKeyedFastElement
|
| // LLoadKeyedGeneric
|
| // LModI
|
| @@ -204,6 +206,7 @@ class Translation;
|
| V(Goto) \
|
| V(InstanceOf) \
|
| V(InstanceOfAndBranch) \
|
| + V(InstanceOfKnownGlobal) \
|
| V(Integer32ToDouble) \
|
| V(IsNull) \
|
| V(IsNullAndBranch) \
|
| @@ -329,32 +332,6 @@ class LInstruction: public ZoneObject {
|
| };
|
|
|
|
|
| -class LGapNode;
|
| -
|
| -
|
| -class LGapResolver BASE_EMBEDDED {
|
| - public:
|
| - LGapResolver(const ZoneList<LMoveOperands>* moves, LOperand* marker_operand);
|
| - const ZoneList<LMoveOperands>* ResolveInReverseOrder();
|
| -
|
| - private:
|
| - LGapNode* LookupNode(LOperand* operand);
|
| - bool CanReach(LGapNode* a, LGapNode* b, int visited_id);
|
| - bool CanReach(LGapNode* a, LGapNode* b);
|
| - void RegisterMove(LMoveOperands move);
|
| - void AddResultMove(LOperand* from, LOperand* to);
|
| - void AddResultMove(LGapNode* from, LGapNode* to);
|
| - void ResolveCycle(LGapNode* start);
|
| -
|
| - ZoneList<LGapNode*> nodes_;
|
| - ZoneList<LGapNode*> identified_cycles_;
|
| - ZoneList<LMoveOperands> result_;
|
| - LOperand* marker_operand_;
|
| - int next_visited_id_;
|
| - int bailout_after_ast_id_;
|
| -};
|
| -
|
| -
|
| class LParallelMove : public ZoneObject {
|
| public:
|
| LParallelMove() : move_operands_(4) { }
|
| @@ -993,6 +970,19 @@ class LInstanceOfAndBranch: public LInstanceOf {
|
| };
|
|
|
|
|
| +class LInstanceOfKnownGlobal: public LUnaryOperation {
|
| + public:
|
| + explicit LInstanceOfKnownGlobal(LOperand* left)
|
| + : LUnaryOperation(left) { }
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(InstanceOfKnownGlobal,
|
| + "instance-of-known-global")
|
| + DECLARE_HYDROGEN_ACCESSOR(InstanceOfKnownGlobal)
|
| +
|
| + Handle<JSFunction> function() const { return hydrogen()->function(); }
|
| +};
|
| +
|
| +
|
| class LBoundsCheck: public LBinaryOperation {
|
| public:
|
| LBoundsCheck(LOperand* index, LOperand* length)
|
| @@ -1548,13 +1538,11 @@ class LStoreNamedField: public LStoreNamed {
|
| LOperand* val,
|
| bool in_object,
|
| int offset,
|
| - LOperand* temp,
|
| bool needs_write_barrier,
|
| Handle<Map> transition)
|
| : LStoreNamed(obj, name, val),
|
| is_in_object_(in_object),
|
| offset_(offset),
|
| - temp_(temp),
|
| needs_write_barrier_(needs_write_barrier),
|
| transition_(transition) { }
|
|
|
| @@ -1562,7 +1550,6 @@ class LStoreNamedField: public LStoreNamed {
|
|
|
| bool is_in_object() { return is_in_object_; }
|
| int offset() { return offset_; }
|
| - LOperand* temp() { return temp_; }
|
| bool needs_write_barrier() { return needs_write_barrier_; }
|
| Handle<Map> transition() const { return transition_; }
|
| void set_transition(Handle<Map> map) { transition_ = map; }
|
| @@ -1570,7 +1557,6 @@ class LStoreNamedField: public LStoreNamed {
|
| private:
|
| bool is_in_object_;
|
| int offset_;
|
| - LOperand* temp_;
|
| bool needs_write_barrier_;
|
| Handle<Map> transition_;
|
| };
|
| @@ -1638,8 +1624,7 @@ class LCheckFunction: public LUnaryOperation {
|
|
|
| class LCheckInstanceType: public LUnaryOperation {
|
| public:
|
| - LCheckInstanceType(LOperand* use, LOperand* temp)
|
| - : LUnaryOperation(use), temp_(temp) { }
|
| + explicit LCheckInstanceType(LOperand* use) : LUnaryOperation(use) { }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(CheckInstanceType, "check-instance-type")
|
| DECLARE_HYDROGEN_ACCESSOR(CheckInstanceType)
|
|
|