Index: src/ia32/lithium-codegen-ia32.cc |
diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc |
index 1781fa5d92b6ce9cc20eb768204a9e625232b8d3..33c6ce77a02d3a334c84ed3ba70b2b00af945d43 100644 |
--- a/src/ia32/lithium-codegen-ia32.cc |
+++ b/src/ia32/lithium-codegen-ia32.cc |
@@ -2440,11 +2440,12 @@ void LCodeGen::DoLoadKeyedFastElement(LLoadKeyedFastElement* instr) { |
} |
-Operand LCodeGen::BuildExternalArrayOperand(LOperand* external_pointer, |
- LOperand* key, |
- ExternalArrayType array_type) { |
+Operand LCodeGen::BuildExternalArrayOperand( |
+ LOperand* external_pointer, |
+ LOperand* key, |
+ JSObject::ElementsKind elements_kind) { |
Register external_pointer_reg = ToRegister(external_pointer); |
- int shift_size = ExternalArrayTypeToShiftSize(array_type); |
+ int shift_size = ElementsKindToShiftSize(elements_kind); |
if (key->IsConstantOperand()) { |
int constant_value = ToInteger32(LConstantOperand::cast(key)); |
if (constant_value & 0xF0000000) { |
@@ -2460,35 +2461,35 @@ Operand LCodeGen::BuildExternalArrayOperand(LOperand* external_pointer, |
void LCodeGen::DoLoadKeyedSpecializedArrayElement( |
LLoadKeyedSpecializedArrayElement* instr) { |
- ExternalArrayType array_type = instr->array_type(); |
+ JSObject::ElementsKind elements_kind = instr->elements_kind(); |
Operand operand(BuildExternalArrayOperand(instr->external_pointer(), |
- instr->key(), array_type)); |
- if (array_type == kExternalFloatArray) { |
+ instr->key(), elements_kind)); |
+ if (elements_kind == JSObject::EXTERNAL_FLOAT_ELEMENTS) { |
XMMRegister result(ToDoubleRegister(instr->result())); |
__ movss(result, operand); |
__ cvtss2sd(result, result); |
- } else if (array_type == kExternalDoubleArray) { |
+ } else if (elements_kind == JSObject::EXTERNAL_DOUBLE_ELEMENTS) { |
__ movdbl(ToDoubleRegister(instr->result()), operand); |
} else { |
Register result(ToRegister(instr->result())); |
- switch (array_type) { |
- case kExternalByteArray: |
+ switch (elements_kind) { |
+ case JSObject::EXTERNAL_BYTE_ELEMENTS: |
__ movsx_b(result, operand); |
break; |
- case kExternalUnsignedByteArray: |
- case kExternalPixelArray: |
+ case JSObject::EXTERNAL_PIXEL_ELEMENTS: |
+ case JSObject::EXTERNAL_UNSIGNED_BYTE_ELEMENTS: |
__ movzx_b(result, operand); |
break; |
- case kExternalShortArray: |
+ case JSObject::EXTERNAL_SHORT_ELEMENTS: |
__ movsx_w(result, operand); |
break; |
- case kExternalUnsignedShortArray: |
+ case JSObject::EXTERNAL_UNSIGNED_SHORT_ELEMENTS: |
__ movzx_w(result, operand); |
break; |
- case kExternalIntArray: |
+ case JSObject::EXTERNAL_INT_ELEMENTS: |
__ mov(result, operand); |
break; |
- case kExternalUnsignedIntArray: |
+ case JSObject::EXTERNAL_UNSIGNED_INT_ELEMENTS: |
__ mov(result, operand); |
__ test(result, Operand(result)); |
// TODO(danno): we could be more clever here, perhaps having a special |
@@ -2496,8 +2497,11 @@ void LCodeGen::DoLoadKeyedSpecializedArrayElement( |
// happens, and generate code that returns a double rather than int. |
DeoptimizeIf(negative, instr->environment()); |
break; |
- case kExternalFloatArray: |
- case kExternalDoubleArray: |
+ case JSObject::EXTERNAL_FLOAT_ELEMENTS: |
+ case JSObject::EXTERNAL_DOUBLE_ELEMENTS: |
+ case JSObject::FAST_ELEMENTS: |
+ case JSObject::FAST_DOUBLE_ELEMENTS: |
+ case JSObject::DICTIONARY_ELEMENTS: |
UNREACHABLE(); |
break; |
} |
@@ -3205,32 +3209,35 @@ void LCodeGen::DoBoundsCheck(LBoundsCheck* instr) { |
void LCodeGen::DoStoreKeyedSpecializedArrayElement( |
LStoreKeyedSpecializedArrayElement* instr) { |
- ExternalArrayType array_type = instr->array_type(); |
+ JSObject::ElementsKind elements_kind = instr->elements_kind(); |
Operand operand(BuildExternalArrayOperand(instr->external_pointer(), |
- instr->key(), array_type)); |
- if (array_type == kExternalFloatArray) { |
+ instr->key(), elements_kind)); |
+ if (elements_kind == JSObject::EXTERNAL_FLOAT_ELEMENTS) { |
__ cvtsd2ss(xmm0, ToDoubleRegister(instr->value())); |
__ movss(operand, xmm0); |
- } else if (array_type == kExternalDoubleArray) { |
+ } else if (elements_kind == JSObject::EXTERNAL_DOUBLE_ELEMENTS) { |
__ movdbl(operand, ToDoubleRegister(instr->value())); |
} else { |
Register value = ToRegister(instr->value()); |
- switch (array_type) { |
- case kExternalPixelArray: |
- case kExternalByteArray: |
- case kExternalUnsignedByteArray: |
+ switch (elements_kind) { |
+ case JSObject::EXTERNAL_PIXEL_ELEMENTS: |
+ case JSObject::EXTERNAL_UNSIGNED_BYTE_ELEMENTS: |
+ case JSObject::EXTERNAL_BYTE_ELEMENTS: |
__ mov_b(operand, value); |
break; |
- case kExternalShortArray: |
- case kExternalUnsignedShortArray: |
+ case JSObject::EXTERNAL_SHORT_ELEMENTS: |
+ case JSObject::EXTERNAL_UNSIGNED_SHORT_ELEMENTS: |
__ mov_w(operand, value); |
break; |
- case kExternalIntArray: |
- case kExternalUnsignedIntArray: |
+ case JSObject::EXTERNAL_INT_ELEMENTS: |
+ case JSObject::EXTERNAL_UNSIGNED_INT_ELEMENTS: |
__ mov(operand, value); |
break; |
- case kExternalFloatArray: |
- case kExternalDoubleArray: |
+ case JSObject::EXTERNAL_FLOAT_ELEMENTS: |
+ case JSObject::EXTERNAL_DOUBLE_ELEMENTS: |
+ case JSObject::FAST_ELEMENTS: |
+ case JSObject::FAST_DOUBLE_ELEMENTS: |
+ case JSObject::DICTIONARY_ELEMENTS: |
UNREACHABLE(); |
break; |
} |