| Index: src/ia32/lithium-ia32.h
|
| ===================================================================
|
| --- src/ia32/lithium-ia32.h (revision 9006)
|
| +++ src/ia32/lithium-ia32.h (working copy)
|
| @@ -86,8 +86,7 @@
|
| V(DivI) \
|
| V(DoubleToI) \
|
| V(ElementsKind) \
|
| - V(ExternalArrayLength) \
|
| - V(FixedArrayLength) \
|
| + V(FixedArrayBaseLength) \
|
| V(FunctionLiteral) \
|
| V(GetCachedArrayIndex) \
|
| V(GlobalObject) \
|
| @@ -922,28 +921,18 @@
|
| };
|
|
|
|
|
| -class LExternalArrayLength: public LTemplateInstruction<1, 1, 0> {
|
| +class LFixedArrayBaseLength: public LTemplateInstruction<1, 1, 0> {
|
| public:
|
| - explicit LExternalArrayLength(LOperand* value) {
|
| + explicit LFixedArrayBaseLength(LOperand* value) {
|
| inputs_[0] = value;
|
| }
|
|
|
| - DECLARE_CONCRETE_INSTRUCTION(ExternalArrayLength, "external-array-length")
|
| - DECLARE_HYDROGEN_ACCESSOR(ExternalArrayLength)
|
| + DECLARE_CONCRETE_INSTRUCTION(FixedArrayBaseLength,
|
| + "fixed-array-base-length")
|
| + DECLARE_HYDROGEN_ACCESSOR(FixedArrayBaseLength)
|
| };
|
|
|
|
|
| -class LFixedArrayLength: public LTemplateInstruction<1, 1, 0> {
|
| - public:
|
| - explicit LFixedArrayLength(LOperand* value) {
|
| - inputs_[0] = value;
|
| - }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(FixedArrayLength, "fixed-array-length")
|
| - DECLARE_HYDROGEN_ACCESSOR(FixedArrayLength)
|
| -};
|
| -
|
| -
|
| class LElementsKind: public LTemplateInstruction<1, 1, 0> {
|
| public:
|
| explicit LElementsKind(LOperand* value) {
|
| @@ -2250,14 +2239,18 @@
|
| template<int I, int T>
|
| LInstruction* DefineFixedDouble(LTemplateInstruction<1, I, T>* instr,
|
| XMMRegister reg);
|
| + // Assigns an environment to an instruction. An instruction which can
|
| + // deoptimize must have an environment.
|
| LInstruction* AssignEnvironment(LInstruction* instr);
|
| + // Assigns a pointer map to an instruction. An instruction which can
|
| + // trigger a GC or a lazy deoptimization must have a pointer map.
|
| LInstruction* AssignPointerMap(LInstruction* instr);
|
|
|
| enum CanDeoptimize { CAN_DEOPTIMIZE_EAGERLY, CANNOT_DEOPTIMIZE_EAGERLY };
|
|
|
| - // By default we assume that instruction sequences generated for calls
|
| - // cannot deoptimize eagerly and we do not attach environment to this
|
| - // instruction.
|
| + // Marks a call for the register allocator. Assigns a pointer map to
|
| + // support GC and lazy deoptimization. Assigns an environment to support
|
| + // eager deoptimization if CAN_DEOPTIMIZE_EAGERLY.
|
| LInstruction* MarkAsCall(
|
| LInstruction* instr,
|
| HInstruction* hinstr,
|
|
|