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

Side by Side Diff: src/interpreter/bytecodes.h

Issue 2489513005: [Interpreter] Remove all Ldr style bytecodes and replace with Star lookahead. (Closed)
Patch Set: Created 4 years, 1 month 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 unified diff | Download patch
« no previous file with comments | « src/interpreter/bytecode-peephole-table.h ('k') | src/interpreter/bytecodes.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_INTERPRETER_BYTECODES_H_ 5 #ifndef V8_INTERPRETER_BYTECODES_H_
6 #define V8_INTERPRETER_BYTECODES_H_ 6 #define V8_INTERPRETER_BYTECODES_H_
7 7
8 #include <cstdint> 8 #include <cstdint>
9 #include <iosfwd> 9 #include <iosfwd>
10 #include <string> 10 #include <string>
(...skipping 19 matching lines...) Expand all
30 /* Loading the accumulator */ \ 30 /* Loading the accumulator */ \
31 V(LdaZero, AccumulatorUse::kWrite) \ 31 V(LdaZero, AccumulatorUse::kWrite) \
32 V(LdaSmi, AccumulatorUse::kWrite, OperandType::kImm) \ 32 V(LdaSmi, AccumulatorUse::kWrite, OperandType::kImm) \
33 V(LdaUndefined, AccumulatorUse::kWrite) \ 33 V(LdaUndefined, AccumulatorUse::kWrite) \
34 V(LdaNull, AccumulatorUse::kWrite) \ 34 V(LdaNull, AccumulatorUse::kWrite) \
35 V(LdaTheHole, AccumulatorUse::kWrite) \ 35 V(LdaTheHole, AccumulatorUse::kWrite) \
36 V(LdaTrue, AccumulatorUse::kWrite) \ 36 V(LdaTrue, AccumulatorUse::kWrite) \
37 V(LdaFalse, AccumulatorUse::kWrite) \ 37 V(LdaFalse, AccumulatorUse::kWrite) \
38 V(LdaConstant, AccumulatorUse::kWrite, OperandType::kIdx) \ 38 V(LdaConstant, AccumulatorUse::kWrite, OperandType::kIdx) \
39 \ 39 \
40 /* Loading registers */ \
41 V(LdrUndefined, AccumulatorUse::kNone, OperandType::kRegOut) \
42 \
43 /* Globals */ \ 40 /* Globals */ \
44 V(LdaGlobal, AccumulatorUse::kWrite, OperandType::kIdx) \ 41 V(LdaGlobal, AccumulatorUse::kWrite, OperandType::kIdx) \
45 V(LdrGlobal, AccumulatorUse::kNone, OperandType::kIdx, OperandType::kRegOut) \
46 V(LdaGlobalInsideTypeof, AccumulatorUse::kWrite, OperandType::kIdx) \ 42 V(LdaGlobalInsideTypeof, AccumulatorUse::kWrite, OperandType::kIdx) \
47 V(StaGlobalSloppy, AccumulatorUse::kRead, OperandType::kIdx, \ 43 V(StaGlobalSloppy, AccumulatorUse::kRead, OperandType::kIdx, \
48 OperandType::kIdx) \ 44 OperandType::kIdx) \
49 V(StaGlobalStrict, AccumulatorUse::kRead, OperandType::kIdx, \ 45 V(StaGlobalStrict, AccumulatorUse::kRead, OperandType::kIdx, \
50 OperandType::kIdx) \ 46 OperandType::kIdx) \
51 \ 47 \
52 /* Context operations */ \ 48 /* Context operations */ \
53 V(PushContext, AccumulatorUse::kRead, OperandType::kRegOut) \ 49 V(PushContext, AccumulatorUse::kRead, OperandType::kRegOut) \
54 V(PopContext, AccumulatorUse::kNone, OperandType::kReg) \ 50 V(PopContext, AccumulatorUse::kNone, OperandType::kReg) \
55 V(LdaContextSlot, AccumulatorUse::kWrite, OperandType::kReg, \ 51 V(LdaContextSlot, AccumulatorUse::kWrite, OperandType::kReg, \
56 OperandType::kIdx, OperandType::kUImm) \ 52 OperandType::kIdx, OperandType::kUImm) \
57 V(LdaCurrentContextSlot, AccumulatorUse::kWrite, OperandType::kIdx) \ 53 V(LdaCurrentContextSlot, AccumulatorUse::kWrite, OperandType::kIdx) \
58 V(LdrContextSlot, AccumulatorUse::kNone, OperandType::kReg, \
59 OperandType::kIdx, OperandType::kUImm, OperandType::kRegOut) \
60 V(LdrCurrentContextSlot, AccumulatorUse::kNone, OperandType::kIdx, \
61 OperandType::kRegOut) \
62 V(StaContextSlot, AccumulatorUse::kRead, OperandType::kReg, \ 54 V(StaContextSlot, AccumulatorUse::kRead, OperandType::kReg, \
63 OperandType::kIdx, OperandType::kUImm) \ 55 OperandType::kIdx, OperandType::kUImm) \
64 V(StaCurrentContextSlot, AccumulatorUse::kRead, OperandType::kIdx) \ 56 V(StaCurrentContextSlot, AccumulatorUse::kRead, OperandType::kIdx) \
65 \ 57 \
66 /* Load-Store lookup slots */ \ 58 /* Load-Store lookup slots */ \
67 V(LdaLookupSlot, AccumulatorUse::kWrite, OperandType::kIdx) \ 59 V(LdaLookupSlot, AccumulatorUse::kWrite, OperandType::kIdx) \
68 V(LdaLookupContextSlot, AccumulatorUse::kWrite, OperandType::kIdx, \ 60 V(LdaLookupContextSlot, AccumulatorUse::kWrite, OperandType::kIdx, \
69 OperandType::kIdx, OperandType::kUImm) \ 61 OperandType::kIdx, OperandType::kUImm) \
70 V(LdaLookupGlobalSlot, AccumulatorUse::kWrite, OperandType::kIdx, \ 62 V(LdaLookupGlobalSlot, AccumulatorUse::kWrite, OperandType::kIdx, \
71 OperandType::kIdx, OperandType::kUImm) \ 63 OperandType::kIdx, OperandType::kUImm) \
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 } 415 }
424 416
425 // Return true if |bytecode| is an accumulator load without effects, 417 // Return true if |bytecode| is an accumulator load without effects,
426 // e.g. LdaConstant, LdaTrue, Ldar. 418 // e.g. LdaConstant, LdaTrue, Ldar.
427 static CONSTEXPR bool IsAccumulatorLoadWithoutEffects(Bytecode bytecode) { 419 static CONSTEXPR bool IsAccumulatorLoadWithoutEffects(Bytecode bytecode) {
428 return bytecode == Bytecode::kLdar || bytecode == Bytecode::kLdaZero || 420 return bytecode == Bytecode::kLdar || bytecode == Bytecode::kLdaZero ||
429 bytecode == Bytecode::kLdaSmi || bytecode == Bytecode::kLdaNull || 421 bytecode == Bytecode::kLdaSmi || bytecode == Bytecode::kLdaNull ||
430 bytecode == Bytecode::kLdaTrue || bytecode == Bytecode::kLdaFalse || 422 bytecode == Bytecode::kLdaTrue || bytecode == Bytecode::kLdaFalse ||
431 bytecode == Bytecode::kLdaUndefined || 423 bytecode == Bytecode::kLdaUndefined ||
432 bytecode == Bytecode::kLdaTheHole || 424 bytecode == Bytecode::kLdaTheHole ||
433 bytecode == Bytecode::kLdaConstant; 425 bytecode == Bytecode::kLdaConstant ||
426 bytecode == Bytecode::kLdaContextSlot ||
427 bytecode == Bytecode::kLdaCurrentContextSlot;
434 } 428 }
435 429
436 // Return true if |bytecode| is a register load without effects, 430 // Return true if |bytecode| is a register load without effects,
437 // e.g. Mov, Star, LdrUndefined. 431 // e.g. Mov, Star.
438 static CONSTEXPR bool IsRegisterLoadWithoutEffects(Bytecode bytecode) { 432 static CONSTEXPR bool IsRegisterLoadWithoutEffects(Bytecode bytecode) {
439 return bytecode == Bytecode::kMov || bytecode == Bytecode::kPopContext || 433 return bytecode == Bytecode::kMov || bytecode == Bytecode::kPopContext ||
440 bytecode == Bytecode::kPushContext || bytecode == Bytecode::kStar || 434 bytecode == Bytecode::kPushContext || bytecode == Bytecode::kStar;
441 bytecode == Bytecode::kLdrUndefined;
442 } 435 }
443 436
444 // Returns true if the bytecode is a conditional jump taking 437 // Returns true if the bytecode is a conditional jump taking
445 // an immediate byte operand (OperandType::kImm). 438 // an immediate byte operand (OperandType::kImm).
446 static CONSTEXPR bool IsConditionalJumpImmediate(Bytecode bytecode) { 439 static CONSTEXPR bool IsConditionalJumpImmediate(Bytecode bytecode) {
447 return bytecode == Bytecode::kJumpIfTrue || 440 return bytecode == Bytecode::kJumpIfTrue ||
448 bytecode == Bytecode::kJumpIfFalse || 441 bytecode == Bytecode::kJumpIfFalse ||
449 bytecode == Bytecode::kJumpIfToBooleanTrue || 442 bytecode == Bytecode::kJumpIfToBooleanTrue ||
450 bytecode == Bytecode::kJumpIfToBooleanFalse || 443 bytecode == Bytecode::kJumpIfToBooleanFalse ||
451 bytecode == Bytecode::kJumpIfNotHole || 444 bytecode == Bytecode::kJumpIfNotHole ||
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
742 #undef CONSTEXPR 735 #undef CONSTEXPR
743 736
744 V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os, 737 V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
745 const Bytecode& bytecode); 738 const Bytecode& bytecode);
746 739
747 } // namespace interpreter 740 } // namespace interpreter
748 } // namespace internal 741 } // namespace internal
749 } // namespace v8 742 } // namespace v8
750 743
751 #endif // V8_INTERPRETER_BYTECODES_H_ 744 #endif // V8_INTERPRETER_BYTECODES_H_
OLDNEW
« no previous file with comments | « src/interpreter/bytecode-peephole-table.h ('k') | src/interpreter/bytecodes.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698