| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 565 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 576 | 576 |
| 577 // Unlink the stack handler on top of the stack from the try handler chain. | 577 // Unlink the stack handler on top of the stack from the try handler chain. |
| 578 void PopTryHandler(); | 578 void PopTryHandler(); |
| 579 | 579 |
| 580 // Throw to the top handler in the try hander chain. | 580 // Throw to the top handler in the try hander chain. |
| 581 void Throw(Register value); | 581 void Throw(Register value); |
| 582 | 582 |
| 583 // Throw past all JS frames to the top JS entry frame. | 583 // Throw past all JS frames to the top JS entry frame. |
| 584 void ThrowUncatchable(Register value); | 584 void ThrowUncatchable(Register value); |
| 585 | 585 |
| 586 // Throw a message string as an exception. |
| 587 void Throw(BailoutReason reason); |
| 588 |
| 589 // Throw a message string as an exception if a condition is not true. |
| 590 void ThrowIf(Condition cc, BailoutReason reason); |
| 591 |
| 586 // --------------------------------------------------------------------------- | 592 // --------------------------------------------------------------------------- |
| 587 // Inline caching support | 593 // Inline caching support |
| 588 | 594 |
| 589 // Generate code for checking access rights - used for security checks | 595 // Generate code for checking access rights - used for security checks |
| 590 // on access to global objects across environments. The holder register | 596 // on access to global objects across environments. The holder register |
| 591 // is left untouched, but the scratch register is clobbered. | 597 // is left untouched, but the scratch register is clobbered. |
| 592 void CheckAccessGlobalProxy(Register holder_reg, | 598 void CheckAccessGlobalProxy(Register holder_reg, |
| 593 Register scratch1, | 599 Register scratch1, |
| 594 Register scratch2, | 600 Register scratch2, |
| 595 Label* miss); | 601 Label* miss); |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 764 // Call a runtime routine. | 770 // Call a runtime routine. |
| 765 void CallRuntime(const Runtime::Function* f, | 771 void CallRuntime(const Runtime::Function* f, |
| 766 int num_arguments, | 772 int num_arguments, |
| 767 SaveFPRegsMode save_doubles = kDontSaveFPRegs); | 773 SaveFPRegsMode save_doubles = kDontSaveFPRegs); |
| 768 void CallRuntimeSaveDoubles(Runtime::FunctionId id) { | 774 void CallRuntimeSaveDoubles(Runtime::FunctionId id) { |
| 769 const Runtime::Function* function = Runtime::FunctionForId(id); | 775 const Runtime::Function* function = Runtime::FunctionForId(id); |
| 770 CallRuntime(function, function->nargs, kSaveFPRegs); | 776 CallRuntime(function, function->nargs, kSaveFPRegs); |
| 771 } | 777 } |
| 772 | 778 |
| 773 // Convenience function: Same as above, but takes the fid instead. | 779 // Convenience function: Same as above, but takes the fid instead. |
| 774 void CallRuntime(Runtime::FunctionId id, int num_arguments) { | 780 void CallRuntime(Runtime::FunctionId id, |
| 775 CallRuntime(Runtime::FunctionForId(id), num_arguments); | 781 int num_arguments, |
| 782 SaveFPRegsMode save_doubles = kDontSaveFPRegs) { |
| 783 CallRuntime(Runtime::FunctionForId(id), num_arguments, save_doubles); |
| 776 } | 784 } |
| 777 | 785 |
| 778 // Convenience function: call an external reference. | 786 // Convenience function: call an external reference. |
| 779 void CallExternalReference(ExternalReference ref, int num_arguments); | 787 void CallExternalReference(ExternalReference ref, int num_arguments); |
| 780 | 788 |
| 781 // Tail call of a runtime routine (jump). | 789 // Tail call of a runtime routine (jump). |
| 782 // Like JumpToExternalReference, but also takes care of passing the number | 790 // Like JumpToExternalReference, but also takes care of passing the number |
| 783 // of parameters. | 791 // of parameters. |
| 784 void TailCallExternalReference(const ExternalReference& ext, | 792 void TailCallExternalReference(const ExternalReference& ext, |
| 785 int num_arguments, | 793 int num_arguments, |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 934 | 942 |
| 935 // Checks if the given register or operand is a unique name | 943 // Checks if the given register or operand is a unique name |
| 936 void JumpIfNotUniqueName(Register reg, Label* not_unique_name, | 944 void JumpIfNotUniqueName(Register reg, Label* not_unique_name, |
| 937 Label::Distance distance = Label::kFar) { | 945 Label::Distance distance = Label::kFar) { |
| 938 JumpIfNotUniqueName(Operand(reg), not_unique_name, distance); | 946 JumpIfNotUniqueName(Operand(reg), not_unique_name, distance); |
| 939 } | 947 } |
| 940 | 948 |
| 941 void JumpIfNotUniqueName(Operand operand, Label* not_unique_name, | 949 void JumpIfNotUniqueName(Operand operand, Label* not_unique_name, |
| 942 Label::Distance distance = Label::kFar); | 950 Label::Distance distance = Label::kFar); |
| 943 | 951 |
| 952 void EmitSeqStringSetCharCheck(Register string, |
| 953 Register index, |
| 954 Register value, |
| 955 uint32_t encoding_mask); |
| 956 |
| 944 static int SafepointRegisterStackIndex(Register reg) { | 957 static int SafepointRegisterStackIndex(Register reg) { |
| 945 return SafepointRegisterStackIndex(reg.code()); | 958 return SafepointRegisterStackIndex(reg.code()); |
| 946 } | 959 } |
| 947 | 960 |
| 948 // Activation support. | 961 // Activation support. |
| 949 void EnterFrame(StackFrame::Type type); | 962 void EnterFrame(StackFrame::Type type); |
| 950 void LeaveFrame(StackFrame::Type type); | 963 void LeaveFrame(StackFrame::Type type); |
| 951 | 964 |
| 952 // Expects object in eax and returns map with validated enum cache | 965 // Expects object in eax and returns map with validated enum cache |
| 953 // in eax. Assumes that any other register can be used as a scratch. | 966 // in eax. Assumes that any other register can be used as a scratch. |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1116 } \ | 1129 } \ |
| 1117 masm-> | 1130 masm-> |
| 1118 #else | 1131 #else |
| 1119 #define ACCESS_MASM(masm) masm-> | 1132 #define ACCESS_MASM(masm) masm-> |
| 1120 #endif | 1133 #endif |
| 1121 | 1134 |
| 1122 | 1135 |
| 1123 } } // namespace v8::internal | 1136 } } // namespace v8::internal |
| 1124 | 1137 |
| 1125 #endif // V8_IA32_MACRO_ASSEMBLER_IA32_H_ | 1138 #endif // V8_IA32_MACRO_ASSEMBLER_IA32_H_ |
| OLD | NEW |