| Index: src/interpreter/interpreter-assembler.cc
|
| diff --git a/src/interpreter/interpreter-assembler.cc b/src/interpreter/interpreter-assembler.cc
|
| index 440e879c4869fbd7b0e52b9035167e49ffd81168..a56f498eb820280d82e3fc2000269551f48d7885 100644
|
| --- a/src/interpreter/interpreter-assembler.cc
|
| +++ b/src/interpreter/interpreter-assembler.cc
|
| @@ -79,7 +79,7 @@ Node* InterpreterAssembler::RegisterLocation(Node* reg_index) {
|
|
|
| Node* InterpreterAssembler::LoadRegister(int offset) {
|
| return Load(MachineType::AnyTagged(), RegisterFileRawPointer(),
|
| - Int32Constant(offset));
|
| + IntPtrConstant(offset));
|
| }
|
|
|
| Node* InterpreterAssembler::LoadRegister(Register reg) {
|
| @@ -97,7 +97,7 @@ Node* InterpreterAssembler::LoadRegister(Node* reg_index) {
|
|
|
| Node* InterpreterAssembler::StoreRegister(Node* value, int offset) {
|
| return StoreNoWriteBarrier(MachineRepresentation::kTagged,
|
| - RegisterFileRawPointer(), Int32Constant(offset),
|
| + RegisterFileRawPointer(), IntPtrConstant(offset),
|
| value);
|
| }
|
|
|
| @@ -113,7 +113,7 @@ Node* InterpreterAssembler::StoreRegister(Node* value, Node* reg_index) {
|
|
|
| Node* InterpreterAssembler::NextRegister(Node* reg_index) {
|
| // Register indexes are negative, so the next index is minus one.
|
| - return IntPtrAdd(reg_index, Int32Constant(-1));
|
| + return IntPtrAdd(reg_index, IntPtrConstant(-1));
|
| }
|
|
|
| Node* InterpreterAssembler::BytecodeOperand(int operand_index) {
|
| @@ -122,7 +122,7 @@ Node* InterpreterAssembler::BytecodeOperand(int operand_index) {
|
| Bytecodes::GetOperandSize(bytecode_, operand_index));
|
| return Load(
|
| MachineType::Uint8(), BytecodeArrayTaggedPointer(),
|
| - IntPtrAdd(BytecodeOffset(), Int32Constant(Bytecodes::GetOperandOffset(
|
| + IntPtrAdd(BytecodeOffset(), IntPtrConstant(Bytecodes::GetOperandOffset(
|
| bytecode_, operand_index))));
|
| }
|
|
|
| @@ -132,7 +132,7 @@ Node* InterpreterAssembler::BytecodeOperandSignExtended(int operand_index) {
|
| Bytecodes::GetOperandSize(bytecode_, operand_index));
|
| Node* load = Load(
|
| MachineType::Int8(), BytecodeArrayTaggedPointer(),
|
| - IntPtrAdd(BytecodeOffset(), Int32Constant(Bytecodes::GetOperandOffset(
|
| + IntPtrAdd(BytecodeOffset(), IntPtrConstant(Bytecodes::GetOperandOffset(
|
| bytecode_, operand_index))));
|
| // Ensure that we sign extend to full pointer size
|
| if (kPointerSize == 8) {
|
| @@ -148,15 +148,16 @@ Node* InterpreterAssembler::BytecodeOperandShort(int operand_index) {
|
| if (TargetSupportsUnalignedAccess()) {
|
| return Load(
|
| MachineType::Uint16(), BytecodeArrayTaggedPointer(),
|
| - IntPtrAdd(BytecodeOffset(), Int32Constant(Bytecodes::GetOperandOffset(
|
| + IntPtrAdd(BytecodeOffset(), IntPtrConstant(Bytecodes::GetOperandOffset(
|
| bytecode_, operand_index))));
|
| } else {
|
| int offset = Bytecodes::GetOperandOffset(bytecode_, operand_index);
|
| - Node* first_byte = Load(MachineType::Uint8(), BytecodeArrayTaggedPointer(),
|
| - IntPtrAdd(BytecodeOffset(), Int32Constant(offset)));
|
| + Node* first_byte =
|
| + Load(MachineType::Uint8(), BytecodeArrayTaggedPointer(),
|
| + IntPtrAdd(BytecodeOffset(), IntPtrConstant(offset)));
|
| Node* second_byte =
|
| Load(MachineType::Uint8(), BytecodeArrayTaggedPointer(),
|
| - IntPtrAdd(BytecodeOffset(), Int32Constant(offset + 1)));
|
| + IntPtrAdd(BytecodeOffset(), IntPtrConstant(offset + 1)));
|
| #if V8_TARGET_LITTLE_ENDIAN
|
| return WordOr(WordShl(second_byte, kBitsPerByte), first_byte);
|
| #elif V8_TARGET_BIG_ENDIAN
|
| @@ -176,14 +177,14 @@ Node* InterpreterAssembler::BytecodeOperandShortSignExtended(
|
| Node* load;
|
| if (TargetSupportsUnalignedAccess()) {
|
| load = Load(MachineType::Int16(), BytecodeArrayTaggedPointer(),
|
| - IntPtrAdd(BytecodeOffset(), Int32Constant(operand_offset)));
|
| + IntPtrAdd(BytecodeOffset(), IntPtrConstant(operand_offset)));
|
| } else {
|
| #if V8_TARGET_LITTLE_ENDIAN
|
| - Node* hi_byte_offset = Int32Constant(operand_offset + 1);
|
| - Node* lo_byte_offset = Int32Constant(operand_offset);
|
| + Node* hi_byte_offset = IntPtrConstant(operand_offset + 1);
|
| + Node* lo_byte_offset = IntPtrConstant(operand_offset);
|
| #elif V8_TARGET_BIG_ENDIAN
|
| - Node* hi_byte_offset = Int32Constant(operand_offset);
|
| - Node* lo_byte_offset = Int32Constant(operand_offset + 1);
|
| + Node* hi_byte_offset = IntPtrConstant(operand_offset);
|
| + Node* lo_byte_offset = IntPtrConstant(operand_offset + 1);
|
| #else
|
| #error "Unknown Architecture"
|
| #endif
|
| @@ -264,14 +265,6 @@ Node* InterpreterAssembler::LoadConstantPoolEntry(Node* index) {
|
| return Load(MachineType::AnyTagged(), constant_pool, entry_offset);
|
| }
|
|
|
| -Node* InterpreterAssembler::LoadFixedArrayElement(Node* fixed_array,
|
| - int index) {
|
| - Node* entry_offset =
|
| - IntPtrAdd(IntPtrConstant(FixedArray::kHeaderSize - kHeapObjectTag),
|
| - WordShl(Int32Constant(index), kPointerSizeLog2));
|
| - return Load(MachineType::AnyTagged(), fixed_array, entry_offset);
|
| -}
|
| -
|
| Node* InterpreterAssembler::LoadObjectField(Node* object, int offset) {
|
| return Load(MachineType::AnyTagged(), object,
|
| IntPtrConstant(offset - kHeapObjectTag));
|
| @@ -285,7 +278,7 @@ Node* InterpreterAssembler::LoadContextSlot(Node* context, int slot_index) {
|
| Node* InterpreterAssembler::LoadContextSlot(Node* context, Node* slot_index) {
|
| Node* offset =
|
| IntPtrAdd(WordShl(slot_index, kPointerSizeLog2),
|
| - Int32Constant(Context::kHeaderSize - kHeapObjectTag));
|
| + IntPtrConstant(Context::kHeaderSize - kHeapObjectTag));
|
| return Load(MachineType::AnyTagged(), context, offset);
|
| }
|
|
|
| @@ -293,7 +286,7 @@ Node* InterpreterAssembler::StoreContextSlot(Node* context, Node* slot_index,
|
| Node* value) {
|
| Node* offset =
|
| IntPtrAdd(WordShl(slot_index, kPointerSizeLog2),
|
| - Int32Constant(Context::kHeaderSize - kHeapObjectTag));
|
| + IntPtrConstant(Context::kHeaderSize - kHeapObjectTag));
|
| return Store(MachineRepresentation::kTagged, context, offset, value);
|
| }
|
|
|
| @@ -368,7 +361,7 @@ Node* InterpreterAssembler::CallRuntimeN(Node* function_id, Node* context,
|
| Node* function = IntPtrAdd(function_table, function_offset);
|
| Node* function_entry =
|
| Load(MachineType::Pointer(), function,
|
| - Int32Constant(offsetof(Runtime::Function, entry)));
|
| + IntPtrConstant(offsetof(Runtime::Function, entry)));
|
|
|
| return CallStub(callable.descriptor(), code_target, context, arg_count,
|
| first_arg, function_entry, result_size);
|
| @@ -405,7 +398,7 @@ void InterpreterAssembler::UpdateInterruptBudget(Node* weight) {
|
| }
|
|
|
| Node* InterpreterAssembler::Advance(int delta) {
|
| - return IntPtrAdd(BytecodeOffset(), Int32Constant(delta));
|
| + return IntPtrAdd(BytecodeOffset(), IntPtrConstant(delta));
|
| }
|
|
|
| Node* InterpreterAssembler::Advance(Node* delta) {
|
| @@ -444,12 +437,15 @@ void InterpreterAssembler::Dispatch() {
|
| void InterpreterAssembler::DispatchTo(Node* new_bytecode_offset) {
|
| Node* target_bytecode = Load(
|
| MachineType::Uint8(), BytecodeArrayTaggedPointer(), new_bytecode_offset);
|
| + if (kPointerSize == 8) {
|
| + target_bytecode = ChangeUint32ToUint64(target_bytecode);
|
| + }
|
|
|
| // TODO(rmcilroy): Create a code target dispatch table to avoid conversion
|
| // from code object on every dispatch.
|
| Node* target_code_object =
|
| Load(MachineType::Pointer(), DispatchTableRawPointer(),
|
| - Word32Shl(target_bytecode, Int32Constant(kPointerSizeLog2)));
|
| + WordShl(target_bytecode, IntPtrConstant(kPointerSizeLog2)));
|
|
|
| DispatchToBytecodeHandler(target_code_object, new_bytecode_offset);
|
| }
|
|
|