| Index: src/arm64/lithium-arm64.h
|
| diff --git a/src/arm64/lithium-arm64.h b/src/arm64/lithium-arm64.h
|
| index 18dd927d815d5a6e5cab8f13b3caf2ab08110d26..6eafb7777ba5c33d685356c89a86764fe0123034 100644
|
| --- a/src/arm64/lithium-arm64.h
|
| +++ b/src/arm64/lithium-arm64.h
|
| @@ -64,6 +64,7 @@ class LCodeGen;
|
| V(ConstantT) \
|
| V(ConstructDouble) \
|
| V(Context) \
|
| + V(CopyElements) \
|
| V(DateField) \
|
| V(DebugBreak) \
|
| V(DeclareGlobals) \
|
| @@ -76,6 +77,7 @@ class LCodeGen;
|
| V(Drop) \
|
| V(Dummy) \
|
| V(DummyUse) \
|
| + V(FillElements) \
|
| V(FlooringDivByConstI) \
|
| V(FlooringDivByPowerOf2I) \
|
| V(FlooringDivI) \
|
| @@ -2427,6 +2429,48 @@ class LStackCheck V8_FINAL : public LTemplateInstruction<0, 1, 0> {
|
| };
|
|
|
|
|
| +class LFillElements V8_FINAL : public LTemplateInstruction<0, 4, 0> {
|
| + public:
|
| + LFillElements(LOperand* object, LOperand* from, LOperand* to,
|
| + LOperand* value) {
|
| + inputs_[0] = object;
|
| + inputs_[1] = from;
|
| + inputs_[2] = to;
|
| + inputs_[3] = value;
|
| + }
|
| + LOperand* elements() { return inputs_[0]; }
|
| + LOperand* from() { return inputs_[1]; }
|
| + LOperand* to() { return inputs_[2]; }
|
| + LOperand* value() { return inputs_[3]; }
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(FillElements, "fill-elements")
|
| + DECLARE_HYDROGEN_ACCESSOR(FillElements)
|
| +
|
| + virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
|
| +
|
| + // Max size for unroll (choosen to generate the smallest code size).
|
| + static const int32_t kMaxUnrolledSize = 8;
|
| +};
|
| +
|
| +
|
| +class LCopyElements V8_FINAL : public LTemplateInstruction<0, 3, 0> {
|
| + public:
|
| + LCopyElements(LOperand* src, LOperand* dst, LOperand* length) {
|
| + inputs_[0] = src;
|
| + inputs_[1] = dst;
|
| + inputs_[2] = length;
|
| + }
|
| + LOperand* src() { return inputs_[0]; }
|
| + LOperand* dst() { return inputs_[1]; }
|
| + LOperand* length() { return inputs_[2]; }
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(CopyElements, "copy-elements")
|
| + DECLARE_HYDROGEN_ACCESSOR(CopyElements)
|
| +
|
| + virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
|
| +};
|
| +
|
| +
|
| template<int T>
|
| class LStoreKeyed : public LTemplateInstruction<0, 3, T> {
|
| public:
|
| @@ -3141,6 +3185,7 @@ class LChunkBuilder V8_FINAL : public LChunkBuilderBase {
|
|
|
| // An input operand in a register or a constant operand.
|
| MUST_USE_RESULT LOperand* UseRegisterOrConstant(HValue* value);
|
| + MUST_USE_RESULT LOperand* UseRegisterAndClobberOrConstant(HValue* value);
|
| MUST_USE_RESULT LOperand* UseRegisterOrConstantAtStart(HValue* value);
|
|
|
| // A constant operand.
|
|
|