| OLD | NEW |
| 1 // Copyright 2009 the V8 project authors. All rights reserved. | 1 // Copyright 2009 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 419 void Test(const Operand& dst, Smi* source); | 419 void Test(const Operand& dst, Smi* source); |
| 420 | 420 |
| 421 // --------------------------------------------------------------------------- | 421 // --------------------------------------------------------------------------- |
| 422 // String macros. | 422 // String macros. |
| 423 void JumpIfNotBothSequentialAsciiStrings(Register first_object, | 423 void JumpIfNotBothSequentialAsciiStrings(Register first_object, |
| 424 Register second_object, | 424 Register second_object, |
| 425 Register scratch1, | 425 Register scratch1, |
| 426 Register scratch2, | 426 Register scratch2, |
| 427 Label* on_not_both_flat_ascii); | 427 Label* on_not_both_flat_ascii); |
| 428 | 428 |
| 429 // Check whether the instance type represents a flat ascii string. Jump to the |
| 430 // label if not. If the instance type can be scratched specify same register |
| 431 // for both instance type and scratch. |
| 432 void JumpIfInstanceTypeIsNotSequentialAscii(Register instance_type, |
| 433 Register scratch, |
| 434 Label *on_not_flat_ascii_string); |
| 435 |
| 436 void JumpIfBothInstanceTypesAreNotSequentialAscii( |
| 437 Register first_object_instance_type, |
| 438 Register second_object_instance_type, |
| 439 Register scratch1, |
| 440 Register scratch2, |
| 441 Label* on_fail); |
| 442 |
| 429 // --------------------------------------------------------------------------- | 443 // --------------------------------------------------------------------------- |
| 430 // Macro instructions. | 444 // Macro instructions. |
| 431 | 445 |
| 432 // Load a register with a long value as efficiently as possible. | 446 // Load a register with a long value as efficiently as possible. |
| 433 void Set(Register dst, int64_t x); | 447 void Set(Register dst, int64_t x); |
| 434 void Set(const Operand& dst, int64_t x); | 448 void Set(const Operand& dst, int64_t x); |
| 435 | 449 |
| 436 // Handle support | 450 // Handle support |
| 437 void Move(Register dst, Handle<Object> source); | 451 void Move(Register dst, Handle<Object> source); |
| 438 void Move(const Operand& dst, Handle<Object> source); | 452 void Move(const Operand& dst, Handle<Object> source); |
| (...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 638 // Call a code stub. | 652 // Call a code stub. |
| 639 void CallStub(CodeStub* stub); | 653 void CallStub(CodeStub* stub); |
| 640 | 654 |
| 641 // Tail call a code stub (jump). | 655 // Tail call a code stub (jump). |
| 642 void TailCallStub(CodeStub* stub); | 656 void TailCallStub(CodeStub* stub); |
| 643 | 657 |
| 644 // Return from a code stub after popping its arguments. | 658 // Return from a code stub after popping its arguments. |
| 645 void StubReturn(int argc); | 659 void StubReturn(int argc); |
| 646 | 660 |
| 647 // Call a runtime routine. | 661 // Call a runtime routine. |
| 648 // Eventually this should be used for all C calls. | |
| 649 void CallRuntime(Runtime::Function* f, int num_arguments); | 662 void CallRuntime(Runtime::Function* f, int num_arguments); |
| 650 | 663 |
| 651 // Convenience function: Same as above, but takes the fid instead. | 664 // Convenience function: Same as above, but takes the fid instead. |
| 652 void CallRuntime(Runtime::FunctionId id, int num_arguments); | 665 void CallRuntime(Runtime::FunctionId id, int num_arguments); |
| 653 | 666 |
| 654 // Convenience function: call an external reference. | 667 // Convenience function: call an external reference. |
| 655 void CallExternalReference(const ExternalReference& ext, | 668 void CallExternalReference(const ExternalReference& ext, |
| 656 int num_arguments); | 669 int num_arguments); |
| 657 | 670 |
| 658 // Tail call of a runtime routine (jump). | 671 // Tail call of a runtime routine (jump). |
| 659 // Like JumpToRuntime, but also takes care of passing the number | 672 // Like JumpToExternalReference, but also takes care of passing the number |
| 660 // of arguments. | 673 // of parameters. |
| 661 void TailCallRuntime(const ExternalReference& ext, | 674 void TailCallExternalReference(const ExternalReference& ext, |
| 675 int num_arguments, |
| 676 int result_size); |
| 677 |
| 678 // Convenience function: tail call a runtime routine (jump). |
| 679 void TailCallRuntime(Runtime::FunctionId fid, |
| 662 int num_arguments, | 680 int num_arguments, |
| 663 int result_size); | 681 int result_size); |
| 664 | 682 |
| 665 // Jump to a runtime routine. | 683 // Jump to a runtime routine. |
| 666 void JumpToRuntime(const ExternalReference& ext, int result_size); | 684 void JumpToExternalReference(const ExternalReference& ext, int result_size); |
| 667 | 685 |
| 668 // Before calling a C-function from generated code, align arguments on stack. | 686 // Before calling a C-function from generated code, align arguments on stack. |
| 669 // After aligning the frame, arguments must be stored in esp[0], esp[4], | 687 // After aligning the frame, arguments must be stored in esp[0], esp[4], |
| 670 // etc., not pushed. The argument count assumes all arguments are word sized. | 688 // etc., not pushed. The argument count assumes all arguments are word sized. |
| 671 // The number of slots reserved for arguments depends on platform. On Windows | 689 // The number of slots reserved for arguments depends on platform. On Windows |
| 672 // stack slots are reserved for the arguments passed in registers. On other | 690 // stack slots are reserved for the arguments passed in registers. On other |
| 673 // platforms stack slots are only reserved for the arguments actually passed | 691 // platforms stack slots are only reserved for the arguments actually passed |
| 674 // on the stack. | 692 // on the stack. |
| 675 void PrepareCallCFunction(int num_arguments); | 693 void PrepareCallCFunction(int num_arguments); |
| 676 | 694 |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 804 } \ | 822 } \ |
| 805 masm-> | 823 masm-> |
| 806 #else | 824 #else |
| 807 #define ACCESS_MASM(masm) masm-> | 825 #define ACCESS_MASM(masm) masm-> |
| 808 #endif | 826 #endif |
| 809 | 827 |
| 810 | 828 |
| 811 } } // namespace v8::internal | 829 } } // namespace v8::internal |
| 812 | 830 |
| 813 #endif // V8_X64_MACRO_ASSEMBLER_X64_H_ | 831 #endif // V8_X64_MACRO_ASSEMBLER_X64_H_ |
| OLD | NEW |