v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
simulator-s390.h
Go to the documentation of this file.
1// Copyright 2014 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef V8_EXECUTION_S390_SIMULATOR_S390_H_
6#define V8_EXECUTION_S390_SIMULATOR_S390_H_
7
8// Declares a Simulator for S390 instructions if we are not generating a native
9// S390 binary. This Simulator allows us to run and debug S390 code generation
10// on regular desktop machines.
11// V8 calls into generated code via the GeneratedCode wrapper,
12// which will start execution in the Simulator or forwards to the real entry
13// on a S390 hardware platform.
14
15// globals.h defines USE_SIMULATOR.
16#include "src/common/globals.h"
17
18#if defined(USE_SIMULATOR)
19// Running with a simulator.
20
21#include "src/base/hashmap.h"
26
27namespace heap::base {
28class StackVisitor;
29}
30
31namespace v8 {
32namespace internal {
33
34class CachePage {
35 public:
36 static const int LINE_VALID = 0;
37 static const int LINE_INVALID = 1;
38
39 static const int kPageShift = 12;
40 static const int kPageSize = 1 << kPageShift;
41 static const int kPageMask = kPageSize - 1;
42 static const int kLineShift = 2; // The cache line is only 4 bytes right now.
43 static const int kLineLength = 1 << kLineShift;
44 static const int kLineMask = kLineLength - 1;
45
46 CachePage() { memset(&validity_map_, LINE_INVALID, sizeof(validity_map_)); }
47
48 char* ValidityByte(int offset) {
49 return &validity_map_[offset >> kLineShift];
50 }
51
52 char* CachedData(int offset) { return &data_[offset]; }
53
54 private:
55 char data_[kPageSize]; // The cached data.
56 static const int kValidityMapSize = kPageSize >> kLineShift;
57 char validity_map_[kValidityMapSize]; // One byte per line.
58};
59
60template <class T>
61static T ComputeRounding(T a, int mode) {
62 switch (mode) {
64 return std::round(a);
66 return std::nearbyint(a);
67 case ROUND_TOWARD_0:
68 return std::trunc(a);
70 return std::ceil(a);
72 return std::floor(a);
73 default:
75 }
76 return 0;
77}
78
79class Simulator : public SimulatorBase {
80 public:
81 friend class S390Debugger;
82 enum Register {
83 no_reg = -1,
84 r0 = 0,
85 r1 = 1,
86 r2 = 2,
87 r3 = 3,
88 r4 = 4,
89 r5 = 5,
90 r6 = 6,
91 r7 = 7,
92 r8 = 8,
93 r9 = 9,
94 r10 = 10,
95 r11 = 11,
96 r12 = 12,
97 r13 = 13,
98 r14 = 14,
99 r15 = 15,
100 fp = r11,
101 ip = r12,
102 cp = r13,
103 ra = r14,
104 sp = r15, // name aliases
105 kNumGPRs = 16,
106 d0 = 0,
107 d1,
108 d2,
109 d3,
110 d4,
111 d5,
112 d6,
113 d7,
114 d8,
115 d9,
116 d10,
117 d11,
118 d12,
119 d13,
120 d14,
121 d15,
122 kNumFPRs = 16
123 };
124
125 explicit Simulator(Isolate* isolate);
126 ~Simulator();
127
128 // The currently executing Simulator instance. Potentially there can be one
129 // for each native thread.
130 static Simulator* current(v8::internal::Isolate* isolate);
131
132 // Accessors for register state.
133 void set_register(int reg, uint64_t value);
134 const uint64_t& get_register(int reg) const;
135 uint64_t& get_register(int reg);
136 template <typename T>
137 T get_low_register(int reg) const;
138 template <typename T>
139 T get_high_register(int reg) const;
140 void set_low_register(int reg, uint32_t value);
141 void set_high_register(int reg, uint32_t value);
142
143 double get_double_from_register_pair(int reg);
144
145 // Unlike Integer values, Floating Point values are located on the left most
146 // side of a native 64 bit register. As FP registers are a subset of vector
147 // registers, 64 and 32 bit FP values need to be located on first lane (lane
148 // number 0) of a vector register.
149 template <class T>
150 T get_fpr(int dreg) {
151 DCHECK(dreg >= 0 && dreg < kNumFPRs);
152 return get_simd_register_by_lane<T>(dreg, 0);
153 }
154
155 template <class T>
156 void set_fpr(int dreg, const T val) {
157 DCHECK(dreg >= 0 && dreg < kNumFPRs);
158 set_simd_register_by_lane<T>(dreg, 0, val);
159 }
160
161 // Special case of set_register and get_register to access the raw PC value.
162 void set_pc(intptr_t value);
163 intptr_t get_pc() const;
164
165 Address get_sp() const { return static_cast<Address>(get_register(sp)); }
166
167 // Accessor to the internal simulator stack area. Adds a safety
168 // margin to prevent overflows.
169 uintptr_t StackLimit(uintptr_t c_limit) const;
170
171 uintptr_t StackBase() const;
172
173 // Return central stack view, without additional safety margins.
174 // Users, for example wasm::StackMemory, can add their own.
175 base::Vector<uint8_t> GetCentralStackView() const;
176 static constexpr int JSStackLimitMargin() { return kStackProtectionSize; }
177
178 void IterateRegistersAndStack(::heap::base::StackVisitor* visitor);
179
180 // Executes S390 instructions until the PC reaches end_sim_pc.
181 void Execute();
182
183 template <typename Return, typename... Args>
184 Return Call(Address entry, Args... args) {
185 return VariadicCall<Return>(this, &Simulator::CallImpl, entry, args...);
186 }
187
188 // Alternative: call a 2-argument double function.
189 void CallFP(Address entry, double d0, double d1);
190 int32_t CallFPReturnsInt(Address entry, double d0, double d1);
191 double CallFPReturnsDouble(Address entry, double d0, double d1);
192
193 // Push an address onto the JS stack.
194 V8_EXPORT_PRIVATE uintptr_t PushAddress(uintptr_t address);
195
196 // Pop an address from the JS stack.
197 V8_EXPORT_PRIVATE uintptr_t PopAddress();
198
199 // Debugger input.
200 void set_last_debugger_input(char* input);
201 char* last_debugger_input() { return last_debugger_input_; }
202
203 // Redirection support.
204 static void SetRedirectInstruction(Instruction* instruction);
205
206 // ICache checking.
207 static bool ICacheMatch(void* one, void* two);
208 static void FlushICache(base::CustomMatcherHashMap* i_cache, void* start,
209 size_t size);
210
211 // Returns true if pc register contains one of the 'special_values' defined
212 // below (bad_lr, end_sim_pc).
213 bool has_bad_pc() const;
214
215 // Manage instruction tracing.
216 bool InstructionTracingEnabled();
217
218 void ToggleInstructionTracing();
219
220 enum special_values {
221 // Known bad pc value to ensure that the simulator does not execute
222 // without being properly setup.
223 bad_lr = -1,
224 // A pc value used to signal the simulator to stop execution. Generally
225 // the lr is set to this value on transition from native C code to
226 // simulated execution, so that the simulator can "return" to the native
227 // C code.
228 end_sim_pc = -2
229 };
230
231 intptr_t CallImpl(Address entry, int argument_count,
232 const intptr_t* arguments);
233
234 // Unsupported instructions use Format to print an error and stop execution.
235 void Format(Instruction* instr, const char* format);
236
237 // Helper functions to set the conditional flags in the architecture state.
238 bool CarryFrom(int32_t left, int32_t right, int32_t carry = 0);
239 bool BorrowFrom(int32_t left, int32_t right);
240 template <typename T1>
241 inline bool OverflowFromSigned(T1 alu_out, T1 left, T1 right, bool addition);
242
243 // Helper functions to decode common "addressing" modes
244 int32_t GetShiftRm(Instruction* instr, bool* carry_out);
245 int32_t GetImm(Instruction* instr, bool* carry_out);
246 void ProcessPUW(Instruction* instr, int num_regs, int operand_size,
247 intptr_t* start_address, intptr_t* end_address);
248 void HandleRList(Instruction* instr, bool load);
249 void HandleVList(Instruction* inst);
250 void SoftwareInterrupt(Instruction* instr);
251 void DebugAtNextPC();
252
253 // Take a copy of v8 simulator tracing flag because flags are frozen after
254 // start.
255 bool instruction_tracing_ = v8_flags.trace_sim;
256
257 // Stop helper functions.
258 inline bool isStopInstruction(Instruction* instr);
259 inline bool isWatchedStop(uint32_t bkpt_code);
260 inline bool isEnabledStop(uint32_t bkpt_code);
261 inline void EnableStop(uint32_t bkpt_code);
262 inline void DisableStop(uint32_t bkpt_code);
263 inline void IncreaseStopCounter(uint32_t bkpt_code);
264 void PrintStopInfo(uint32_t code);
265
266 // Read and write memory.
267 inline uint8_t ReadBU(intptr_t addr);
268 inline int8_t ReadB(intptr_t addr);
269 inline void WriteB(intptr_t addr, uint8_t value);
270 inline void WriteB(intptr_t addr, int8_t value);
271
272 inline uint16_t ReadHU(intptr_t addr);
273 inline int16_t ReadH(intptr_t addr);
274 // Note: Overloaded on the sign of the value.
275 inline void WriteH(intptr_t addr, uint16_t value);
276 inline void WriteH(intptr_t addr, int16_t value);
277
278 inline uint32_t ReadWU(intptr_t addr);
279 inline int32_t ReadW(intptr_t addr);
280 inline int64_t ReadW64(intptr_t addr);
281 inline void WriteW(intptr_t addr, uint32_t value);
282 inline void WriteW(intptr_t addr, int32_t value);
283
284 inline int64_t ReadDW(intptr_t addr);
285 inline double ReadDouble(intptr_t addr);
286 inline float ReadFloat(intptr_t addr);
287 inline void WriteDW(intptr_t addr, int64_t value);
288
289 // S390
290 void Trace(Instruction* instr);
291
292 template <typename T>
293 void SetS390ConditionCode(T lhs, T rhs) {
294 condition_reg_ = 0;
295 if (lhs == rhs) {
296 condition_reg_ |= CC_EQ;
297 } else if (lhs < rhs) {
298 condition_reg_ |= CC_LT;
299 } else if (lhs > rhs) {
300 condition_reg_ |= CC_GT;
301 }
302
303 // We get down here only for floating point
304 // comparisons and the values are unordered
305 // i.e. NaN
306 if (condition_reg_ == 0) condition_reg_ = unordered;
307 }
308
309 // Used by arithmetic operations that use carry.
310 template <typename T>
311 void SetS390ConditionCodeCarry(T result, bool overflow) {
312 condition_reg_ = 0;
313 bool zero_result = (result == static_cast<T>(0));
314 if (zero_result && !overflow) {
315 condition_reg_ |= 8;
316 } else if (!zero_result && !overflow) {
317 condition_reg_ |= 4;
318 } else if (zero_result && overflow) {
319 condition_reg_ |= 2;
320 } else if (!zero_result && overflow) {
321 condition_reg_ |= 1;
322 }
323 if (condition_reg_ == 0) UNREACHABLE();
324 }
325
326 bool isNaN(double value) { return (value != value); }
327
328 // Set the condition code for bitwise operations
329 // CC0 is set if value == 0.
330 // CC1 is set if value != 0.
331 // CC2/CC3 are not set.
332 template <typename T>
333 void SetS390BitWiseConditionCode(T value) {
334 condition_reg_ = 0;
335
336 if (value == 0)
337 condition_reg_ |= CC_EQ;
338 else
339 condition_reg_ |= CC_LT;
340 }
341
342 void SetS390OverflowCode(bool isOF) {
343 if (isOF) condition_reg_ = CC_OF;
344 }
345
346 bool TestConditionCode(Condition mask) {
347 // Check for unconditional branch
348 if (mask == 0xf) return true;
349
350 return (condition_reg_ & mask) != 0;
351 }
352
353 // Executes one instruction.
354 void ExecuteInstruction(Instruction* instr, bool auto_incr_pc = true);
355
356 // ICache.
357 static void CheckICache(base::CustomMatcherHashMap* i_cache,
358 Instruction* instr);
359 static void FlushOnePage(base::CustomMatcherHashMap* i_cache, intptr_t start,
360 int size);
361 static CachePage* GetCachePage(base::CustomMatcherHashMap* i_cache,
362 void* page);
363
364 // Handle arguments and return value for runtime FP functions.
365 void GetFpArgs(double* x, double* y, intptr_t* z);
366 void SetFpResult(const double& result);
367 void TrashCallerSaveRegisters();
368
369 void CallInternal(Address entry, int reg_arg_count = 3);
370
371 // Architecture state.
372 // On z9 and higher and supported Linux on z Systems platforms, all registers
373 // are 64-bit, even in 31-bit mode.
374 uint64_t registers_[kNumGPRs];
375 union fpr_t {
376 int8_t int8[16];
377 uint8_t uint8[16];
378 int16_t int16[8];
379 uint16_t uint16[8];
380 int32_t int32[4];
381 uint32_t uint32[4];
382 int64_t int64[2];
383 uint64_t uint64[2];
384 float f32[4];
385 double f64[2];
386 };
387 fpr_t fp_registers_[kNumFPRs];
388
389 static constexpr fpr_t fp_zero = {{0}};
390
391 fpr_t get_simd_register(int reg) { return fp_registers_[reg]; }
392
393 void set_simd_register(int reg, const fpr_t& value) {
394 fp_registers_[reg] = value;
395 }
396
397 // Vector register lane numbers on IBM machines are reversed compared to
398 // x64. For example, doing an I32x4 extract_lane with lane number 0 on x64
399 // will be equal to lane number 3 on IBM machines. Vector registers are only
400 // used for compiling Wasm code at the moment. Wasm is also little endian
401 // enforced. On s390 native, we manually do a reverse byte whenever values are
402 // loaded/stored from memory to a Simd register. On the simulator however, we
403 // do not reverse the bytes and data is just copied as is from one memory
404 // location to another location which represents a register. To keep the Wasm
405 // simulation accurate, we need to make sure accessing a lane is correctly
406 // simulated and as such we reverse the lane number on the getters and setters
407 // below. We need to be careful when getting/setting values on the Low or High
408 // side of a simulated register. In the simulation, "Low" is equal to the MSB
409 // and "High" is equal to the LSB on memory. "force_ibm_lane_numbering" could
410 // be used to disabled automatic lane number reversal and help with accessing
411 // the Low or High side of a simulated register.
412 template <class T>
413 T get_simd_register_by_lane(int reg, int lane,
414 bool force_ibm_lane_numbering = true) {
415 if (force_ibm_lane_numbering) {
416 lane = (kSimd128Size / sizeof(T)) - 1 - lane;
417 }
418 CHECK_LE(lane, kSimd128Size / sizeof(T));
419 CHECK_LT(reg, kNumFPRs);
420 CHECK_GE(lane, 0);
421 CHECK_GE(reg, 0);
422 return (reinterpret_cast<T*>(&fp_registers_[reg]))[lane];
423 }
424
425 template <class T>
426 void set_simd_register_by_lane(int reg, int lane, const T& value,
427 bool force_ibm_lane_numbering = true) {
428 if (force_ibm_lane_numbering) {
429 lane = (kSimd128Size / sizeof(T)) - 1 - lane;
430 }
431 CHECK_LE(lane, kSimd128Size / sizeof(T));
432 CHECK_LT(reg, kNumFPRs);
433 CHECK_GE(lane, 0);
434 CHECK_GE(reg, 0);
435 (reinterpret_cast<T*>(&fp_registers_[reg]))[lane] = value;
436 }
437
438 // Condition Code register. In S390, the last 4 bits are used.
439 int32_t condition_reg_;
440 // Special register to track PC.
441 intptr_t special_reg_pc_;
442
443 // Simulator support for the stack.
444 uint8_t* stack_;
445 static const size_t kStackProtectionSize = 256 * kSystemPointerSize;
446 // This includes a protection margin at each end of the stack area.
447 static size_t AllocatedStackSize() {
448 size_t stack_size = v8_flags.sim_stack_size * KB;
449 return stack_size + (2 * kStackProtectionSize);
450 }
451 static size_t UsableStackSize() {
452 return AllocatedStackSize() - kStackProtectionSize;
453 }
454 bool pc_modified_;
455 int64_t icount_;
456
457 // Debugger input.
458 char* last_debugger_input_;
459
460 // Registered breakpoints.
461 Instruction* break_pc_;
462 Instr break_instr_;
463
465
466 // A stop is watched if its code is less than kNumOfWatchedStops.
467 // Only watched stops support enabling/disabling and the counter feature.
468 static const uint32_t kNumOfWatchedStops = 256;
469
470 // Breakpoint is disabled if bit 31 is set.
471 static const uint32_t kStopDisabledBit = 1 << 31;
472
473 // A stop is enabled, meaning the simulator will stop when meeting the
474 // instruction, if bit 31 of watched_stops_[code].count is unset.
475 // The value watched_stops_[code].count & ~(1 << 31) indicates how many times
476 // the breakpoint was hit or gone through.
477 struct StopCountAndDesc {
478 uint32_t count;
479 char* desc;
480 };
481 StopCountAndDesc watched_stops_[kNumOfWatchedStops];
482 void DebugStart();
483
484 int DecodeInstructionOriginal(Instruction* instr);
485 int DecodeInstruction(Instruction* instr);
486 int Evaluate_Unknown(Instruction* instr);
487#define MAX_NUM_OPCODES (1 << 16)
488 using EvaluateFuncType = int (Simulator::*)(Instruction*);
489
490 static EvaluateFuncType EvalTable[MAX_NUM_OPCODES];
491 static void EvalTableInit();
492
493#define EVALUATE(name) int Evaluate_##name(Instruction* instr)
494#define EVALUATE_VR_INSTRUCTIONS(name, op_name, op_value) EVALUATE(op_name);
495 S390_VRR_A_OPCODE_LIST(EVALUATE_VR_INSTRUCTIONS)
496 S390_VRR_C_OPCODE_LIST(EVALUATE_VR_INSTRUCTIONS)
497 S390_VRR_E_OPCODE_LIST(EVALUATE_VR_INSTRUCTIONS)
498 S390_VRR_F_OPCODE_LIST(EVALUATE_VR_INSTRUCTIONS)
499 S390_VRX_OPCODE_LIST(EVALUATE_VR_INSTRUCTIONS)
500 S390_VRS_A_OPCODE_LIST(EVALUATE_VR_INSTRUCTIONS)
501 S390_VRS_B_OPCODE_LIST(EVALUATE_VR_INSTRUCTIONS)
502 S390_VRS_C_OPCODE_LIST(EVALUATE_VR_INSTRUCTIONS)
503 S390_VRR_B_OPCODE_LIST(EVALUATE_VR_INSTRUCTIONS)
504 S390_VRI_A_OPCODE_LIST(EVALUATE_VR_INSTRUCTIONS)
505 S390_VRI_C_OPCODE_LIST(EVALUATE_VR_INSTRUCTIONS)
506#undef EVALUATE_VR_INSTRUCTIONS
507
508 EVALUATE(DUMY);
509 EVALUATE(BKPT);
510 EVALUATE(SPM);
511 EVALUATE(BALR);
512 EVALUATE(BCTR);
513 EVALUATE(BCR);
514 EVALUATE(SVC);
515 EVALUATE(BSM);
516 EVALUATE(BASSM);
517 EVALUATE(BASR);
518 EVALUATE(MVCL);
519 EVALUATE(CLCL);
520 EVALUATE(LPR);
521 EVALUATE(LNR);
522 EVALUATE(LTR);
523 EVALUATE(LCR);
524 EVALUATE(NR);
525 EVALUATE(CLR);
526 EVALUATE(OR);
527 EVALUATE(XR);
528 EVALUATE(LR);
529 EVALUATE(CR);
530 EVALUATE(AR);
531 EVALUATE(SR);
532 EVALUATE(MR);
533 EVALUATE(DR);
534 EVALUATE(ALR);
535 EVALUATE(SLR);
536 EVALUATE(LDR);
537 EVALUATE(CDR);
538 EVALUATE(LER);
539 EVALUATE(STH);
540 EVALUATE(LA);
541 EVALUATE(STC);
542 EVALUATE(IC_z);
543 EVALUATE(EX);
544 EVALUATE(BAL);
545 EVALUATE(BCT);
546 EVALUATE(BC);
547 EVALUATE(LH);
548 EVALUATE(CH);
549 EVALUATE(AH);
550 EVALUATE(SH);
551 EVALUATE(MH);
552 EVALUATE(BAS);
553 EVALUATE(CVD);
554 EVALUATE(CVB);
555 EVALUATE(ST);
556 EVALUATE(LAE);
557 EVALUATE(N);
558 EVALUATE(CL);
559 EVALUATE(O);
560 EVALUATE(X);
561 EVALUATE(L);
562 EVALUATE(C);
563 EVALUATE(A);
564 EVALUATE(S);
565 EVALUATE(M);
566 EVALUATE(D);
567 EVALUATE(AL);
568 EVALUATE(SL);
569 EVALUATE(STD);
570 EVALUATE(LD);
571 EVALUATE(CD);
572 EVALUATE(STE);
573 EVALUATE(MS);
574 EVALUATE(LE);
575 EVALUATE(BRXH);
576 EVALUATE(BRXLE);
577 EVALUATE(BXH);
578 EVALUATE(BXLE);
579 EVALUATE(SRL);
580 EVALUATE(SLL);
581 EVALUATE(SRA);
582 EVALUATE(SLA);
583 EVALUATE(SRDL);
584 EVALUATE(SLDL);
585 EVALUATE(SRDA);
586 EVALUATE(SLDA);
587 EVALUATE(STM);
588 EVALUATE(TM);
589 EVALUATE(MVI);
590 EVALUATE(TS);
591 EVALUATE(NI);
592 EVALUATE(CLI);
593 EVALUATE(OI);
594 EVALUATE(XI);
595 EVALUATE(LM);
596 EVALUATE(CS);
597 EVALUATE(MVCLE);
598 EVALUATE(CLCLE);
599 EVALUATE(MC);
600 EVALUATE(CDS);
601 EVALUATE(STCM);
602 EVALUATE(ICM);
603 EVALUATE(BPRP);
604 EVALUATE(BPP);
605 EVALUATE(TRTR);
606 EVALUATE(MVN);
607 EVALUATE(MVC);
608 EVALUATE(MVZ);
609 EVALUATE(NC);
610 EVALUATE(CLC);
611 EVALUATE(OC);
612 EVALUATE(XC);
613 EVALUATE(MVCP);
614 EVALUATE(TR);
615 EVALUATE(TRT);
616 EVALUATE(ED);
617 EVALUATE(EDMK);
618 EVALUATE(PKU);
619 EVALUATE(UNPKU);
620 EVALUATE(MVCIN);
621 EVALUATE(PKA);
622 EVALUATE(UNPKA);
623 EVALUATE(PLO);
624 EVALUATE(LMD);
625 EVALUATE(SRP);
626 EVALUATE(MVO);
627 EVALUATE(PACK);
628 EVALUATE(UNPK);
629 EVALUATE(ZAP);
630 EVALUATE(AP);
631 EVALUATE(SP);
632 EVALUATE(MP);
633 EVALUATE(DP);
634 EVALUATE(UPT);
635 EVALUATE(PFPO);
636 EVALUATE(IIHH);
637 EVALUATE(IIHL);
638 EVALUATE(IILH);
639 EVALUATE(IILL);
640 EVALUATE(NIHH);
641 EVALUATE(NIHL);
642 EVALUATE(NILH);
643 EVALUATE(NILL);
644 EVALUATE(OIHH);
645 EVALUATE(OIHL);
646 EVALUATE(OILH);
647 EVALUATE(OILL);
648 EVALUATE(LLIHH);
649 EVALUATE(LLIHL);
650 EVALUATE(LLILH);
651 EVALUATE(LLILL);
652 EVALUATE(TMLH);
653 EVALUATE(TMLL);
654 EVALUATE(TMHH);
655 EVALUATE(TMHL);
656 EVALUATE(BRC);
657 EVALUATE(BRAS);
658 EVALUATE(BRCT);
659 EVALUATE(BRCTG);
660 EVALUATE(LHI);
661 EVALUATE(LGHI);
662 EVALUATE(AHI);
663 EVALUATE(AGHI);
664 EVALUATE(MHI);
665 EVALUATE(MGHI);
666 EVALUATE(CHI);
667 EVALUATE(CGHI);
668 EVALUATE(LARL);
669 EVALUATE(LGFI);
670 EVALUATE(BRCL);
671 EVALUATE(BRASL);
672 EVALUATE(XIHF);
673 EVALUATE(XILF);
674 EVALUATE(IIHF);
675 EVALUATE(IILF);
676 EVALUATE(NIHF);
677 EVALUATE(NILF);
678 EVALUATE(OIHF);
679 EVALUATE(OILF);
680 EVALUATE(LLIHF);
681 EVALUATE(LLILF);
682 EVALUATE(MSGFI);
683 EVALUATE(MSFI);
684 EVALUATE(SLGFI);
685 EVALUATE(SLFI);
686 EVALUATE(AGFI);
687 EVALUATE(AFI);
688 EVALUATE(ALGFI);
689 EVALUATE(ALFI);
690 EVALUATE(CGFI);
691 EVALUATE(CFI);
692 EVALUATE(CLGFI);
693 EVALUATE(CLFI);
694 EVALUATE(LLHRL);
695 EVALUATE(LGHRL);
696 EVALUATE(LHRL);
697 EVALUATE(LLGHRL);
698 EVALUATE(STHRL);
699 EVALUATE(LGRL);
700 EVALUATE(STGRL);
701 EVALUATE(LGFRL);
702 EVALUATE(LRL);
703 EVALUATE(LLGFRL);
704 EVALUATE(STRL);
705 EVALUATE(EXRL);
706 EVALUATE(PFDRL);
707 EVALUATE(CGHRL);
708 EVALUATE(CHRL);
709 EVALUATE(CGRL);
710 EVALUATE(CGFRL);
711 EVALUATE(ECTG);
712 EVALUATE(CSST);
713 EVALUATE(LPD);
714 EVALUATE(LPDG);
715 EVALUATE(BRCTH);
716 EVALUATE(AIH);
717 EVALUATE(ALSIH);
718 EVALUATE(ALSIHN);
719 EVALUATE(CIH);
720 EVALUATE(CLIH);
721 EVALUATE(STCK);
722 EVALUATE(CFC);
723 EVALUATE(IPM);
724 EVALUATE(HSCH);
725 EVALUATE(MSCH);
726 EVALUATE(SSCH);
727 EVALUATE(STSCH);
728 EVALUATE(TSCH);
729 EVALUATE(TPI);
730 EVALUATE(SAL);
731 EVALUATE(RSCH);
732 EVALUATE(STCRW);
733 EVALUATE(STCPS);
734 EVALUATE(RCHP);
735 EVALUATE(SCHM);
736 EVALUATE(CKSM);
737 EVALUATE(SAR);
738 EVALUATE(EAR);
739 EVALUATE(MSR);
740 EVALUATE(MSRKC);
741 EVALUATE(MVST);
742 EVALUATE(CUSE);
743 EVALUATE(SRST);
744 EVALUATE(XSCH);
745 EVALUATE(STCKE);
746 EVALUATE(STCKF);
747 EVALUATE(SRNM);
748 EVALUATE(STFPC);
749 EVALUATE(LFPC);
750 EVALUATE(TRE);
751 EVALUATE(CUUTF);
752 EVALUATE(CUTFU);
753 EVALUATE(STFLE);
754 EVALUATE(SRNMB);
755 EVALUATE(SRNMT);
756 EVALUATE(LFAS);
757 EVALUATE(PPA);
758 EVALUATE(ETND);
759 EVALUATE(TEND);
760 EVALUATE(NIAI);
761 EVALUATE(TABORT);
762 EVALUATE(TRAP4);
763 EVALUATE(LPEBR);
764 EVALUATE(LNEBR);
765 EVALUATE(LTEBR);
766 EVALUATE(LCEBR);
767 EVALUATE(LDEBR);
768 EVALUATE(LXDBR);
769 EVALUATE(LXEBR);
770 EVALUATE(MXDBR);
771 EVALUATE(KEBR);
772 EVALUATE(CEBR);
773 EVALUATE(AEBR);
774 EVALUATE(SEBR);
775 EVALUATE(MDEBR);
776 EVALUATE(DEBR);
777 EVALUATE(MAEBR);
778 EVALUATE(MSEBR);
779 EVALUATE(LPDBR);
780 EVALUATE(LNDBR);
781 EVALUATE(LTDBR);
782 EVALUATE(LCDBR);
783 EVALUATE(SQEBR);
784 EVALUATE(SQDBR);
785 EVALUATE(SQXBR);
786 EVALUATE(MEEBR);
787 EVALUATE(KDBR);
788 EVALUATE(CDBR);
789 EVALUATE(ADBR);
790 EVALUATE(SDBR);
791 EVALUATE(MDBR);
792 EVALUATE(DDBR);
793 EVALUATE(MADBR);
794 EVALUATE(MSDBR);
795 EVALUATE(LPXBR);
796 EVALUATE(LNXBR);
797 EVALUATE(LTXBR);
798 EVALUATE(LCXBR);
799 EVALUATE(LEDBRA);
800 EVALUATE(LDXBRA);
801 EVALUATE(LEXBRA);
802 EVALUATE(FIXBRA);
803 EVALUATE(KXBR);
804 EVALUATE(CXBR);
805 EVALUATE(AXBR);
806 EVALUATE(SXBR);
807 EVALUATE(MXBR);
808 EVALUATE(DXBR);
809 EVALUATE(TBEDR);
810 EVALUATE(TBDR);
811 EVALUATE(DIEBR);
812 EVALUATE(FIEBRA);
813 EVALUATE(THDER);
814 EVALUATE(THDR);
815 EVALUATE(DIDBR);
816 EVALUATE(FIDBRA);
817 EVALUATE(LXR);
818 EVALUATE(LPDFR);
819 EVALUATE(LNDFR);
820 EVALUATE(LCDFR);
821 EVALUATE(LZER);
822 EVALUATE(LZDR);
823 EVALUATE(LZXR);
824 EVALUATE(SFPC);
825 EVALUATE(SFASR);
826 EVALUATE(EFPC);
827 EVALUATE(CELFBR);
828 EVALUATE(CDLFBR);
829 EVALUATE(CXLFBR);
830 EVALUATE(CEFBRA);
831 EVALUATE(CDFBRA);
832 EVALUATE(CXFBRA);
833 EVALUATE(CFEBRA);
834 EVALUATE(CFDBRA);
835 EVALUATE(CFXBRA);
836 EVALUATE(CLFEBR);
837 EVALUATE(CLFDBR);
838 EVALUATE(CLFXBR);
839 EVALUATE(CELGBR);
840 EVALUATE(CDLGBR);
841 EVALUATE(CXLGBR);
842 EVALUATE(CEGBRA);
843 EVALUATE(CDGBRA);
844 EVALUATE(CXGBRA);
845 EVALUATE(CGEBRA);
846 EVALUATE(CGDBRA);
847 EVALUATE(CGXBRA);
848 EVALUATE(CLGEBR);
849 EVALUATE(CLGDBR);
850 EVALUATE(CFER);
851 EVALUATE(CFDR);
852 EVALUATE(CFXR);
853 EVALUATE(LDGR);
854 EVALUATE(CGER);
855 EVALUATE(CGDR);
856 EVALUATE(CGXR);
857 EVALUATE(LGDR);
858 EVALUATE(MDTR);
859 EVALUATE(MDTRA);
860 EVALUATE(DDTRA);
861 EVALUATE(ADTRA);
862 EVALUATE(SDTRA);
863 EVALUATE(LDETR);
864 EVALUATE(LEDTR);
865 EVALUATE(LTDTR);
866 EVALUATE(FIDTR);
867 EVALUATE(MXTRA);
868 EVALUATE(DXTRA);
869 EVALUATE(AXTRA);
870 EVALUATE(SXTRA);
871 EVALUATE(LXDTR);
872 EVALUATE(LDXTR);
873 EVALUATE(LTXTR);
874 EVALUATE(FIXTR);
875 EVALUATE(KDTR);
876 EVALUATE(CGDTRA);
877 EVALUATE(CUDTR);
878 EVALUATE(CDTR);
879 EVALUATE(EEDTR);
880 EVALUATE(ESDTR);
881 EVALUATE(KXTR);
882 EVALUATE(CGXTRA);
883 EVALUATE(CUXTR);
884 EVALUATE(CSXTR);
885 EVALUATE(CXTR);
886 EVALUATE(EEXTR);
887 EVALUATE(ESXTR);
888 EVALUATE(CDGTRA);
889 EVALUATE(CDUTR);
890 EVALUATE(CDSTR);
891 EVALUATE(CEDTR);
892 EVALUATE(QADTR);
893 EVALUATE(IEDTR);
894 EVALUATE(RRDTR);
895 EVALUATE(CXGTRA);
896 EVALUATE(CXUTR);
897 EVALUATE(CXSTR);
898 EVALUATE(CEXTR);
899 EVALUATE(QAXTR);
900 EVALUATE(IEXTR);
901 EVALUATE(RRXTR);
902 EVALUATE(LPGR);
903 EVALUATE(LNGR);
904 EVALUATE(LTGR);
905 EVALUATE(LCGR);
906 EVALUATE(LGR);
907 EVALUATE(LGBR);
908 EVALUATE(LGHR);
909 EVALUATE(AGR);
910 EVALUATE(SGR);
911 EVALUATE(ALGR);
912 EVALUATE(SLGR);
913 EVALUATE(MSGR);
914 EVALUATE(MSGRKC);
915 EVALUATE(DSGR);
916 EVALUATE(LRVGR);
917 EVALUATE(LPGFR);
918 EVALUATE(LNGFR);
919 EVALUATE(LTGFR);
920 EVALUATE(LCGFR);
921 EVALUATE(LGFR);
922 EVALUATE(LLGFR);
923 EVALUATE(LLGTR);
924 EVALUATE(AGFR);
925 EVALUATE(SGFR);
926 EVALUATE(ALGFR);
927 EVALUATE(SLGFR);
928 EVALUATE(MSGFR);
929 EVALUATE(DSGFR);
930 EVALUATE(KMAC);
931 EVALUATE(LRVR);
932 EVALUATE(CGR);
933 EVALUATE(CLGR);
934 EVALUATE(LBR);
935 EVALUATE(LHR);
936 EVALUATE(KMF);
937 EVALUATE(KMO);
938 EVALUATE(PCC);
939 EVALUATE(KMCTR);
940 EVALUATE(KM);
941 EVALUATE(KMC);
942 EVALUATE(CGFR);
943 EVALUATE(KIMD);
944 EVALUATE(KLMD);
945 EVALUATE(CFDTR);
946 EVALUATE(CLGDTR);
947 EVALUATE(CLFDTR);
948 EVALUATE(BCTGR);
949 EVALUATE(CFXTR);
950 EVALUATE(CLFXTR);
951 EVALUATE(CDFTR);
952 EVALUATE(CDLGTR);
953 EVALUATE(CDLFTR);
954 EVALUATE(CXFTR);
955 EVALUATE(CXLGTR);
956 EVALUATE(CXLFTR);
957 EVALUATE(CGRT);
958 EVALUATE(NGR);
959 EVALUATE(OGR);
960 EVALUATE(XGR);
961 EVALUATE(FLOGR);
962 EVALUATE(LLGCR);
963 EVALUATE(LLGHR);
964 EVALUATE(MLGR);
965 EVALUATE(DLGR);
966 EVALUATE(ALCGR);
967 EVALUATE(SLBGR);
968 EVALUATE(EPSW);
969 EVALUATE(TRTT);
970 EVALUATE(TRTO);
971 EVALUATE(TROT);
972 EVALUATE(TROO);
973 EVALUATE(LLCR);
974 EVALUATE(LLHR);
975 EVALUATE(MLR);
976 EVALUATE(DLR);
977 EVALUATE(ALCR);
978 EVALUATE(SLBR);
979 EVALUATE(CU14);
980 EVALUATE(CU24);
981 EVALUATE(CU41);
982 EVALUATE(CU42);
983 EVALUATE(TRTRE);
984 EVALUATE(SRSTU);
985 EVALUATE(TRTE);
986 EVALUATE(AHHHR);
987 EVALUATE(SHHHR);
988 EVALUATE(ALHHHR);
989 EVALUATE(SLHHHR);
990 EVALUATE(CHHR);
991 EVALUATE(AHHLR);
992 EVALUATE(SHHLR);
993 EVALUATE(ALHHLR);
994 EVALUATE(SLHHLR);
995 EVALUATE(CHLR);
996 EVALUATE(POPCNT_Z);
997 EVALUATE(LOCGR);
998 EVALUATE(NGRK);
999 EVALUATE(OGRK);
1000 EVALUATE(XGRK);
1001 EVALUATE(AGRK);
1002 EVALUATE(SGRK);
1003 EVALUATE(ALGRK);
1004 EVALUATE(SLGRK);
1005 EVALUATE(LOCR);
1006 EVALUATE(NRK);
1007 EVALUATE(ORK);
1008 EVALUATE(XRK);
1009 EVALUATE(ARK);
1010 EVALUATE(SRK);
1011 EVALUATE(ALRK);
1012 EVALUATE(SLRK);
1013 EVALUATE(LTG);
1014 EVALUATE(LG);
1015 EVALUATE(CVBY);
1016 EVALUATE(AG);
1017 EVALUATE(SG);
1018 EVALUATE(ALG);
1019 EVALUATE(SLG);
1020 EVALUATE(MSG);
1021 EVALUATE(DSG);
1022 EVALUATE(CVBG);
1023 EVALUATE(LRVG);
1024 EVALUATE(LT);
1025 EVALUATE(LGF);
1026 EVALUATE(LGH);
1027 EVALUATE(LLGF);
1028 EVALUATE(LLGT);
1029 EVALUATE(AGF);
1030 EVALUATE(SGF);
1031 EVALUATE(ALGF);
1032 EVALUATE(SLGF);
1033 EVALUATE(MSGF);
1034 EVALUATE(DSGF);
1035 EVALUATE(LRV);
1036 EVALUATE(LRVH);
1037 EVALUATE(CG);
1038 EVALUATE(CLG);
1039 EVALUATE(STG);
1040 EVALUATE(NTSTG);
1041 EVALUATE(CVDY);
1042 EVALUATE(CVDG);
1043 EVALUATE(STRVG);
1044 EVALUATE(CGF);
1045 EVALUATE(CLGF);
1046 EVALUATE(LTGF);
1047 EVALUATE(CGH);
1048 EVALUATE(PFD);
1049 EVALUATE(STRV);
1050 EVALUATE(STRVH);
1051 EVALUATE(BCTG);
1052 EVALUATE(STY);
1053 EVALUATE(MSY);
1054 EVALUATE(MSC);
1055 EVALUATE(NY);
1056 EVALUATE(CLY);
1057 EVALUATE(OY);
1058 EVALUATE(XY);
1059 EVALUATE(LY);
1060 EVALUATE(CY);
1061 EVALUATE(AY);
1062 EVALUATE(SY);
1063 EVALUATE(MFY);
1064 EVALUATE(ALY);
1065 EVALUATE(SLY);
1066 EVALUATE(STHY);
1067 EVALUATE(LAY);
1068 EVALUATE(STCY);
1069 EVALUATE(ICY);
1070 EVALUATE(LAEY);
1071 EVALUATE(LB);
1072 EVALUATE(LGB);
1073 EVALUATE(LHY);
1074 EVALUATE(CHY);
1075 EVALUATE(AHY);
1076 EVALUATE(SHY);
1077 EVALUATE(MHY);
1078 EVALUATE(NG);
1079 EVALUATE(OG);
1080 EVALUATE(XG);
1081 EVALUATE(LGAT);
1082 EVALUATE(MLG);
1083 EVALUATE(DLG);
1084 EVALUATE(ALCG);
1085 EVALUATE(SLBG);
1086 EVALUATE(STPQ);
1087 EVALUATE(LPQ);
1088 EVALUATE(LLGC);
1089 EVALUATE(LLGH);
1090 EVALUATE(LLC);
1091 EVALUATE(LLH);
1092 EVALUATE(ML);
1093 EVALUATE(DL);
1094 EVALUATE(ALC);
1095 EVALUATE(SLB);
1096 EVALUATE(LLGTAT);
1097 EVALUATE(LLGFAT);
1098 EVALUATE(LAT);
1099 EVALUATE(LBH);
1100 EVALUATE(LLCH);
1101 EVALUATE(STCH);
1102 EVALUATE(LHH);
1103 EVALUATE(LLHH);
1104 EVALUATE(STHH);
1105 EVALUATE(LFHAT);
1106 EVALUATE(LFH);
1107 EVALUATE(STFH);
1108 EVALUATE(CHF);
1109 EVALUATE(MVCDK);
1110 EVALUATE(MVHHI);
1111 EVALUATE(MVGHI);
1112 EVALUATE(MVHI);
1113 EVALUATE(CHHSI);
1114 EVALUATE(CGHSI);
1115 EVALUATE(CHSI);
1116 EVALUATE(CLFHSI);
1117 EVALUATE(TBEGIN);
1118 EVALUATE(TBEGINC);
1119 EVALUATE(LMG);
1120 EVALUATE(SRAG);
1121 EVALUATE(SLAG);
1122 EVALUATE(SRLG);
1123 EVALUATE(SLLG);
1124 EVALUATE(CSY);
1125 EVALUATE(CSG);
1126 EVALUATE(RLLG);
1127 EVALUATE(RLL);
1128 EVALUATE(STMG);
1129 EVALUATE(STMH);
1130 EVALUATE(STCMH);
1131 EVALUATE(STCMY);
1132 EVALUATE(CDSY);
1133 EVALUATE(CDSG);
1134 EVALUATE(BXHG);
1135 EVALUATE(BXLEG);
1136 EVALUATE(ECAG);
1137 EVALUATE(TMY);
1138 EVALUATE(MVIY);
1139 EVALUATE(NIY);
1140 EVALUATE(CLIY);
1141 EVALUATE(OIY);
1142 EVALUATE(XIY);
1143 EVALUATE(ASI);
1144 EVALUATE(ALSI);
1145 EVALUATE(AGSI);
1146 EVALUATE(ALGSI);
1147 EVALUATE(ICMH);
1148 EVALUATE(ICMY);
1149 EVALUATE(MVCLU);
1150 EVALUATE(CLCLU);
1151 EVALUATE(STMY);
1152 EVALUATE(LMH);
1153 EVALUATE(LMY);
1154 EVALUATE(TP);
1155 EVALUATE(SRAK);
1156 EVALUATE(SLAK);
1157 EVALUATE(SRLK);
1158 EVALUATE(SLLK);
1159 EVALUATE(LOCG);
1160 EVALUATE(STOCG);
1161 EVALUATE(LANG);
1162 EVALUATE(LAOG);
1163 EVALUATE(LAXG);
1164 EVALUATE(LAAG);
1165 EVALUATE(LAALG);
1166 EVALUATE(LOC);
1167 EVALUATE(STOC);
1168 EVALUATE(LAN);
1169 EVALUATE(LAO);
1170 EVALUATE(LAX);
1171 EVALUATE(LAA);
1172 EVALUATE(LAAL);
1173 EVALUATE(BRXHG);
1174 EVALUATE(BRXLG);
1175 EVALUATE(RISBLG);
1176 EVALUATE(RNSBG);
1177 EVALUATE(RISBG);
1178 EVALUATE(ROSBG);
1179 EVALUATE(RXSBG);
1180 EVALUATE(RISBGN);
1181 EVALUATE(RISBHG);
1182 EVALUATE(CGRJ);
1183 EVALUATE(CGIT);
1184 EVALUATE(CIT);
1185 EVALUATE(CLFIT);
1186 EVALUATE(CGIJ);
1187 EVALUATE(CIJ);
1188 EVALUATE(AHIK);
1189 EVALUATE(AGHIK);
1190 EVALUATE(ALHSIK);
1191 EVALUATE(ALGHSIK);
1192 EVALUATE(CGRB);
1193 EVALUATE(CGIB);
1194 EVALUATE(CIB);
1195 EVALUATE(LDEB);
1196 EVALUATE(LXDB);
1197 EVALUATE(LXEB);
1198 EVALUATE(MXDB);
1199 EVALUATE(KEB);
1200 EVALUATE(CEB);
1201 EVALUATE(AEB);
1202 EVALUATE(SEB);
1203 EVALUATE(MDEB);
1204 EVALUATE(DEB);
1205 EVALUATE(MAEB);
1206 EVALUATE(MSEB);
1207 EVALUATE(TCEB);
1208 EVALUATE(TCDB);
1209 EVALUATE(TCXB);
1210 EVALUATE(SQEB);
1211 EVALUATE(SQDB);
1212 EVALUATE(MEEB);
1213 EVALUATE(KDB);
1214 EVALUATE(CDB);
1215 EVALUATE(ADB);
1216 EVALUATE(SDB);
1217 EVALUATE(MDB);
1218 EVALUATE(DDB);
1219 EVALUATE(MADB);
1220 EVALUATE(MSDB);
1221 EVALUATE(SLDT);
1222 EVALUATE(SRDT);
1223 EVALUATE(SLXT);
1224 EVALUATE(SRXT);
1225 EVALUATE(TDCET);
1226 EVALUATE(TDGET);
1227 EVALUATE(TDCDT);
1228 EVALUATE(TDGDT);
1229 EVALUATE(TDCXT);
1230 EVALUATE(TDGXT);
1231 EVALUATE(LEY);
1232 EVALUATE(LDY);
1233 EVALUATE(STEY);
1234 EVALUATE(STDY);
1235 EVALUATE(CZDT);
1236 EVALUATE(CZXT);
1237 EVALUATE(CDZT);
1238 EVALUATE(CXZT);
1239 EVALUATE(MG);
1240 EVALUATE(MGRK);
1241
1242#undef EVALUATE
1243};
1244
1245} // namespace internal
1246} // namespace v8
1247
1248#endif // defined(USE_SIMULATOR)
1249#endif // V8_EXECUTION_S390_SIMULATOR_S390_H_
Isolate * isolate_
#define T
#define one
uint8_t data_[MAX_STACK_LENGTH]
#define S390_VRR_E_OPCODE_LIST(V)
#define S390_VRI_A_OPCODE_LIST(V)
#define S390_VRI_C_OPCODE_LIST(V)
#define S390_VRR_C_OPCODE_LIST(V)
#define S390_VRS_A_OPCODE_LIST(V)
#define S390_VRR_A_OPCODE_LIST(V)
#define S390_VRS_B_OPCODE_LIST(V)
#define S390_VRR_F_OPCODE_LIST(V)
#define S390_VRR_B_OPCODE_LIST(V)
#define S390_VRS_C_OPCODE_LIST(V)
#define S390_VRX_OPCODE_LIST(V)
int start
uint32_t count
LineAndColumn current
base::Vector< const DirectHandle< Object > > args
Definition execution.cc:74
too high values may cause the compiler to set high thresholds for inlining to as much as possible avoid inlined allocation of objects that cannot escape trace load stores from virtual maglev objects use TurboFan fast string builder analyze liveness of environment slots and zap dead values trace TurboFan load elimination emit data about basic block usage in builtins to this enable builtin reordering when run mksnapshot flag for emit warnings when applying builtin profile data verify register allocation in TurboFan randomly schedule instructions to stress dependency tracking enable store store elimination in TurboFan rewrite far to near simulate GC compiler thread race related to allow float parameters to be passed in simulator mode JS Wasm Run additional turbo_optimize_inlined_js_wasm_wrappers enable experimental feedback collection in generic lowering enable Turboshaft s WasmLoadElimination enable Turboshaft s low level load elimination for JS enable Turboshaft s escape analysis for string concatenation use enable Turbolev features that we want to ship in the not too far future trace individual Turboshaft reduction steps trace intermediate Turboshaft reduction steps invocation count threshold for early optimization Enables optimizations which favor memory size over execution speed Enables sampling allocation profiler with X as a sample interval min size of a semi the new space consists of two semi spaces max size of the Collect garbage after Collect garbage after keeps maps alive for< n > old space garbage collections print one detailed trace line in allocation gc speed threshold for starting incremental marking via a task in percent of available threshold for starting incremental marking immediately in percent of available Use a single schedule for determining a marking schedule between JS and C objects schedules the minor GC task with kUserVisible priority max worker number of concurrent for NumberOfWorkerThreads start background threads that allocate memory concurrent_array_buffer_sweeping use parallel threads to clear weak refs in the atomic pause trace progress of the incremental marking trace object counts and memory usage report a tick only when allocated zone memory changes by this amount TracingFlags::gc_stats TracingFlags::gc_stats track native contexts that are expected to be garbage collected verify heap pointers before and after GC memory reducer runs GC with ReduceMemoryFootprint flag Maximum number of memory reducer GCs scheduled Old gen GC speed is computed directly from gc tracer counters Perform compaction on full GCs based on V8 s default heuristics Perform compaction on every full GC Perform code space compaction when finalizing a full GC with stack Stress GC compaction to flush out bugs with moving objects flush of baseline code when it has not been executed recently Use time base code flushing instead of age Use a progress bar to scan large objects in increments when incremental marking is active force incremental marking for small heaps and run it more often force marking at random points between and X(inclusive) percent " "of the regular marking start limit") DEFINE_INT(stress_scavenge
refactor address components for immediate indexing make OptimizeMaglevOnNextCall optimize to turbofan instead of maglev filter for tracing turbofan compilation trace turbo cfg trace TurboFan s graph trimmer trace TurboFan s control equivalence trace TurboFan s register allocator trace stack load store counters for optimized code in run fuzzing &&concurrent_recompilation trace_turbo trace_turbo_scheduled trace_turbo_stack_accesses verify TurboFan machine graph of code stubs enable FixedArray bounds checks print TurboFan statistics of wasm compilations maximum cumulative size of bytecode considered for inlining scale factor of bytecode size used to calculate the inlining budget * KB
int32_t offset
Instruction * instr
ZoneVector< RpoNumber > & result
LiftoffRegister reg
int y
int x
uint32_t const mask
#define D(Name)
Definition maglev-ir.h:6426
constexpr size_t kPageSize
Definition globals.h:42
int int32_t
Definition unicode.cc:40
unsigned short uint16_t
Definition unicode.cc:39
signed short int16_t
Definition unicode.cc:38
uintptr_t Address
Definition memory.h:13
uint32_t WasmInterpreterRuntime int64_t r0
constexpr Register no_reg
constexpr int kSimd128Size
Definition globals.h:706
constexpr int kSystemPointerSize
Definition globals.h:410
V8_EXPORT_PRIVATE FlagValues v8_flags
constexpr Register r11
constexpr Register cp
base::SmallVector< RegisterT, kStaticCapacity > registers_
#define UNREACHABLE()
Definition logging.h:67
#define CHECK_GE(lhs, rhs)
#define CHECK_LT(lhs, rhs)
#define CHECK_LE(lhs, rhs)
#define DCHECK(condition)
Definition logging.h:482
#define V8_EXPORT_PRIVATE
Definition macros.h:460
#define T1(name, string, precedence)
Definition token.cc:28
std::unique_ptr< ValueMirror > value