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

Side by Side Diff: test/cctest/interpreter/test-bytecode-generator.cc

Issue 1633153002: [interpreter] Reduce move operations for wide register support. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Remove RegisterOperandIsMovable from RegisterMover interface Created 4 years, 11 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 unified diff | Download patch
« no previous file with comments | « src/interpreter/register-translator.cc ('k') | test/cctest/interpreter/test-interpreter.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 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/compiler.h" 7 #include "src/compiler.h"
8 #include "src/interpreter/bytecode-array-iterator.h" 8 #include "src/interpreter/bytecode-array-iterator.h"
9 #include "src/interpreter/bytecode-generator.h" 9 #include "src/interpreter/bytecode-generator.h"
10 #include "src/interpreter/interpreter.h" 10 #include "src/interpreter/interpreter.h"
(...skipping 7280 matching lines...) Expand 10 before | Expand all | Expand 10 after
7291 for (size_t i = 0; i < 157; ++i) { 7291 for (size_t i = 0; i < 157; ++i) {
7292 os << "var x" << i << ";\n"; 7292 os << "var x" << i << ";\n";
7293 } 7293 }
7294 std::string prologue(os.str()); 7294 std::string prologue(os.str());
7295 7295
7296 ExpectedSnippet<int> snippets[] = { 7296 ExpectedSnippet<int> snippets[] = {
7297 {"x0 = x127;\n" 7297 {"x0 = x127;\n"
7298 "return x0;\n", 7298 "return x0;\n",
7299 161 * kPointerSize, 7299 161 * kPointerSize,
7300 1, 7300 1,
7301 15, 7301 10,
7302 { 7302 {
7303 B(MovWide), R16(131), R16(125), // 7303 B(MovWide), R16(131), R16(125), //
7304 B(Ldar), R(125), // 7304 B(Ldar), R(125), //
7305 B(MovWide), R16(125), R16(131), //
7306 B(Star), R(0), // 7305 B(Star), R(0), //
7307 B(Return), // 7306 B(Return), //
7308 }}, 7307 }},
7309 {"x127 = x126;\n" 7308 {"x127 = x126;\n"
7310 "return x127;\n", 7309 "return x127;\n",
7311 161 * kPointerSize, 7310 161 * kPointerSize,
7312 1, 7311 1,
7313 37, 7312 22,
7314 { 7313 {
7315 B(MovWide), R16(130), R16(125), // 7314 B(MovWide), R16(130), R16(125), //
7316 B(Ldar), R(125), // 7315 B(Ldar), R(125), //
7317 B(MovWide), R16(125), R16(130), //
7318 B(MovWide), R16(131), R16(125), //
7319 B(Star), R(125), // 7316 B(Star), R(125), //
7320 B(MovWide), R16(125), R16(131), // 7317 B(MovWide), R16(125), R16(131), //
7321 B(MovWide), R16(131), R16(125), // 7318 B(MovWide), R16(131), R16(125), //
7322 B(Ldar), R(125), // 7319 B(Ldar), R(125), //
7323 B(MovWide), R16(125), R16(131), //
7324 B(Return), // 7320 B(Return), //
7325 }}, 7321 }},
7326 {"if (x2 > 3) { return x129; }\n" 7322 {"if (x2 > 3) { return x129; }\n"
7327 "return x128;\n", 7323 "return x128;\n",
7328 162 * kPointerSize, 7324 162 * kPointerSize,
7329 1, 7325 1,
7330 56, 7326 36,
7331 { 7327 {
7332 B(Ldar), R(2), // 7328 B(Ldar), R(2), //
7333 B(MovWide), R16(161), R16(125), // 7329 B(Star), R(125), //
7334 B(Star), R(125), // 7330 B(MovWide), R16(125), R16(161), //
7335 B(MovWide), R16(125), R16(161), // 7331 B(LdaSmi8), U8(3), //
7336 B(LdaSmi8), U8(3), // 7332 B(MovWide), R16(161), R16(125), //
7337 B(MovWide), R16(161), R16(125), // 7333 B(TestGreaterThan), R(125), //
7338 B(TestGreaterThan), R(125), // 7334 B(JumpIfFalse), U8(10), //
7339 B(MovWide), R16(125), R16(161), // 7335 B(MovWide), R16(133), R16(125), //
7340 B(JumpIfToBooleanFalse), U8(15), // 7336 B(Ldar), R(125), //
7341 B(MovWide), R16(133), R16(125), // 7337 B(Return), //
7342 B(Ldar), R(125), // 7338 B(MovWide), R16(132), R16(125), //
7343 B(MovWide), R16(125), R16(133), // 7339 B(Ldar), R(125), //
7344 B(Return), // 7340 B(Return), //
7345 B(MovWide), R16(132), R16(125), //
7346 B(Ldar), R(125), //
7347 B(MovWide), R16(125), R16(132), //
7348 B(Return), //
7349 }}, 7341 }},
7350 {"var x0 = 0;\n" 7342 {"var x0 = 0;\n"
7351 "if (x129 == 3) { var x129 = x0; }\n" 7343 "if (x129 == 3) { var x129 = x0; }\n"
7352 "if (x2 > 3) { return x0; }\n" 7344 "if (x2 > 3) { return x0; }\n"
7353 "return x129;\n", 7345 "return x129;\n",
7354 162 * kPointerSize, 7346 162 * kPointerSize,
7355 1, 7347 1,
7356 103, 7348 68,
7357 { 7349 {
7358 B(LdaZero), // 7350 B(LdaZero), //
7359 B(Star), R(0), // 7351 B(Star), R(0), //
7360 B(MovWide), R16(133), R16(125), // 7352 B(MovWide), R16(133), R16(125), //
7361 B(Ldar), R(125), // 7353 B(Ldar), R(125), //
7362 B(MovWide), R16(125), R16(133), // 7354 B(Star), R(125), //
7363 B(MovWide), R16(161), R16(125), // 7355 B(MovWide), R16(125), R16(161), //
7364 B(Star), R(125), // 7356 B(LdaSmi8), U8(3), //
7365 B(MovWide), R16(125), R16(161), // 7357 B(MovWide), R16(161), R16(125), //
7366 B(LdaSmi8), U8(3), // 7358 B(TestEqual), R(125), //
7367 B(MovWide), R16(161), R16(125), // 7359 B(JumpIfFalse), U8(11), //
7368 B(TestEqual), R(125), // 7360 B(Ldar), R(0), //
7369 B(MovWide), R16(125), R16(161), // 7361 B(Star), R(125), //
7370 B(JumpIfToBooleanFalse), U8(16), // 7362 B(MovWide), R16(125), R16(133), //
7371 B(Ldar), R(0), // 7363 B(Ldar), R(2), //
7372 B(MovWide), R16(133), R16(125), // 7364 B(Star), R(125), //
7373 B(Star), R(125), // 7365 B(MovWide), R16(125), R16(161), //
7374 B(MovWide), R16(125), R16(133), // 7366 B(LdaSmi8), U8(3), //
7375 B(Ldar), R(2), // 7367 B(MovWide), R16(161), R16(125), //
7376 B(MovWide), R16(161), R16(125), // 7368 B(TestGreaterThan), R(125), //
7377 B(Star), R(125), // 7369 B(JumpIfFalse), U8(5), //
7378 B(MovWide), R16(125), R16(161), // 7370 B(Ldar), R(0), //
7379 B(LdaSmi8), U8(3), // 7371 B(Return), //
7380 B(MovWide), R16(161), R16(125), // 7372 B(MovWide), R16(133), R16(125), //
7381 B(TestGreaterThan), R(125), // 7373 B(Ldar), R(125), //
7382 B(MovWide), R16(125), R16(161), // 7374 B(Return), //
7383 B(JumpIfToBooleanFalse), U8(5), //
7384 B(Ldar), R(0), //
7385 B(Return), //
7386 B(MovWide), R16(133), R16(125), //
7387 B(Ldar), R(125), //
7388 B(MovWide), R16(125), R16(133), //
7389 B(Return), //
7390 }}, 7375 }},
7391 {"var x0 = 0;\n" 7376 {"var x0 = 0;\n"
7392 "var x1 = 0;\n" 7377 "var x1 = 0;\n"
7393 "for (x128 = 0; x128 < 64; x128++) {" 7378 "for (x128 = 0; x128 < 64; x128++) {"
7394 " x1 += x128;" 7379 " x1 += x128;"
7395 "}" 7380 "}"
7396 "return x128;\n", 7381 "return x128;\n",
7397 162 * kPointerSize, 7382 162 * kPointerSize,
7398 1, 7383 1,
7399 152, 7384 97,
7400 { 7385 {
7401 B(LdaZero), // 7386 B(LdaZero), //
7402 B(Star), R(0), // 7387 B(Star), R(0), //
7403 B(LdaZero), // 7388 B(LdaZero), //
7404 B(Star), R(1), // 7389 B(Star), R(1), //
7405 B(LdaZero), // 7390 B(LdaZero), //
7406 B(MovWide), R16(132), R16(125), // 7391 B(Star), R(125), //
7407 B(Star), R(125), // 7392 B(MovWide), R16(125), R16(132), //
7408 B(MovWide), R16(125), R16(132), // 7393 B(MovWide), R16(132), R16(125), //
7409 B(MovWide), R16(132), R16(125), // 7394 B(Ldar), R(125), //
7410 B(Ldar), R(125), // 7395 B(Star), R(125), //
7411 B(MovWide), R16(125), R16(132), // 7396 B(MovWide), R16(125), R16(161), //
7412 B(MovWide), R16(161), R16(125), // 7397 B(LdaSmi8), U8(64), //
7413 B(Star), R(125), // 7398 B(MovWide), R16(161), R16(125), //
7414 B(MovWide), R16(125), R16(161), // 7399 B(TestLessThan), R(125), //
7415 B(LdaSmi8), U8(64), // 7400 B(JumpIfFalse), U8(52), //
7416 B(MovWide), R16(161), R16(125), // 7401 B(Ldar), R(1), //
7417 B(TestLessThan), R(125), // 7402 B(Star), R(125), //
7418 B(MovWide), R16(125), R16(161), // 7403 B(MovWide), R16(125), R16(161), //
7419 B(JumpIfToBooleanFalse), U8(82), // 7404 B(MovWide), R16(132), R16(125), //
7420 B(Ldar), R(1), // 7405 B(Ldar), R(125), //
7421 B(MovWide), R16(161), R16(125), // 7406 B(MovWide), R16(161), R16(125), //
7422 B(Star), R(125), // 7407 B(Add), R(125), //
7423 B(MovWide), R16(125), R16(161), // 7408 B(Star), R(1), //
7424 B(MovWide), R16(132), R16(125), // 7409 B(MovWide), R16(132), R16(125), //
7425 B(Ldar), R(125), // 7410 B(Ldar), R(125), //
7426 B(MovWide), R16(125), R16(132), // 7411 B(ToNumber), //
7427 B(MovWide), R16(161), R16(125), // 7412 B(Star), R(125), //
7428 B(Add), R(125), // 7413 B(MovWide), R16(125), R16(161), //
7429 B(MovWide), R16(125), R16(161), // 7414 B(Inc), //
7430 B(Star), R(1), // 7415 B(Star), R(125), //
7431 B(MovWide), R16(132), R16(125), // 7416 B(MovWide), R16(125), R16(132), //
7432 B(Ldar), R(125), // 7417 B(Jump), U8(-73), //
7433 B(MovWide), R16(125), R16(132), // 7418 B(MovWide), R16(132), R16(125), //
7434 B(ToNumber), // 7419 B(Ldar), R(125), //
7435 B(MovWide), R16(161), R16(125), // 7420 B(Return), //
7436 B(Star), R(125), //
7437 B(MovWide), R16(125), R16(161), //
7438 B(Inc), //
7439 B(MovWide), R16(132), R16(125), //
7440 B(Star), R(125), //
7441 B(MovWide), R16(125), R16(132), //
7442 B(Jump), U8(-118), //
7443 B(MovWide), R16(132), R16(125), //
7444 B(Ldar), R(125), //
7445 B(MovWide), R16(125), R16(132), //
7446 B(Return), //
7447 }}, 7421 }},
7448 {"var x0 = 1234;\n" 7422 {"var x0 = 1234;\n"
7449 "var x1 = 0;\n" 7423 "var x1 = 0;\n"
7450 "for (x128 in x0) {" 7424 "for (x128 in x0) {"
7451 " x1 += x128;" 7425 " x1 += x128;"
7452 "}" 7426 "}"
7453 "return x1;\n", 7427 "return x1;\n",
7454 167 * kPointerSize, 7428 167 * kPointerSize,
7455 1, 7429 1,
7456 159, 7430 109,
7457 { 7431 {
7458 B(LdaConstant), U8(0), // 7432 B(LdaConstant), U8(0), //
7459 B(Star), R(0), // 7433 B(Star), R(0), //
7460 B(LdaZero), // 7434 B(LdaZero), //
7461 B(Star), R(1), // 7435 B(Star), R(1), //
7462 B(Ldar), R(0), // 7436 B(Ldar), R(0), //
7463 B(JumpIfUndefinedConstant), U8(3), // 7437 B(JumpIfUndefined), U8(97), //
7464 B(JumpIfNullConstant), U8(2), // 7438 B(JumpIfNull), U8(95), //
7465 B(ToObject), // 7439 B(ToObject), //
7466 B(JumpIfNullConstant), U8(1), // 7440 B(JumpIfNull), U8(92), //
7467 B(MovWide), R16(161), R16(125), //
7468 B(Star), R(125), // 7441 B(Star), R(125), //
7469 B(MovWide), R16(125), R16(161), // 7442 B(MovWide), R16(125), R16(161), //
7470 B(ForInPrepareWide), R16(162), // 7443 B(ForInPrepareWide), R16(162), //
7471 B(LdaZero), // 7444 B(LdaZero), //
7472 B(MovWide), R16(165), R16(125), //
7473 B(Star), R(125), // 7445 B(Star), R(125), //
7474 B(MovWide), R16(125), R16(165), // 7446 B(MovWide), R16(125), R16(165), //
7475 B(MovWide), R16(165), R16(125), // 7447 B(MovWide), R16(165), R16(125), //
7476 B(MovWide), R16(164), R16(126), // 7448 B(MovWide), R16(164), R16(126), //
7477 B(ForInDone), R(125), R(126), // 7449 B(ForInDone), R(125), R(126), //
7478 B(MovWide), R16(126), R16(164), // 7450 B(JumpIfTrue), U8(59), //
7479 B(MovWide), R16(125), R16(165), //
7480 B(JumpIfToBooleanTrue), U8(89), //
7481 B(ForInNextWide), R16(161), R16(165), R16(162), // 7451 B(ForInNextWide), R16(161), R16(165), R16(162), //
7482 B(JumpIfUndefined), U8(54), // 7452 B(JumpIfUndefined), U8(34), //
7483 B(MovWide), R16(132), R16(125), //
7484 B(Star), R(125), // 7453 B(Star), R(125), //
7485 B(MovWide), R16(125), R16(132), // 7454 B(MovWide), R16(125), R16(132), //
7486 B(Ldar), R(1), // 7455 B(Ldar), R(1), //
7487 B(MovWide), R16(166), R16(125), //
7488 B(Star), R(125), // 7456 B(Star), R(125), //
7489 B(MovWide), R16(125), R16(166), // 7457 B(MovWide), R16(125), R16(166), //
7490 B(MovWide), R16(132), R16(125), // 7458 B(MovWide), R16(132), R16(125), //
7491 B(Ldar), R(125), // 7459 B(Ldar), R(125), //
7492 B(MovWide), R16(125), R16(132), //
7493 B(MovWide), R16(166), R16(125), // 7460 B(MovWide), R16(166), R16(125), //
7494 B(Add), R(125), // 7461 B(Add), R(125), //
7495 B(MovWide), R16(125), R16(166), //
7496 B(Star), R(1), // 7462 B(Star), R(1), //
7497 B(MovWide), R16(165), R16(125), // 7463 B(MovWide), R16(165), R16(125), //
7498 B(ForInStep), R(125), // 7464 B(ForInStep), R(125), //
7499 B(MovWide), R16(125), R16(165), //
7500 B(MovWide), R16(165), R16(125), //
7501 B(Star), R(125), // 7465 B(Star), R(125), //
7502 B(MovWide), R16(125), R16(165), // 7466 B(MovWide), R16(125), R16(165), //
7503 B(Jump), U8(-110), // 7467 B(Jump), U8(-70), //
7504 B(Ldar), R(1), // 7468 B(Ldar), R(1), //
7505 B(Return), // 7469 B(Return), //
7506 }, 7470 },
7507 4, 7471 1,
7508 {1234, 142, 145, 147}}, 7472 {1234}},
7509 {"x0 = %Add(x64, x63);\n" 7473 {"x0 = %Add(x64, x63);\n"
7510 "x1 = %Add(x27, x143);\n" 7474 "x1 = %Add(x27, x143);\n"
7511 "%TheHole();\n" 7475 "%TheHole();\n"
7512 "return x1;\n", 7476 "return x1;\n",
7513 163 * kPointerSize, 7477 163 * kPointerSize,
7514 1, 7478 1,
7515 90, 7479 65,
7516 { 7480 {
7517 B(Ldar), R(64), // 7481 B(Ldar), R(64), //
7518 B(MovWide), R16(161), R16(125), //
7519 B(Star), R(125), // 7482 B(Star), R(125), //
7520 B(MovWide), R16(125), R16(161), // 7483 B(MovWide), R16(125), R16(161), //
7521 B(Ldar), R(63), // 7484 B(Ldar), R(63), //
7522 B(MovWide), R16(162), R16(125), //
7523 B(Star), R(125), // 7485 B(Star), R(125), //
7524 B(MovWide), R16(125), R16(162), // 7486 B(MovWide), R16(125), R16(162), //
7525 B(CallRuntimeWide), U16(Runtime::kAdd), R16(161), U8(2), // 7487 B(CallRuntimeWide), U16(Runtime::kAdd), R16(161), U8(2), //
7526 B(Star), R(0), // 7488 B(Star), R(0), //
7527 B(Ldar), R(27), // 7489 B(Ldar), R(27), //
7528 B(MovWide), R16(161), R16(125), //
7529 B(Star), R(125), // 7490 B(Star), R(125), //
7530 B(MovWide), R16(125), R16(161), // 7491 B(MovWide), R16(125), R16(161), //
7531 B(MovWide), R16(147), R16(125), // 7492 B(MovWide), R16(147), R16(125), //
7532 B(Ldar), R(125), // 7493 B(Ldar), R(125), //
7533 B(MovWide), R16(125), R16(147), //
7534 B(MovWide), R16(162), R16(125), //
7535 B(Star), R(125), // 7494 B(Star), R(125), //
7536 B(MovWide), R16(125), R16(162), // 7495 B(MovWide), R16(125), R16(162), //
7537 B(CallRuntimeWide), U16(Runtime::kAdd), R16(161), U8(2), // 7496 B(CallRuntimeWide), U16(Runtime::kAdd), R16(161), U8(2), //
7538 B(Star), R(1), // 7497 B(Star), R(1), //
7539 B(CallRuntime), U16(Runtime::kTheHole), R(0), U8(0), // 7498 B(CallRuntime), U16(Runtime::kTheHole), R(0), U8(0), //
7540 B(Ldar), R(1), // 7499 B(Ldar), R(1), //
7541 B(Return), // 7500 B(Return), //
7542 }}}; 7501 }}};
7543 7502
7544 for (size_t i = 0; i < arraysize(snippets); ++i) { 7503 for (size_t i = 0; i < arraysize(snippets); ++i) {
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
7607 Handle<BytecodeArray> bytecode_array = 7566 Handle<BytecodeArray> bytecode_array =
7608 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet); 7567 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet);
7609 CheckBytecodeArrayEqual(snippets[i], bytecode_array); 7568 CheckBytecodeArrayEqual(snippets[i], bytecode_array);
7610 } 7569 }
7611 FLAG_harmony_do_expressions = old_flag; 7570 FLAG_harmony_do_expressions = old_flag;
7612 } 7571 }
7613 7572
7614 } // namespace interpreter 7573 } // namespace interpreter
7615 } // namespace internal 7574 } // namespace internal
7616 } // namespace v8 7575 } // namespace v8
OLDNEW
« no previous file with comments | « src/interpreter/register-translator.cc ('k') | test/cctest/interpreter/test-interpreter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698