Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(92)

Unified Diff: src/compiler/instruction-codes.h

Issue 1375253002: [WIP][turbofan] Instruction scheduler for Turbofan. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/compiler/instruction-codes.h
diff --git a/src/compiler/instruction-codes.h b/src/compiler/instruction-codes.h
index cb47be64467ddd1f9f13639fbb567b1799c1cb7a..ee3655735b2477cf3f46d1cfc0daea558e9ad17e 100644
--- a/src/compiler/instruction-codes.h
+++ b/src/compiler/instruction-codes.h
@@ -33,45 +33,55 @@ namespace v8 {
namespace internal {
namespace compiler {
+// A set of flags describing some properties of the instructions.
+enum ArchOpcodeFlags {
+ kNoOpcodeFlags = 0,
+ kIsBlockTerminator = 1, // The instruction marks the end of a basic block
+ // e.g.: jump and return instructions.
+ kHasSideEffect = 2, // The instruction has some side effects (memory
+ // store, function call...)
+ kIsLoadOperation = 4, // The instruction is a memory load.
+};
+
// Target-specific opcodes that specify which assembly sequence to emit.
// Most opcodes specify a single instruction.
-#define ARCH_OPCODE_LIST(V) \
- V(ArchCallCodeObject) \
- V(ArchTailCallCodeObject) \
- V(ArchCallJSFunction) \
- V(ArchTailCallJSFunction) \
- V(ArchPrepareCallCFunction) \
- V(ArchCallCFunction) \
- V(ArchJmp) \
- V(ArchLookupSwitch) \
- V(ArchTableSwitch) \
- V(ArchNop) \
- V(ArchDeoptimize) \
- V(ArchRet) \
- V(ArchStackPointer) \
- V(ArchFramePointer) \
- V(ArchTruncateDoubleToI) \
- V(CheckedLoadInt8) \
- V(CheckedLoadUint8) \
- V(CheckedLoadInt16) \
- V(CheckedLoadUint16) \
- V(CheckedLoadWord32) \
- V(CheckedLoadWord64) \
- V(CheckedLoadFloat32) \
- V(CheckedLoadFloat64) \
- V(CheckedStoreWord8) \
- V(CheckedStoreWord16) \
- V(CheckedStoreWord32) \
- V(CheckedStoreWord64) \
- V(CheckedStoreFloat32) \
- V(CheckedStoreFloat64) \
+#define ARCH_OPCODE_LIST(V) \
+ V(ArchCallCodeObject, kHasSideEffect) \
+ V(ArchTailCallCodeObject, kHasSideEffect | kIsBlockTerminator) \
+ V(ArchCallJSFunction, kHasSideEffect) \
+ V(ArchTailCallJSFunction, kHasSideEffect | kIsBlockTerminator) \
+ V(ArchPrepareCallCFunction, kHasSideEffect) \
+ V(ArchCallCFunction, kHasSideEffect) \
+ V(ArchJmp, kIsBlockTerminator) \
+ V(ArchLookupSwitch, kIsBlockTerminator) \
+ V(ArchTableSwitch, kIsBlockTerminator) \
+ V(ArchNop, kNoOpcodeFlags) \
+ V(ArchDeoptimize, kNoOpcodeFlags) \
+ V(ArchRet, kIsBlockTerminator) \
+ V(ArchStackPointer, kNoOpcodeFlags) \
+ V(ArchFramePointer, kNoOpcodeFlags) \
+ V(ArchTruncateDoubleToI, kNoOpcodeFlags) \
+ V(CheckedLoadInt8, kIsLoadOperation) \
+ V(CheckedLoadUint8, kIsLoadOperation) \
+ V(CheckedLoadInt16, kIsLoadOperation) \
+ V(CheckedLoadUint16, kIsLoadOperation) \
+ V(CheckedLoadWord32, kIsLoadOperation) \
+ V(CheckedLoadWord64, kIsLoadOperation) \
+ V(CheckedLoadFloat32, kIsLoadOperation) \
+ V(CheckedLoadFloat64, kIsLoadOperation) \
+ V(CheckedStoreWord8, kHasSideEffect) \
+ V(CheckedStoreWord16, kHasSideEffect) \
+ V(CheckedStoreWord32, kHasSideEffect) \
+ V(CheckedStoreWord64, kHasSideEffect) \
+ V(CheckedStoreFloat32, kHasSideEffect) \
+ V(CheckedStoreFloat64, kHasSideEffect) \
TARGET_ARCH_OPCODE_LIST(V)
enum ArchOpcode {
-#define DECLARE_ARCH_OPCODE(Name) k##Name,
+#define DECLARE_ARCH_OPCODE(Name, Flags) k##Name,
ARCH_OPCODE_LIST(DECLARE_ARCH_OPCODE)
#undef DECLARE_ARCH_OPCODE
-#define COUNT_ARCH_OPCODE(Name) +1
+#define COUNT_ARCH_OPCODE(Name, Flags) +1
kLastArchOpcode = -1 ARCH_OPCODE_LIST(COUNT_ARCH_OPCODE)
#undef COUNT_ARCH_OPCODE
};

Powered by Google App Engine
This is Rietveld 408576698