Revert r7662.
Review URL: http://codereview.chromium.org/6878042 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7663 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
cb70c1eaa4
commit
5f7eb953a1
@ -39,6 +39,12 @@ namespace internal {
|
||||
// Forward declarations.
|
||||
class LCodeGen;
|
||||
|
||||
#define LITHIUM_ALL_INSTRUCTION_LIST(V) \
|
||||
V(ControlInstruction) \
|
||||
V(Call) \
|
||||
LITHIUM_CONCRETE_INSTRUCTION_LIST(V)
|
||||
|
||||
|
||||
#define LITHIUM_CONCRETE_INSTRUCTION_LIST(V) \
|
||||
V(AccessArgumentsAt) \
|
||||
V(AddI) \
|
||||
@ -165,16 +171,20 @@ class LCodeGen;
|
||||
V(ValueOf)
|
||||
|
||||
|
||||
#define DECLARE_CONCRETE_INSTRUCTION(type, mnemonic) \
|
||||
virtual Opcode opcode() const { return LInstruction::k##type; } \
|
||||
virtual void CompileToNative(LCodeGen* generator); \
|
||||
virtual const char* Mnemonic() const { return mnemonic; } \
|
||||
#define DECLARE_INSTRUCTION(type) \
|
||||
virtual bool Is##type() const { return true; } \
|
||||
static L##type* cast(LInstruction* instr) { \
|
||||
ASSERT(instr->Is##type()); \
|
||||
return reinterpret_cast<L##type*>(instr); \
|
||||
}
|
||||
|
||||
|
||||
#define DECLARE_CONCRETE_INSTRUCTION(type, mnemonic) \
|
||||
virtual void CompileToNative(LCodeGen* generator); \
|
||||
virtual const char* Mnemonic() const { return mnemonic; } \
|
||||
DECLARE_INSTRUCTION(type)
|
||||
|
||||
|
||||
#define DECLARE_HYDROGEN_ACCESSOR(type) \
|
||||
H##type* hydrogen() const { \
|
||||
return H##type::cast(hydrogen_value()); \
|
||||
@ -196,21 +206,10 @@ class LInstruction: public ZoneObject {
|
||||
virtual void PrintDataTo(StringStream* stream) = 0;
|
||||
virtual void PrintOutputOperandTo(StringStream* stream) = 0;
|
||||
|
||||
enum Opcode {
|
||||
// Declare a unique enum value for each instruction.
|
||||
#define DECLARE_OPCODE(type) k##type,
|
||||
LITHIUM_CONCRETE_INSTRUCTION_LIST(DECLARE_OPCODE)
|
||||
kNumberOfInstructions
|
||||
#undef DECLARE_OPCODE
|
||||
};
|
||||
|
||||
virtual Opcode opcode() const = 0;
|
||||
|
||||
// Declare virtual type testers.
|
||||
#define DECLARE_PREDICATE(type) \
|
||||
bool Is##type() const { return opcode() == k##type; }
|
||||
LITHIUM_CONCRETE_INSTRUCTION_LIST(DECLARE_PREDICATE)
|
||||
#undef DECLARE_PREDICATE
|
||||
#define DECLARE_DO(type) virtual bool Is##type() const { return false; }
|
||||
LITHIUM_ALL_INSTRUCTION_LIST(DECLARE_DO)
|
||||
#undef DECLARE_DO
|
||||
|
||||
virtual bool IsControl() const { return false; }
|
||||
virtual void SetBranchTargets(int true_block_id, int false_block_id) { }
|
||||
@ -456,6 +455,7 @@ class LUnknownOSRValue: public LTemplateInstruction<1, 0, 0> {
|
||||
template<int I, int T>
|
||||
class LControlInstruction: public LTemplateInstruction<0, I, T> {
|
||||
public:
|
||||
DECLARE_INSTRUCTION(ControlInstruction)
|
||||
virtual bool IsControl() const { return true; }
|
||||
|
||||
int true_block_id() const { return true_block_id_; }
|
||||
@ -1106,7 +1106,6 @@ class LArithmeticD: public LTemplateInstruction<1, 2, 0> {
|
||||
|
||||
Token::Value op() const { return op_; }
|
||||
|
||||
virtual Opcode opcode() const { return LInstruction::kArithmeticD; }
|
||||
virtual void CompileToNative(LCodeGen* generator);
|
||||
virtual const char* Mnemonic() const;
|
||||
|
||||
@ -1123,7 +1122,6 @@ class LArithmeticT: public LTemplateInstruction<1, 2, 0> {
|
||||
inputs_[1] = right;
|
||||
}
|
||||
|
||||
virtual Opcode opcode() const { return LInstruction::kArithmeticT; }
|
||||
virtual void CompileToNative(LCodeGen* generator);
|
||||
virtual const char* Mnemonic() const;
|
||||
|
||||
@ -2211,6 +2209,7 @@ class LChunkBuilder BASE_EMBEDDED {
|
||||
};
|
||||
|
||||
#undef DECLARE_HYDROGEN_ACCESSOR
|
||||
#undef DECLARE_INSTRUCTION
|
||||
#undef DECLARE_CONCRETE_INSTRUCTION
|
||||
|
||||
} } // namespace v8::internal
|
||||
|
@ -39,6 +39,13 @@ namespace internal {
|
||||
// Forward declarations.
|
||||
class LCodeGen;
|
||||
|
||||
|
||||
#define LITHIUM_ALL_INSTRUCTION_LIST(V) \
|
||||
V(ControlInstruction) \
|
||||
V(Call) \
|
||||
LITHIUM_CONCRETE_INSTRUCTION_LIST(V)
|
||||
|
||||
|
||||
#define LITHIUM_CONCRETE_INSTRUCTION_LIST(V) \
|
||||
V(AccessArgumentsAt) \
|
||||
V(AddI) \
|
||||
@ -165,16 +172,20 @@ class LCodeGen;
|
||||
V(ValueOf)
|
||||
|
||||
|
||||
#define DECLARE_CONCRETE_INSTRUCTION(type, mnemonic) \
|
||||
virtual Opcode opcode() const { return LInstruction::k##type; } \
|
||||
virtual void CompileToNative(LCodeGen* generator); \
|
||||
virtual const char* Mnemonic() const { return mnemonic; } \
|
||||
#define DECLARE_INSTRUCTION(type) \
|
||||
virtual bool Is##type() const { return true; } \
|
||||
static L##type* cast(LInstruction* instr) { \
|
||||
ASSERT(instr->Is##type()); \
|
||||
return reinterpret_cast<L##type*>(instr); \
|
||||
}
|
||||
|
||||
|
||||
#define DECLARE_CONCRETE_INSTRUCTION(type, mnemonic) \
|
||||
virtual void CompileToNative(LCodeGen* generator); \
|
||||
virtual const char* Mnemonic() const { return mnemonic; } \
|
||||
DECLARE_INSTRUCTION(type)
|
||||
|
||||
|
||||
#define DECLARE_HYDROGEN_ACCESSOR(type) \
|
||||
H##type* hydrogen() const { \
|
||||
return H##type::cast(hydrogen_value()); \
|
||||
@ -196,21 +207,10 @@ class LInstruction: public ZoneObject {
|
||||
virtual void PrintDataTo(StringStream* stream) = 0;
|
||||
virtual void PrintOutputOperandTo(StringStream* stream) = 0;
|
||||
|
||||
enum Opcode {
|
||||
// Declare a unique enum value for each instruction.
|
||||
#define DECLARE_OPCODE(type) k##type,
|
||||
LITHIUM_CONCRETE_INSTRUCTION_LIST(DECLARE_OPCODE)
|
||||
kNumberOfInstructions
|
||||
#undef DECLARE_OPCODE
|
||||
};
|
||||
|
||||
virtual Opcode opcode() const = 0;
|
||||
|
||||
// Declare virtual type testers.
|
||||
#define DECLARE_PREDICATE(type) \
|
||||
bool Is##type() const { return opcode() == k##type; }
|
||||
LITHIUM_CONCRETE_INSTRUCTION_LIST(DECLARE_PREDICATE)
|
||||
#undef DECLARE_PREDICATE
|
||||
#define DECLARE_DO(type) virtual bool Is##type() const { return false; }
|
||||
LITHIUM_ALL_INSTRUCTION_LIST(DECLARE_DO)
|
||||
#undef DECLARE_DO
|
||||
|
||||
virtual bool IsControl() const { return false; }
|
||||
virtual void SetBranchTargets(int true_block_id, int false_block_id) { }
|
||||
@ -463,6 +463,7 @@ class LUnknownOSRValue: public LTemplateInstruction<1, 0, 0> {
|
||||
template<int I, int T>
|
||||
class LControlInstruction: public LTemplateInstruction<0, I, T> {
|
||||
public:
|
||||
DECLARE_INSTRUCTION(ControlInstruction)
|
||||
virtual bool IsControl() const { return true; }
|
||||
|
||||
int true_block_id() const { return true_block_id_; }
|
||||
@ -1132,7 +1133,6 @@ class LArithmeticD: public LTemplateInstruction<1, 2, 0> {
|
||||
|
||||
Token::Value op() const { return op_; }
|
||||
|
||||
virtual Opcode opcode() const { return LInstruction::kArithmeticD; }
|
||||
virtual void CompileToNative(LCodeGen* generator);
|
||||
virtual const char* Mnemonic() const;
|
||||
|
||||
@ -1149,7 +1149,6 @@ class LArithmeticT: public LTemplateInstruction<1, 2, 0> {
|
||||
inputs_[1] = right;
|
||||
}
|
||||
|
||||
virtual Opcode opcode() const { return LInstruction::kArithmeticT; }
|
||||
virtual void CompileToNative(LCodeGen* generator);
|
||||
virtual const char* Mnemonic() const;
|
||||
|
||||
@ -2269,6 +2268,7 @@ class LChunkBuilder BASE_EMBEDDED {
|
||||
};
|
||||
|
||||
#undef DECLARE_HYDROGEN_ACCESSOR
|
||||
#undef DECLARE_INSTRUCTION
|
||||
#undef DECLARE_CONCRETE_INSTRUCTION
|
||||
|
||||
} } // namespace v8::internal
|
||||
|
@ -39,6 +39,12 @@ namespace internal {
|
||||
// Forward declarations.
|
||||
class LCodeGen;
|
||||
|
||||
#define LITHIUM_ALL_INSTRUCTION_LIST(V) \
|
||||
V(ControlInstruction) \
|
||||
V(Call) \
|
||||
LITHIUM_CONCRETE_INSTRUCTION_LIST(V)
|
||||
|
||||
|
||||
#define LITHIUM_CONCRETE_INSTRUCTION_LIST(V) \
|
||||
V(AccessArgumentsAt) \
|
||||
V(AddI) \
|
||||
@ -165,16 +171,20 @@ class LCodeGen;
|
||||
V(ValueOf)
|
||||
|
||||
|
||||
#define DECLARE_CONCRETE_INSTRUCTION(type, mnemonic) \
|
||||
virtual Opcode opcode() const { return LInstruction::k##type; } \
|
||||
virtual void CompileToNative(LCodeGen* generator); \
|
||||
virtual const char* Mnemonic() const { return mnemonic; } \
|
||||
#define DECLARE_INSTRUCTION(type) \
|
||||
virtual bool Is##type() const { return true; } \
|
||||
static L##type* cast(LInstruction* instr) { \
|
||||
ASSERT(instr->Is##type()); \
|
||||
return reinterpret_cast<L##type*>(instr); \
|
||||
}
|
||||
|
||||
|
||||
#define DECLARE_CONCRETE_INSTRUCTION(type, mnemonic) \
|
||||
virtual void CompileToNative(LCodeGen* generator); \
|
||||
virtual const char* Mnemonic() const { return mnemonic; } \
|
||||
DECLARE_INSTRUCTION(type)
|
||||
|
||||
|
||||
#define DECLARE_HYDROGEN_ACCESSOR(type) \
|
||||
H##type* hydrogen() const { \
|
||||
return H##type::cast(hydrogen_value()); \
|
||||
@ -197,21 +207,10 @@ class LInstruction: public ZoneObject {
|
||||
virtual void PrintDataTo(StringStream* stream) = 0;
|
||||
virtual void PrintOutputOperandTo(StringStream* stream) = 0;
|
||||
|
||||
enum Opcode {
|
||||
// Declare a unique enum value for each instruction.
|
||||
#define DECLARE_OPCODE(type) k##type,
|
||||
LITHIUM_CONCRETE_INSTRUCTION_LIST(DECLARE_OPCODE)
|
||||
kNumberOfInstructions
|
||||
#undef DECLARE_OPCODE
|
||||
};
|
||||
|
||||
virtual Opcode opcode() const = 0;
|
||||
|
||||
// Declare virtual type testers.
|
||||
#define DECLARE_PREDICATE(type) \
|
||||
bool Is##type() const { return opcode() == k##type; }
|
||||
LITHIUM_CONCRETE_INSTRUCTION_LIST(DECLARE_PREDICATE)
|
||||
#undef DECLARE_PREDICATE
|
||||
#define DECLARE_DO(type) virtual bool Is##type() const { return false; }
|
||||
LITHIUM_ALL_INSTRUCTION_LIST(DECLARE_DO)
|
||||
#undef DECLARE_DO
|
||||
|
||||
virtual bool IsControl() const { return false; }
|
||||
virtual void SetBranchTargets(int true_block_id, int false_block_id) { }
|
||||
@ -457,6 +456,7 @@ class LUnknownOSRValue: public LTemplateInstruction<1, 0, 0> {
|
||||
template<int I, int T>
|
||||
class LControlInstruction: public LTemplateInstruction<0, I, T> {
|
||||
public:
|
||||
DECLARE_INSTRUCTION(ControlInstruction)
|
||||
virtual bool IsControl() const { return true; }
|
||||
|
||||
int true_block_id() const { return true_block_id_; }
|
||||
@ -1092,7 +1092,6 @@ class LArithmeticD: public LTemplateInstruction<1, 2, 0> {
|
||||
|
||||
Token::Value op() const { return op_; }
|
||||
|
||||
virtual Opcode opcode() const { return LInstruction::kArithmeticD; }
|
||||
virtual void CompileToNative(LCodeGen* generator);
|
||||
virtual const char* Mnemonic() const;
|
||||
|
||||
@ -1109,7 +1108,6 @@ class LArithmeticT: public LTemplateInstruction<1, 2, 0> {
|
||||
inputs_[1] = right;
|
||||
}
|
||||
|
||||
virtual Opcode opcode() const { return LInstruction::kArithmeticT; }
|
||||
virtual void CompileToNative(LCodeGen* generator);
|
||||
virtual const char* Mnemonic() const;
|
||||
|
||||
@ -2193,6 +2191,7 @@ class LChunkBuilder BASE_EMBEDDED {
|
||||
};
|
||||
|
||||
#undef DECLARE_HYDROGEN_ACCESSOR
|
||||
#undef DECLARE_INSTRUCTION
|
||||
#undef DECLARE_CONCRETE_INSTRUCTION
|
||||
|
||||
} } // namespace v8::int
|
||||
|
Loading…
Reference in New Issue
Block a user