1b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Copyright 2014 the V8 project authors. All rights reserved. 2b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// found in the LICENSE file. 4b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 5b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#ifndef V8_COMPILER_INSTRUCTION_CODES_H_ 6b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define V8_COMPILER_INSTRUCTION_CODES_H_ 7b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 8958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#include <iosfwd> 9958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 10b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#if V8_TARGET_ARCH_ARM 11b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include "src/compiler/arm/instruction-codes-arm.h" 12b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#elif V8_TARGET_ARCH_ARM64 13b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include "src/compiler/arm64/instruction-codes-arm64.h" 14b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#elif V8_TARGET_ARCH_IA32 15b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include "src/compiler/ia32/instruction-codes-ia32.h" 16958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#elif V8_TARGET_ARCH_MIPS 17958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#include "src/compiler/mips/instruction-codes-mips.h" 18958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#elif V8_TARGET_ARCH_MIPS64 19958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#include "src/compiler/mips64/instruction-codes-mips64.h" 20b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#elif V8_TARGET_ARCH_X64 21b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include "src/compiler/x64/instruction-codes-x64.h" 22014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch#elif V8_TARGET_ARCH_PPC 23014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch#include "src/compiler/ppc/instruction-codes-ppc.h" 241b268ca467c924004286c97bac133db489cf43d0Ben Murdoch#elif V8_TARGET_ARCH_S390 251b268ca467c924004286c97bac133db489cf43d0Ben Murdoch#include "src/compiler/s390/instruction-codes-s390.h" 26014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch#elif V8_TARGET_ARCH_X87 27014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch#include "src/compiler/x87/instruction-codes-x87.h" 28b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#else 29b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define TARGET_ARCH_OPCODE_LIST(V) 30b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define TARGET_ADDRESSING_MODE_LIST(V) 31b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#endif 32b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include "src/utils.h" 33b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 34b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochnamespace v8 { 35b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochnamespace internal { 36b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochnamespace compiler { 37b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 38014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// Modes for ArchStoreWithWriteBarrier below. 39014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochenum class RecordWriteMode { kValueIsMap, kValueIsPointer, kValueIsAny }; 40014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 41014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 42b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Target-specific opcodes that specify which assembly sequence to emit. 43b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Most opcodes specify a single instruction. 441b268ca467c924004286c97bac133db489cf43d0Ben Murdoch#define COMMON_ARCH_OPCODE_LIST(V) \ 451b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(ArchCallCodeObject) \ 461b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(ArchTailCallCodeObjectFromJSFunction) \ 471b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(ArchTailCallCodeObject) \ 481b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(ArchCallJSFunction) \ 491b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(ArchTailCallJSFunctionFromJSFunction) \ 501b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(ArchTailCallJSFunction) \ 51537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch V(ArchTailCallAddress) \ 521b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(ArchPrepareCallCFunction) \ 531b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(ArchCallCFunction) \ 541b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(ArchPrepareTailCall) \ 551b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(ArchJmp) \ 561b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(ArchLookupSwitch) \ 571b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(ArchTableSwitch) \ 581b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(ArchNop) \ 5921efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch V(ArchDebugBreak) \ 6021efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch V(ArchComment) \ 611b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(ArchThrowTerminator) \ 621b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(ArchDeoptimize) \ 631b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(ArchRet) \ 641b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(ArchStackPointer) \ 651b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(ArchFramePointer) \ 661b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(ArchParentFramePointer) \ 671b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(ArchTruncateDoubleToI) \ 681b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(ArchStoreWithWriteBarrier) \ 691b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(CheckedLoadInt8) \ 701b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(CheckedLoadUint8) \ 711b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(CheckedLoadInt16) \ 721b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(CheckedLoadUint16) \ 731b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(CheckedLoadWord32) \ 741b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(CheckedLoadWord64) \ 751b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(CheckedLoadFloat32) \ 761b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(CheckedLoadFloat64) \ 771b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(CheckedStoreWord8) \ 781b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(CheckedStoreWord16) \ 791b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(CheckedStoreWord32) \ 801b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(CheckedStoreWord64) \ 811b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(CheckedStoreFloat32) \ 821b268ca467c924004286c97bac133db489cf43d0Ben Murdoch V(CheckedStoreFloat64) \ 83537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch V(ArchStackSlot) \ 84537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch V(AtomicLoadInt8) \ 85537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch V(AtomicLoadUint8) \ 86537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch V(AtomicLoadInt16) \ 87537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch V(AtomicLoadUint16) \ 88537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch V(AtomicLoadWord32) \ 89537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch V(AtomicStoreWord8) \ 90537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch V(AtomicStoreWord16) \ 9121efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch V(AtomicStoreWord32) \ 9221efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch V(Ieee754Float64Atan) \ 9321efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch V(Ieee754Float64Atan2) \ 9421efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch V(Ieee754Float64Atanh) \ 9521efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch V(Ieee754Float64Cbrt) \ 9621efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch V(Ieee754Float64Cos) \ 9721efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch V(Ieee754Float64Exp) \ 9821efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch V(Ieee754Float64Expm1) \ 9921efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch V(Ieee754Float64Log) \ 10021efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch V(Ieee754Float64Log1p) \ 10121efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch V(Ieee754Float64Log10) \ 10221efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch V(Ieee754Float64Log2) \ 10321efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch V(Ieee754Float64Sin) \ 10421efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch V(Ieee754Float64Tan) 105014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 106014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch#define ARCH_OPCODE_LIST(V) \ 107014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch COMMON_ARCH_OPCODE_LIST(V) \ 108b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch TARGET_ARCH_OPCODE_LIST(V) 109b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 110b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochenum ArchOpcode { 111b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define DECLARE_ARCH_OPCODE(Name) k##Name, 112b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ARCH_OPCODE_LIST(DECLARE_ARCH_OPCODE) 113b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#undef DECLARE_ARCH_OPCODE 114b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define COUNT_ARCH_OPCODE(Name) +1 115b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch kLastArchOpcode = -1 ARCH_OPCODE_LIST(COUNT_ARCH_OPCODE) 116b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#undef COUNT_ARCH_OPCODE 117b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}; 118b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 119958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierstd::ostream& operator<<(std::ostream& os, const ArchOpcode& ao); 120b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 121b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Addressing modes represent the "shape" of inputs to an instruction. 122b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Many instructions support multiple addressing modes. Addressing modes 123b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// are encoded into the InstructionCode of the instruction and tell the 124b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// code generator after register allocation which assembler method to call. 125b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define ADDRESSING_MODE_LIST(V) \ 126b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch V(None) \ 127b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch TARGET_ADDRESSING_MODE_LIST(V) 128b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 129b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochenum AddressingMode { 130b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define DECLARE_ADDRESSING_MODE(Name) kMode_##Name, 131b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ADDRESSING_MODE_LIST(DECLARE_ADDRESSING_MODE) 132b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#undef DECLARE_ADDRESSING_MODE 133b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define COUNT_ADDRESSING_MODE(Name) +1 134b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch kLastAddressingMode = -1 ADDRESSING_MODE_LIST(COUNT_ADDRESSING_MODE) 135b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#undef COUNT_ADDRESSING_MODE 136b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}; 137b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 138958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierstd::ostream& operator<<(std::ostream& os, const AddressingMode& am); 139b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 140b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// The mode of the flags continuation (see below). 1411b268ca467c924004286c97bac133db489cf43d0Ben Murdochenum FlagsMode { 1421b268ca467c924004286c97bac133db489cf43d0Ben Murdoch kFlags_none = 0, 1431b268ca467c924004286c97bac133db489cf43d0Ben Murdoch kFlags_branch = 1, 1441b268ca467c924004286c97bac133db489cf43d0Ben Murdoch kFlags_deoptimize = 2, 1451b268ca467c924004286c97bac133db489cf43d0Ben Murdoch kFlags_set = 3 1461b268ca467c924004286c97bac133db489cf43d0Ben Murdoch}; 147b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 148958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierstd::ostream& operator<<(std::ostream& os, const FlagsMode& fm); 149b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 150b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// The condition of flags continuation (see below). 151b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochenum FlagsCondition { 152b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch kEqual, 153b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch kNotEqual, 154b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch kSignedLessThan, 155b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch kSignedGreaterThanOrEqual, 156b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch kSignedLessThanOrEqual, 157b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch kSignedGreaterThan, 158b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch kUnsignedLessThan, 159b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch kUnsignedGreaterThanOrEqual, 160b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch kUnsignedLessThanOrEqual, 161b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch kUnsignedGreaterThan, 162014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch kFloatLessThanOrUnordered, 163014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch kFloatGreaterThanOrEqual, 164014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch kFloatLessThanOrEqual, 165014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch kFloatGreaterThanOrUnordered, 166014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch kFloatLessThan, 167014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch kFloatGreaterThanOrEqualOrUnordered, 168014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch kFloatLessThanOrEqualOrUnordered, 169014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch kFloatGreaterThan, 170b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch kUnorderedEqual, 171b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch kUnorderedNotEqual, 172b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch kOverflow, 173b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch kNotOverflow 174b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}; 175b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 176958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierinline FlagsCondition NegateFlagsCondition(FlagsCondition condition) { 177958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier return static_cast<FlagsCondition>(condition ^ 1); 178958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier} 179958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 180014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben MurdochFlagsCondition CommuteFlagsCondition(FlagsCondition condition); 181014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 182958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierstd::ostream& operator<<(std::ostream& os, const FlagsCondition& fc); 183b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 184b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// The InstructionCode is an opaque, target-specific integer that encodes 185b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// what code to emit for an instruction in the code generator. It is not 186b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// interesting to the register allocator, as the inputs and flags on the 187b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// instructions specify everything of interest. 188b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochtypedef int32_t InstructionCode; 189b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 190b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Helpers for encoding / decoding InstructionCode into the fields needed 191b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// for code generation. We encode the instruction, addressing mode, and flags 192b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// continuation into a single InstructionCode which is stored as part of 193b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// the instruction. 194014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochtypedef BitField<ArchOpcode, 0, 8> ArchOpcodeField; 195014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochtypedef BitField<AddressingMode, 8, 5> AddressingModeField; 196014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochtypedef BitField<FlagsMode, 13, 2> FlagsModeField; 197014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochtypedef BitField<FlagsCondition, 15, 5> FlagsConditionField; 198014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochtypedef BitField<int, 20, 12> MiscField; 199b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 200b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch} // namespace compiler 201b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch} // namespace internal 202b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch} // namespace v8 203b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 204b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#endif // V8_COMPILER_INSTRUCTION_CODES_H_ 205