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

Unified Diff: test/cctest/test-macro-assembler-mips64.cc

Issue 2547033002: MIPS[64]: Fix jump_tables6 test for r6 architectures (Closed)
Patch Set: Address comments Created 4 years 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
« no previous file with comments | « test/cctest/test-macro-assembler-mips.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/cctest/test-macro-assembler-mips64.cc
diff --git a/test/cctest/test-macro-assembler-mips64.cc b/test/cctest/test-macro-assembler-mips64.cc
index 90839bd5dfc8b65a59385910aad656a07ec42e39..c43d43038c31bfb8393d28bbe2358572c7e5153b 100644
--- a/test/cctest/test-macro-assembler-mips64.cc
+++ b/test/cctest/test-macro-assembler-mips64.cc
@@ -364,16 +364,22 @@ TEST(jump_tables6) {
v8::internal::CodeObjectRequired::kYes);
MacroAssembler* masm = &assembler;
- const int kNumCases = 40;
- const int kFillInstr = 32551;
- const int kMaxBranchOffset = (1 << (18 - 1)) - 1;
- const int kTrampolineSlotsSize = 2 * Instruction::kInstrSize;
+ const int kSwitchTableCases = 40;
+
+ const int kInstrSize = Assembler::kInstrSize;
+ const int kMaxBranchOffset = Assembler::kMaxBranchOffset;
+ const int kTrampolineSlotsSize = Assembler::kTrampolineSlotsSize;
+ const int kSwitchTablePrologueSize = MacroAssembler::kSwitchTablePrologueSize;
+
const int kMaxOffsetForTrampolineStart =
kMaxBranchOffset - 16 * kTrampolineSlotsSize;
+ const int kFillInstr = (kMaxOffsetForTrampolineStart / kInstrSize) -
+ (kSwitchTablePrologueSize + 2 * kSwitchTableCases) -
+ 20;
- int values[kNumCases];
+ int values[kSwitchTableCases];
isolate->random_number_generator()->NextBytes(values, sizeof(values));
- Label labels[kNumCases];
+ Label labels[kSwitchTableCases];
Label near_start, end, done;
__ Push(ra);
@@ -383,7 +389,7 @@ TEST(jump_tables6) {
int gen_insn = 0;
__ Branch(&end);
- gen_insn += 2;
+ gen_insn += Assembler::IsCompactBranchSupported() ? 1 : 2;
__ bind(&near_start);
// Generate slightly less than 32K instructions, which will soon require
@@ -393,23 +399,24 @@ TEST(jump_tables6) {
}
gen_insn += kFillInstr;
- __ GenerateSwitchTable(a0, kNumCases,
+ __ GenerateSwitchTable(a0, kSwitchTableCases,
[&labels](size_t i) { return labels + i; });
- gen_insn += (11 + 2 * kNumCases);
+ gen_insn += (kSwitchTablePrologueSize + 2 * kSwitchTableCases);
- for (int i = 0; i < kNumCases; ++i) {
+ for (int i = 0; i < kSwitchTableCases; ++i) {
__ bind(&labels[i]);
__ li(v0, values[i]);
__ Branch(&done);
}
- gen_insn += (4 * kNumCases);
+ gen_insn +=
+ ((Assembler::IsCompactBranchSupported() ? 3 : 4) * kSwitchTableCases);
// If offset from here to first branch instr is greater than max allowed
// offset for trampoline ...
CHECK_LT(kMaxOffsetForTrampolineStart, masm->pc_offset() - offs1);
// ... number of generated instructions must be greater then "gen_insn",
// as we are expecting trampoline generation
- CHECK_LT(gen_insn, (masm->pc_offset() - offs1) / Instruction::kInstrSize);
+ CHECK_LT(gen_insn, (masm->pc_offset() - offs1) / kInstrSize);
__ bind(&done);
__ Pop(ra);
@@ -427,7 +434,7 @@ TEST(jump_tables6) {
code->Print(std::cout);
#endif
F1 f = FUNCTION_CAST<F1>(code->entry());
- for (int i = 0; i < kNumCases; ++i) {
+ for (int i = 0; i < kSwitchTableCases; ++i) {
int64_t res = reinterpret_cast<int64_t>(
CALL_GENERATED_CODE(isolate, f, i, 0, 0, 0, 0));
::printf("f(%d) = %" PRId64 "\n", i, res);
« no previous file with comments | « test/cctest/test-macro-assembler-mips.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698