OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 class MacroAssembler: public Assembler { | 83 class MacroAssembler: public Assembler { |
84 public: | 84 public: |
85 // The isolate parameter can be NULL if the macro assembler should | 85 // The isolate parameter can be NULL if the macro assembler should |
86 // not use isolate-dependent functionality. In this case, it's the | 86 // not use isolate-dependent functionality. In this case, it's the |
87 // responsibility of the caller to never invoke such function on the | 87 // responsibility of the caller to never invoke such function on the |
88 // macro assembler. | 88 // macro assembler. |
89 MacroAssembler(Isolate* isolate, void* buffer, int size); | 89 MacroAssembler(Isolate* isolate, void* buffer, int size); |
90 | 90 |
91 // Jump, Call, and Ret pseudo instructions implementing inter-working. | 91 // Jump, Call, and Ret pseudo instructions implementing inter-working. |
92 void Jump(Register target, Condition cond = al); | 92 void Jump(Register target, Condition cond = al); |
93 void Jump(byte* target, RelocInfo::Mode rmode, Condition cond = al); | 93 void Jump(Address target, RelocInfo::Mode rmode, Condition cond = al); |
94 void Jump(Handle<Code> code, RelocInfo::Mode rmode, Condition cond = al); | 94 void Jump(Handle<Code> code, RelocInfo::Mode rmode, Condition cond = al); |
95 int CallSize(Register target, Condition cond = al); | 95 int CallSize(Register target, Condition cond = al); |
96 void Call(Register target, Condition cond = al); | 96 void Call(Register target, Condition cond = al); |
97 int CallSize(byte* target, RelocInfo::Mode rmode, Condition cond = al); | 97 int CallSize(Address target, RelocInfo::Mode rmode, Condition cond = al); |
98 void Call(byte* target, RelocInfo::Mode rmode, Condition cond = al); | 98 void Call(Address target, RelocInfo::Mode rmode, Condition cond = al); |
99 int CallSize(Handle<Code> code, RelocInfo::Mode rmode, Condition cond = al); | 99 int CallSize(Handle<Code> code, |
| 100 RelocInfo::Mode rmode = RelocInfo::CODE_TARGET, |
| 101 unsigned ast_id = kNoASTId, |
| 102 Condition cond = al); |
100 void Call(Handle<Code> code, | 103 void Call(Handle<Code> code, |
101 RelocInfo::Mode rmode, | 104 RelocInfo::Mode rmode = RelocInfo::CODE_TARGET, |
102 Condition cond = al); | 105 unsigned ast_id = kNoASTId, |
103 void CallWithAstId(Handle<Code> code, | |
104 RelocInfo::Mode rmode, | |
105 unsigned ast_id, | |
106 Condition cond = al); | 106 Condition cond = al); |
107 void Ret(Condition cond = al); | 107 void Ret(Condition cond = al); |
108 | 108 |
109 // Emit code to discard a non-negative number of pointer-sized elements | 109 // Emit code to discard a non-negative number of pointer-sized elements |
110 // from the stack, clobbering only the sp register. | 110 // from the stack, clobbering only the sp register. |
111 void Drop(int count, Condition cond = al); | 111 void Drop(int count, Condition cond = al); |
112 | 112 |
113 void Ret(int drop, Condition cond = al); | 113 void Ret(int drop, Condition cond = al); |
114 | 114 |
115 // Swap two registers. If the scratch register is omitted then a slightly | 115 // Swap two registers. If the scratch register is omitted then a slightly |
(...skipping 913 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1029 void LoadInstanceDescriptors(Register map, Register descriptors); | 1029 void LoadInstanceDescriptors(Register map, Register descriptors); |
1030 | 1030 |
1031 private: | 1031 private: |
1032 void CallCFunctionHelper(Register function, | 1032 void CallCFunctionHelper(Register function, |
1033 ExternalReference function_reference, | 1033 ExternalReference function_reference, |
1034 Register scratch, | 1034 Register scratch, |
1035 int num_reg_arguments, | 1035 int num_reg_arguments, |
1036 int num_double_arguments); | 1036 int num_double_arguments); |
1037 | 1037 |
1038 void Jump(intptr_t target, RelocInfo::Mode rmode, Condition cond = al); | 1038 void Jump(intptr_t target, RelocInfo::Mode rmode, Condition cond = al); |
1039 int CallSize(intptr_t target, RelocInfo::Mode rmode, Condition cond = al); | |
1040 void Call(intptr_t target, | |
1041 RelocInfo::Mode rmode, | |
1042 Condition cond = al); | |
1043 | 1039 |
1044 // Helper functions for generating invokes. | 1040 // Helper functions for generating invokes. |
1045 void InvokePrologue(const ParameterCount& expected, | 1041 void InvokePrologue(const ParameterCount& expected, |
1046 const ParameterCount& actual, | 1042 const ParameterCount& actual, |
1047 Handle<Code> code_constant, | 1043 Handle<Code> code_constant, |
1048 Register code_reg, | 1044 Register code_reg, |
1049 Label* done, | 1045 Label* done, |
1050 InvokeFlag flag, | 1046 InvokeFlag flag, |
1051 const CallWrapper& call_wrapper, | 1047 const CallWrapper& call_wrapper, |
1052 CallKind call_kind); | 1048 CallKind call_kind); |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1129 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) | 1125 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) |
1130 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> | 1126 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> |
1131 #else | 1127 #else |
1132 #define ACCESS_MASM(masm) masm-> | 1128 #define ACCESS_MASM(masm) masm-> |
1133 #endif | 1129 #endif |
1134 | 1130 |
1135 | 1131 |
1136 } } // namespace v8::internal | 1132 } } // namespace v8::internal |
1137 | 1133 |
1138 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ | 1134 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ |
OLD | NEW |