| Index: runtime/vm/intermediate_language.h
|
| ===================================================================
|
| --- runtime/vm/intermediate_language.h (revision 35656)
|
| +++ runtime/vm/intermediate_language.h (working copy)
|
| @@ -721,6 +721,7 @@
|
| M(CheckClass) \
|
| M(CheckSmi) \
|
| M(Constant) \
|
| + M(UnboxedConstant) \
|
| M(CheckEitherNonSmi) \
|
| M(BinaryDoubleOp) \
|
| M(MathUnary) \
|
| @@ -2745,6 +2746,29 @@
|
| };
|
|
|
|
|
| +// Merged ConstantInstr -> UnboxedXXX into UnboxedConstantInstr.
|
| +// TODO(srdjan): Implemented currently for doubles only, should implement
|
| +// for other unboxing instructions.
|
| +class UnboxedConstantInstr : public ConstantInstr {
|
| + public:
|
| + explicit UnboxedConstantInstr(const Object& value);
|
| +
|
| + virtual Representation representation() const {
|
| + return kUnboxedDouble;
|
| + }
|
| +
|
| + // Either NULL or the address of the unboxed constant.
|
| + uword constant_address() const { return constant_address_; }
|
| +
|
| + DECLARE_INSTRUCTION(UnboxedConstant)
|
| +
|
| + private:
|
| + uword constant_address_; // Either NULL or points to the untagged constant.
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(UnboxedConstantInstr);
|
| +};
|
| +
|
| +
|
| class AssertAssignableInstr : public TemplateDefinition<3> {
|
| public:
|
| AssertAssignableInstr(intptr_t token_pos,
|
|
|