Index: src/arm/code-stubs-arm.h |
diff --git a/src/arm/code-stubs-arm.h b/src/arm/code-stubs-arm.h |
index 3e796249c8435f97f7a14f0454f5c2e8835446ed..0443cf799cc08e5d83e8ebe88f6de929dc8b5d12 100644 |
--- a/src/arm/code-stubs-arm.h |
+++ b/src/arm/code-stubs-arm.h |
@@ -142,108 +142,6 @@ class UnaryOpStub: public CodeStub { |
}; |
-class BinaryOpStub: public CodeStub { |
- public: |
- BinaryOpStub(Token::Value op, OverwriteMode mode) |
- : op_(op), |
- mode_(mode), |
- operands_type_(BinaryOpIC::UNINITIALIZED), |
- result_type_(BinaryOpIC::UNINITIALIZED) { |
- use_vfp2_ = CpuFeatures::IsSupported(VFP2); |
- ASSERT(OpBits::is_valid(Token::NUM_TOKENS)); |
- } |
- |
- BinaryOpStub( |
- int key, |
- BinaryOpIC::TypeInfo operands_type, |
- BinaryOpIC::TypeInfo result_type = BinaryOpIC::UNINITIALIZED) |
- : op_(OpBits::decode(key)), |
- mode_(ModeBits::decode(key)), |
- use_vfp2_(VFP2Bits::decode(key)), |
- operands_type_(operands_type), |
- result_type_(result_type) { } |
- |
- private: |
- enum SmiCodeGenerateHeapNumberResults { |
- ALLOW_HEAPNUMBER_RESULTS, |
- NO_HEAPNUMBER_RESULTS |
- }; |
- |
- Token::Value op_; |
- OverwriteMode mode_; |
- bool use_vfp2_; |
- |
- // Operand type information determined at runtime. |
- BinaryOpIC::TypeInfo operands_type_; |
- BinaryOpIC::TypeInfo result_type_; |
- |
- virtual void PrintName(StringStream* stream); |
- |
- // Minor key encoding in 16 bits RRRTTTVOOOOOOOMM. |
- class ModeBits: public BitField<OverwriteMode, 0, 2> {}; |
- class OpBits: public BitField<Token::Value, 2, 7> {}; |
- class VFP2Bits: public BitField<bool, 9, 1> {}; |
- class OperandTypeInfoBits: public BitField<BinaryOpIC::TypeInfo, 10, 3> {}; |
- class ResultTypeInfoBits: public BitField<BinaryOpIC::TypeInfo, 13, 3> {}; |
- |
- Major MajorKey() { return BinaryOp; } |
- int MinorKey() { |
- return OpBits::encode(op_) |
- | ModeBits::encode(mode_) |
- | VFP2Bits::encode(use_vfp2_) |
- | OperandTypeInfoBits::encode(operands_type_) |
- | ResultTypeInfoBits::encode(result_type_); |
- } |
- |
- void Generate(MacroAssembler* masm); |
- void GenerateGeneric(MacroAssembler* masm); |
- void GenerateSmiSmiOperation(MacroAssembler* masm); |
- void GenerateFPOperation(MacroAssembler* masm, |
- bool smi_operands, |
- Label* not_numbers, |
- Label* gc_required); |
- void GenerateSmiCode(MacroAssembler* masm, |
- Label* use_runtime, |
- Label* gc_required, |
- SmiCodeGenerateHeapNumberResults heapnumber_results); |
- void GenerateLoadArguments(MacroAssembler* masm); |
- void GenerateReturn(MacroAssembler* masm); |
- void GenerateUninitializedStub(MacroAssembler* masm); |
- void GenerateSmiStub(MacroAssembler* masm); |
- void GenerateInt32Stub(MacroAssembler* masm); |
- void GenerateHeapNumberStub(MacroAssembler* masm); |
- void GenerateOddballStub(MacroAssembler* masm); |
- void GenerateStringStub(MacroAssembler* masm); |
- void GenerateBothStringStub(MacroAssembler* masm); |
- void GenerateGenericStub(MacroAssembler* masm); |
- void GenerateAddStrings(MacroAssembler* masm); |
- void GenerateCallRuntime(MacroAssembler* masm); |
- |
- void GenerateHeapResultAllocation(MacroAssembler* masm, |
- Register result, |
- Register heap_number_map, |
- Register scratch1, |
- Register scratch2, |
- Label* gc_required); |
- void GenerateRegisterArgsPush(MacroAssembler* masm); |
- void GenerateTypeTransition(MacroAssembler* masm); |
- void GenerateTypeTransitionWithSavedArgs(MacroAssembler* masm); |
- |
- virtual int GetCodeKind() { return Code::BINARY_OP_IC; } |
- |
- virtual InlineCacheState GetICState() { |
- return BinaryOpIC::ToState(operands_type_); |
- } |
- |
- virtual void FinishCode(Handle<Code> code) { |
- code->set_binary_op_type(operands_type_); |
- code->set_binary_op_result_type(result_type_); |
- } |
- |
- friend class CodeGenerator; |
-}; |
- |
- |
class StringHelper : public AllStatic { |
public: |
// Generate code for copying characters using a simple loop. This should only |
@@ -724,20 +622,6 @@ class FloatingPointHelper : public AllStatic { |
Register scratch1, |
Register scratch2); |
- // Loads objects from r0 and r1 (right and left in binary operations) into |
- // floating point registers. Depending on the destination the values ends up |
- // either d7 and d6 or in r2/r3 and r0/r1 respectively. If the destination is |
- // floating point registers VFP3 must be supported. If core registers are |
- // requested when VFP3 is supported d6 and d7 will still be scratched. If |
- // either r0 or r1 is not a number (not smi and not heap number object) the |
- // not_number label is jumped to with r0 and r1 intact. |
- static void LoadOperands(MacroAssembler* masm, |
- FloatingPointHelper::Destination destination, |
- Register heap_number_map, |
- Register scratch1, |
- Register scratch2, |
- Label* not_number); |
- |
// Convert the smi or heap number in object to an int32 using the rules |
// for ToInt32 as described in ECMAScript 9.5.: the value is truncated |
// and brought into the range -2^31 .. +2^31 - 1. |
@@ -836,7 +720,12 @@ class FloatingPointHelper : public AllStatic { |
Register heap_number_result, |
Register scratch); |
- private: |
+ // Loads the objects from |object| into floating point registers. |
+ // Depending on |destination| the value ends up either in |dst| or |
+ // in |dst1|/|dst2|. If |destination| is kVFPRegisters, then VFP3 |
+ // must be supported. If kCoreRegisters are requested and VFP3 is |
+ // supported, |dst| will be scratched. If |object| is neither smi nor |
+ // heap number, |not_number| is jumped to with |object| still intact. |
static void LoadNumber(MacroAssembler* masm, |
FloatingPointHelper::Destination destination, |
Register object, |