Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jit/qv4baselinejit.cpp |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||
---|---|---|---|---|---|---|---|---|
1 | - | |||||||
2 | - | |||||||
3 | - | |||||||
4 | - | |||||||
5 | using namespace QV4; | - | ||||||
6 | using namespace QV4::JIT; | - | ||||||
7 | using namespace QV4::Moth; | - | ||||||
8 | - | |||||||
9 | BaselineJIT::BaselineJIT(Function *function) | - | ||||||
10 | : function(function) | - | ||||||
11 | , as(new Assembler(function->compilationUnit->constants)) | - | ||||||
12 | {} executed 13188 times by 64 tests: end of block Executed by:
| 13188 | ||||||
13 | - | |||||||
14 | BaselineJIT::~BaselineJIT() | - | ||||||
15 | {} | - | ||||||
16 | - | |||||||
17 | void BaselineJIT::generate() | - | ||||||
18 | { | - | ||||||
19 | - | |||||||
20 | const char *code = function->codeData; | - | ||||||
21 | uint len = function->compiledFunction->codeSize; | - | ||||||
22 | labels = collectLabelsInBytecode(code, len); | - | ||||||
23 | - | |||||||
24 | as->generatePrologue(); | - | ||||||
25 | decode(code, len); | - | ||||||
26 | as->generateEpilogue(); | - | ||||||
27 | - | |||||||
28 | as->link(function); | - | ||||||
29 | - | |||||||
30 | } executed 13188 times by 64 tests: end of block Executed by:
| 13188 | ||||||
31 | - | |||||||
32 | - | |||||||
33 | - | |||||||
34 | - | |||||||
35 | void BaselineJIT::generate_Ret() | - | ||||||
36 | { | - | ||||||
37 | as->ret(); | - | ||||||
38 | } executed 13404 times by 64 tests: end of block Executed by:
| 13404 | ||||||
39 | - | |||||||
40 | void BaselineJIT::generate_Debug() { do { ((false) ? static_cast<void>(0) : qt_assert_x("Q_UNREACHABLE()", "Q_UNREACHABLE was reached", __FILE__, 84)); __builtin_unreachable(); } while (false); } never executed: end of block | 0 | ||||||
41 | - | |||||||
42 | void BaselineJIT::generate_LoadConst(int index) | - | ||||||
43 | { | - | ||||||
44 | as->loadConst(index); | - | ||||||
45 | } executed 126 times by 7 tests: end of block Executed by:
| 126 | ||||||
46 | - | |||||||
47 | void BaselineJIT::generate_LoadZero() | - | ||||||
48 | { | - | ||||||
49 | as->loadValue(Encode(int(0))); | - | ||||||
50 | } executed 724 times by 24 tests: end of block Executed by:
| 724 | ||||||
51 | - | |||||||
52 | void BaselineJIT::generate_LoadTrue() | - | ||||||
53 | { | - | ||||||
54 | as->loadValue(Encode(true)); | - | ||||||
55 | } executed 290 times by 14 tests: end of block Executed by:
| 290 | ||||||
56 | - | |||||||
57 | void BaselineJIT::generate_LoadFalse() | - | ||||||
58 | { | - | ||||||
59 | as->loadValue(Encode(false)); | - | ||||||
60 | } executed 184 times by 14 tests: end of block Executed by:
| 184 | ||||||
61 | - | |||||||
62 | void BaselineJIT::generate_LoadNull() | - | ||||||
63 | { | - | ||||||
64 | as->loadValue(Encode::null()); | - | ||||||
65 | } executed 248 times by 7 tests: end of block Executed by:
| 248 | ||||||
66 | - | |||||||
67 | void BaselineJIT::generate_LoadUndefined() | - | ||||||
68 | { | - | ||||||
69 | as->loadValue(Encode::undefined()); | - | ||||||
70 | } executed 1472 times by 37 tests: end of block Executed by:
| 1472 | ||||||
71 | - | |||||||
72 | void BaselineJIT::generate_LoadInt(int value) | - | ||||||
73 | { | - | ||||||
74 | - | |||||||
75 | as->loadValue(Encode(value)); | - | ||||||
76 | } executed 1840 times by 34 tests: end of block Executed by:
| 1840 | ||||||
77 | - | |||||||
78 | void BaselineJIT::generate_MoveConst(int constIndex, int destTemp) | - | ||||||
79 | { | - | ||||||
80 | as->copyConst(constIndex, destTemp); | - | ||||||
81 | } executed 964 times by 18 tests: end of block Executed by:
| 964 | ||||||
82 | - | |||||||
83 | void BaselineJIT::generate_LoadReg(int reg) | - | ||||||
84 | { | - | ||||||
85 | as->loadReg(reg); | - | ||||||
86 | } executed 2654 times by 31 tests: end of block Executed by:
| 2654 | ||||||
87 | - | |||||||
88 | void BaselineJIT::generate_StoreReg(int reg) | - | ||||||
89 | { | - | ||||||
90 | as->storeReg(reg); | - | ||||||
91 | } executed 28608 times by 63 tests: end of block Executed by:
| 28608 | ||||||
92 | - | |||||||
93 | void BaselineJIT::generate_MoveReg(int srcReg, int destReg) | - | ||||||
94 | { | - | ||||||
95 | - | |||||||
96 | as->moveReg(srcReg, destReg); | - | ||||||
97 | } executed 3186 times by 19 tests: end of block Executed by:
| 3186 | ||||||
98 | - | |||||||
99 | void BaselineJIT::generate_LoadLocal(int index) | - | ||||||
100 | { | - | ||||||
101 | as->loadLocal(index); | - | ||||||
102 | } executed 382 times by 8 tests: end of block Executed by:
| 382 | ||||||
103 | - | |||||||
104 | void BaselineJIT::generate_StoreLocal(int index) | - | ||||||
105 | { | - | ||||||
106 | as->checkException(); | - | ||||||
107 | as->storeLocal(index); | - | ||||||
108 | } executed 46 times by 4 tests: end of block Executed by:
| 46 | ||||||
109 | - | |||||||
110 | void BaselineJIT::generate_LoadScopedLocal(int scope, int index) | - | ||||||
111 | { | - | ||||||
112 | as->loadLocal(index, scope); | - | ||||||
113 | } executed 24 times by 3 tests: end of block Executed by:
| 24 | ||||||
114 | - | |||||||
115 | void BaselineJIT::generate_StoreScopedLocal(int scope, int index) | - | ||||||
116 | { | - | ||||||
117 | as->checkException(); | - | ||||||
118 | as->storeLocal(index, scope); | - | ||||||
119 | } never executed: end of block | 0 | ||||||
120 | - | |||||||
121 | void BaselineJIT::generate_LoadRuntimeString(int stringId) | - | ||||||
122 | { | - | ||||||
123 | as->loadString(stringId); | - | ||||||
124 | } executed 3286 times by 31 tests: end of block Executed by:
| 3286 | ||||||
125 | - | |||||||
126 | void BaselineJIT::generate_MoveRegExp(int regExpId, int destReg) | - | ||||||
127 | { | - | ||||||
128 | as->prepareCallWithArgCount(2); | - | ||||||
129 | as->passInt32AsArg(regExpId, 1); | - | ||||||
130 | as->passEngineAsArg(0); | - | ||||||
131 | as->callRuntime("Runtime::method_regexpLiteral", reinterpret_cast<void *>(&Runtime::method_regexpLiteral), Assembler::ResultInAccumulator); | - | ||||||
132 | as->storeReg(destReg); | - | ||||||
133 | } never executed: end of block | 0 | ||||||
134 | - | |||||||
135 | void BaselineJIT::generate_LoadClosure(int value) | - | ||||||
136 | { | - | ||||||
137 | as->prepareCallWithArgCount(2); | - | ||||||
138 | as->passInt32AsArg(value, 1); | - | ||||||
139 | as->passEngineAsArg(0); | - | ||||||
140 | as->callRuntime("Runtime::method_closure", reinterpret_cast<void *>(&Runtime::method_closure), Assembler::ResultInAccumulator); | - | ||||||
141 | } executed 26 times by 6 tests: end of block Executed by:
| 26 | ||||||
142 | - | |||||||
143 | void BaselineJIT::generate_LoadName(int name) | - | ||||||
144 | { | - | ||||||
145 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
146 | as->prepareCallWithArgCount(2); | - | ||||||
147 | as->passInt32AsArg(name, 1); | - | ||||||
148 | as->passEngineAsArg(0); | - | ||||||
149 | as->callRuntime("Runtime::method_loadName", reinterpret_cast<void *>(&Runtime::method_loadName), Assembler::ResultInAccumulator); | - | ||||||
150 | as->checkException(); | - | ||||||
151 | } executed 14640 times by 47 tests: end of block Executed by:
| 14640 | ||||||
152 | - | |||||||
153 | void BaselineJIT::generate_LoadGlobalLookup(int index) | - | ||||||
154 | { | - | ||||||
155 | as->prepareCallWithArgCount(3); | - | ||||||
156 | as->passInt32AsArg(index, 2); | - | ||||||
157 | as->passFunctionAsArg(1); | - | ||||||
158 | as->passEngineAsArg(0); | - | ||||||
159 | as->callRuntime("Helpers::loadGlobalLookup", reinterpret_cast<void *>(&Helpers::loadGlobalLookup), Assembler::ResultInAccumulator); | - | ||||||
160 | as->checkException(); | - | ||||||
161 | } executed 8 times by 3 tests: end of block Executed by:
| 8 | ||||||
162 | - | |||||||
163 | void BaselineJIT::generate_StoreNameSloppy(int name) | - | ||||||
164 | { | - | ||||||
165 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
166 | as->saveAccumulatorInFrame(); | - | ||||||
167 | as->prepareCallWithArgCount(3); | - | ||||||
168 | as->passAccumulatorAsArg(2); | - | ||||||
169 | as->passInt32AsArg(name, 1); | - | ||||||
170 | as->passEngineAsArg(0); | - | ||||||
171 | as->callRuntime("Runtime::method_storeNameSloppy", reinterpret_cast<void *>(&Runtime::method_storeNameSloppy), Assembler::IgnoreResult); | - | ||||||
172 | as->checkException(); | - | ||||||
173 | } executed 44 times by 7 tests: end of block Executed by:
| 44 | ||||||
174 | - | |||||||
175 | void BaselineJIT::generate_StoreNameStrict(int name) | - | ||||||
176 | { | - | ||||||
177 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
178 | as->saveAccumulatorInFrame(); | - | ||||||
179 | as->prepareCallWithArgCount(3); | - | ||||||
180 | as->passAccumulatorAsArg(2); | - | ||||||
181 | as->passInt32AsArg(name, 1); | - | ||||||
182 | as->passEngineAsArg(0); | - | ||||||
183 | as->callRuntime("Runtime::method_storeNameStrict", reinterpret_cast<void *>(&Runtime::method_storeNameStrict), Assembler::IgnoreResult); | - | ||||||
184 | as->checkException(); | - | ||||||
185 | } executed 2 times by 1 test: end of block Executed by:
| 2 | ||||||
186 | - | |||||||
187 | void BaselineJIT::generate_LoadElement(int base) | - | ||||||
188 | { | - | ||||||
189 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
190 | as->saveAccumulatorInFrame(); | - | ||||||
191 | as->prepareCallWithArgCount(3); | - | ||||||
192 | as->passAccumulatorAsArg(2); | - | ||||||
193 | as->passRegAsArg(base, 1); | - | ||||||
194 | as->passEngineAsArg(0); | - | ||||||
195 | as->callRuntime("Runtime::method_loadElement", reinterpret_cast<void *>(&Runtime::method_loadElement), Assembler::ResultInAccumulator); | - | ||||||
196 | as->checkException(); | - | ||||||
197 | } executed 458 times by 15 tests: end of block Executed by:
| 458 | ||||||
198 | - | |||||||
199 | void BaselineJIT::generate_StoreElement(int base, int index) | - | ||||||
200 | { | - | ||||||
201 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
202 | as->saveAccumulatorInFrame(); | - | ||||||
203 | as->prepareCallWithArgCount(4); | - | ||||||
204 | as->passAccumulatorAsArg(3); | - | ||||||
205 | as->passRegAsArg(index, 2); | - | ||||||
206 | as->passRegAsArg(base, 1); | - | ||||||
207 | as->passEngineAsArg(0); | - | ||||||
208 | as->callRuntime("Runtime::method_storeElement", reinterpret_cast<void *>(&Runtime::method_storeElement), Assembler::IgnoreResult); | - | ||||||
209 | as->checkException(); | - | ||||||
210 | } executed 368 times by 3 tests: end of block Executed by:
| 368 | ||||||
211 | - | |||||||
212 | void BaselineJIT::generate_LoadProperty(int name) | - | ||||||
213 | { | - | ||||||
214 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
215 | as->saveAccumulatorInFrame(); | - | ||||||
216 | as->prepareCallWithArgCount(3); | - | ||||||
217 | as->passInt32AsArg(name, 2); | - | ||||||
218 | as->passAccumulatorAsArg(1); | - | ||||||
219 | as->passEngineAsArg(0); | - | ||||||
220 | as->callRuntime("Runtime::method_loadProperty", reinterpret_cast<void *>(&Runtime::method_loadProperty), Assembler::ResultInAccumulator); | - | ||||||
221 | as->checkException(); | - | ||||||
222 | } executed 15022 times by 47 tests: end of block Executed by:
| 15022 | ||||||
223 | - | |||||||
224 | void BaselineJIT::generate_GetLookup(int index) | - | ||||||
225 | { | - | ||||||
226 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
227 | as->saveAccumulatorInFrame(); | - | ||||||
228 | as->prepareCallWithArgCount(4); | - | ||||||
229 | as->passAccumulatorAsArg(3); | - | ||||||
230 | as->passInt32AsArg(index, 2); | - | ||||||
231 | as->passFunctionAsArg(1); | - | ||||||
232 | as->passEngineAsArg(0); | - | ||||||
233 | as->callRuntime("Helpers::getLookup", reinterpret_cast<void *>(&Helpers::getLookup), Assembler::ResultInAccumulator); | - | ||||||
234 | as->checkException(); | - | ||||||
235 | } executed 32 times by 3 tests: end of block Executed by:
| 32 | ||||||
236 | - | |||||||
237 | void BaselineJIT::generate_StoreProperty(int name, int base) | - | ||||||
238 | { | - | ||||||
239 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
240 | as->saveAccumulatorInFrame(); | - | ||||||
241 | as->prepareCallWithArgCount(4); | - | ||||||
242 | as->passAccumulatorAsArg(3); | - | ||||||
243 | as->passInt32AsArg(name, 2); | - | ||||||
244 | as->passRegAsArg(base, 1); | - | ||||||
245 | as->passEngineAsArg(0); | - | ||||||
246 | as->callRuntime("Runtime::method_storeProperty", reinterpret_cast<void *>(&Runtime::method_storeProperty), Assembler::IgnoreResult); | - | ||||||
247 | as->checkException(); | - | ||||||
248 | } executed 904 times by 24 tests: end of block Executed by:
| 904 | ||||||
249 | - | |||||||
250 | void BaselineJIT::generate_SetLookup(int index, int base) | - | ||||||
251 | { | - | ||||||
252 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
253 | as->saveAccumulatorInFrame(); | - | ||||||
254 | as->prepareCallWithArgCount(4); | - | ||||||
255 | as->passAccumulatorAsArg(3); | - | ||||||
256 | as->passRegAsArg(base, 2); | - | ||||||
257 | as->passInt32AsArg(index, 1); | - | ||||||
258 | as->passFunctionAsArg(0); | - | ||||||
259 | as->callRuntime("Helpers::setLookup", reinterpret_cast<void *>(&Helpers::setLookup), Assembler::ResultInAccumulator); | - | ||||||
260 | as->checkException(); | - | ||||||
261 | } never executed: end of block | 0 | ||||||
262 | - | |||||||
263 | void BaselineJIT::generate_LoadSuperProperty(int property) | - | ||||||
264 | { | - | ||||||
265 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
266 | as->saveAccumulatorInFrame(); | - | ||||||
267 | as->prepareCallWithArgCount(2); | - | ||||||
268 | as->passRegAsArg(property, 1); | - | ||||||
269 | as->passEngineAsArg(0); | - | ||||||
270 | as->callRuntime("Runtime::method_loadSuperProperty", reinterpret_cast<void *>(&Runtime::method_loadSuperProperty), Assembler::ResultInAccumulator); | - | ||||||
271 | as->checkException(); | - | ||||||
272 | } never executed: end of block | 0 | ||||||
273 | - | |||||||
274 | void BaselineJIT::generate_StoreSuperProperty(int property) | - | ||||||
275 | { | - | ||||||
276 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
277 | as->saveAccumulatorInFrame(); | - | ||||||
278 | as->prepareCallWithArgCount(3); | - | ||||||
279 | as->passAccumulatorAsArg(2); | - | ||||||
280 | as->passRegAsArg(property, 1); | - | ||||||
281 | as->passFunctionAsArg(0); | - | ||||||
282 | as->callRuntime("Runtime::method_storeSuperProperty", reinterpret_cast<void *>(&Runtime::method_storeSuperProperty), Assembler::IgnoreResult); | - | ||||||
283 | as->checkException(); | - | ||||||
284 | } never executed: end of block | 0 | ||||||
285 | - | |||||||
286 | - | |||||||
287 | void BaselineJIT::generate_StoreScopeObjectProperty(int base, int propertyIndex) | - | ||||||
288 | { | - | ||||||
289 | as->saveAccumulatorInFrame(); | - | ||||||
290 | as->prepareCallWithArgCount(4); | - | ||||||
291 | as->passAccumulatorAsArg(3); | - | ||||||
292 | as->passInt32AsArg(propertyIndex, 2); | - | ||||||
293 | as->passRegAsArg(base, 1); | - | ||||||
294 | as->passEngineAsArg(0); | - | ||||||
295 | as->callRuntime("Runtime::method_storeQmlScopeObjectProperty", reinterpret_cast<void *>(&Runtime::method_storeQmlScopeObjectProperty), Assembler::IgnoreResult); | - | ||||||
296 | as->checkException(); | - | ||||||
297 | } executed 384 times by 21 tests: end of block Executed by:
| 384 | ||||||
298 | - | |||||||
299 | void BaselineJIT::generate_StoreContextObjectProperty(int base, int propertyIndex) | - | ||||||
300 | { | - | ||||||
301 | as->saveAccumulatorInFrame(); | - | ||||||
302 | as->prepareCallWithArgCount(4); | - | ||||||
303 | as->passAccumulatorAsArg(3); | - | ||||||
304 | as->passInt32AsArg(propertyIndex, 2); | - | ||||||
305 | as->passRegAsArg(base, 1); | - | ||||||
306 | as->passEngineAsArg(0); | - | ||||||
307 | as->callRuntime("Runtime::method_storeQmlContextObjectProperty", reinterpret_cast<void *>(&Runtime::method_storeQmlContextObjectProperty), Assembler::IgnoreResult); | - | ||||||
308 | as->checkException(); | - | ||||||
309 | } never executed: end of block | 0 | ||||||
310 | - | |||||||
311 | void BaselineJIT::generate_LoadScopeObjectProperty(int propertyIndex, int base, int captureRequired) | - | ||||||
312 | { | - | ||||||
313 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
314 | as->prepareCallWithArgCount(4); | - | ||||||
315 | as->passInt32AsArg(captureRequired, 3); | - | ||||||
316 | as->passInt32AsArg(propertyIndex, 2); | - | ||||||
317 | as->passRegAsArg(base, 1); | - | ||||||
318 | as->passEngineAsArg(0); | - | ||||||
319 | as->callRuntime("Runtime::method_loadQmlScopeObjectProperty", reinterpret_cast<void *>(&Runtime::method_loadQmlScopeObjectProperty), Assembler::ResultInAccumulator); | - | ||||||
320 | as->checkException(); | - | ||||||
321 | } executed 4474 times by 43 tests: end of block Executed by:
| 4474 | ||||||
322 | - | |||||||
323 | void BaselineJIT::generate_LoadContextObjectProperty(int propertyIndex, int base, int captureRequired) | - | ||||||
324 | { | - | ||||||
325 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
326 | as->prepareCallWithArgCount(4); | - | ||||||
327 | as->passInt32AsArg(captureRequired, 3); | - | ||||||
328 | as->passInt32AsArg(propertyIndex, 2); | - | ||||||
329 | as->passRegAsArg(base, 1); | - | ||||||
330 | as->passEngineAsArg(0); | - | ||||||
331 | as->callRuntime("Runtime::method_loadQmlContextObjectProperty", reinterpret_cast<void *>(&Runtime::method_loadQmlContextObjectProperty), Assembler::ResultInAccumulator); | - | ||||||
332 | as->checkException(); | - | ||||||
333 | } never executed: end of block | 0 | ||||||
334 | - | |||||||
335 | void BaselineJIT::generate_LoadIdObject(int index, int base) | - | ||||||
336 | { | - | ||||||
337 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
338 | as->prepareCallWithArgCount(3); | - | ||||||
339 | as->passInt32AsArg(index, 2); | - | ||||||
340 | as->passRegAsArg(base, 1); | - | ||||||
341 | as->passEngineAsArg(0); | - | ||||||
342 | as->callRuntime("Runtime::method_loadQmlIdObject", reinterpret_cast<void *>(&Runtime::method_loadQmlIdObject), Assembler::ResultInAccumulator); | - | ||||||
343 | as->checkException(); | - | ||||||
344 | } executed 4110 times by 32 tests: end of block Executed by:
| 4110 | ||||||
345 | - | |||||||
346 | void BaselineJIT::generate_Yield() | - | ||||||
347 | { | - | ||||||
348 | - | |||||||
349 | do { ((false) ? static_cast<void>(0) : qt_assert_x("Q_UNREACHABLE()", "Q_UNREACHABLE was reached", __FILE__, 393)); __builtin_unreachable(); } while (false); | - | ||||||
350 | } never executed: end of block | 0 | ||||||
351 | - | |||||||
352 | void BaselineJIT::generate_Resume(int) | - | ||||||
353 | { | - | ||||||
354 | - | |||||||
355 | do { ((false) ? static_cast<void>(0) : qt_assert_x("Q_UNREACHABLE()", "Q_UNREACHABLE was reached", __FILE__, 399)); __builtin_unreachable(); } while (false); | - | ||||||
356 | } never executed: end of block | 0 | ||||||
357 | - | |||||||
358 | void BaselineJIT::generate_CallValue(int name, int argc, int argv) | - | ||||||
359 | { | - | ||||||
360 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
361 | as->prepareCallWithArgCount(4); | - | ||||||
362 | as->passInt32AsArg(argc, 3); | - | ||||||
363 | as->passRegAsArg(argv, 2); | - | ||||||
364 | as->passRegAsArg(name, 1); | - | ||||||
365 | as->passEngineAsArg(0); | - | ||||||
366 | as->callRuntime("Runtime::method_callValue", reinterpret_cast<void *>(&Runtime::method_callValue), Assembler::ResultInAccumulator); | - | ||||||
367 | as->checkException(); | - | ||||||
368 | } executed 34 times by 6 tests: end of block Executed by:
| 34 | ||||||
369 | - | |||||||
370 | void BaselineJIT::generate_CallProperty(int name, int base, int argc, int argv) | - | ||||||
371 | { | - | ||||||
372 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
373 | as->prepareCallWithArgCount(5); | - | ||||||
374 | as->passInt32AsArg(argc, 4); | - | ||||||
375 | as->passRegAsArg(argv, 3); | - | ||||||
376 | as->passInt32AsArg(name, 2); | - | ||||||
377 | as->passRegAsArg(base, 1); | - | ||||||
378 | as->passEngineAsArg(0); | - | ||||||
379 | as->callRuntime("Runtime::method_callProperty", reinterpret_cast<void *>(&Runtime::method_callProperty), Assembler::ResultInAccumulator); | - | ||||||
380 | as->checkException(); | - | ||||||
381 | } executed 3972 times by 33 tests: end of block Executed by:
| 3972 | ||||||
382 | - | |||||||
383 | void BaselineJIT::generate_CallPropertyLookup(int lookupIndex, int base, int argc, int argv) | - | ||||||
384 | { | - | ||||||
385 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
386 | as->prepareCallWithArgCount(5); | - | ||||||
387 | as->passInt32AsArg(argc, 4); | - | ||||||
388 | as->passRegAsArg(argv, 3); | - | ||||||
389 | as->passInt32AsArg(lookupIndex, 2); | - | ||||||
390 | as->passRegAsArg(base, 1); | - | ||||||
391 | as->passEngineAsArg(0); | - | ||||||
392 | as->callRuntime("Runtime::method_callPropertyLookup", reinterpret_cast<void *>(&Runtime::method_callPropertyLookup), Assembler::ResultInAccumulator); | - | ||||||
393 | as->checkException(); | - | ||||||
394 | } executed 8 times by 3 tests: end of block Executed by:
| 8 | ||||||
395 | - | |||||||
396 | void BaselineJIT::generate_CallElement(int base, int index, int argc, int argv) | - | ||||||
397 | { | - | ||||||
398 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
399 | as->prepareCallWithArgCount(5); | - | ||||||
400 | as->passInt32AsArg(argc, 4); | - | ||||||
401 | as->passRegAsArg(argv, 3); | - | ||||||
402 | as->passRegAsArg(index, 2); | - | ||||||
403 | as->passRegAsArg(base, 1); | - | ||||||
404 | as->passEngineAsArg(0); | - | ||||||
405 | as->callRuntime("Runtime::method_callElement", reinterpret_cast<void *>(&Runtime::method_callElement), Assembler::ResultInAccumulator); | - | ||||||
406 | as->checkException(); | - | ||||||
407 | } executed 30 times by 3 tests: end of block Executed by:
| 30 | ||||||
408 | - | |||||||
409 | void BaselineJIT::generate_CallName(int name, int argc, int argv) | - | ||||||
410 | { | - | ||||||
411 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
412 | as->prepareCallWithArgCount(4); | - | ||||||
413 | as->passInt32AsArg(argc, 3); | - | ||||||
414 | as->passRegAsArg(argv, 2); | - | ||||||
415 | as->passInt32AsArg(name, 1); | - | ||||||
416 | as->passEngineAsArg(0); | - | ||||||
417 | as->callRuntime("Runtime::method_callName", reinterpret_cast<void *>(&Runtime::method_callName), Assembler::ResultInAccumulator); | - | ||||||
418 | as->checkException(); | - | ||||||
419 | } executed 372 times by 10 tests: end of block Executed by:
| 372 | ||||||
420 | - | |||||||
421 | void BaselineJIT::generate_CallPossiblyDirectEval(int argc, int argv) | - | ||||||
422 | { | - | ||||||
423 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
424 | as->prepareCallWithArgCount(3); | - | ||||||
425 | as->passInt32AsArg(argc, 2); | - | ||||||
426 | as->passRegAsArg(argv, 1); | - | ||||||
427 | as->passEngineAsArg(0); | - | ||||||
428 | as->callRuntime("Runtime::method_callPossiblyDirectEval", reinterpret_cast<void *>(&Runtime::method_callPossiblyDirectEval), Assembler::ResultInAccumulator); | - | ||||||
429 | as->checkException(); | - | ||||||
430 | } executed 14 times by 2 tests: end of block Executed by:
| 14 | ||||||
431 | - | |||||||
432 | void BaselineJIT::generate_CallGlobalLookup(int index, int argc, int argv) | - | ||||||
433 | { | - | ||||||
434 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
435 | as->prepareCallWithArgCount(4); | - | ||||||
436 | as->passInt32AsArg(argc, 3); | - | ||||||
437 | as->passRegAsArg(argv, 2); | - | ||||||
438 | as->passInt32AsArg(index, 1); | - | ||||||
439 | as->passEngineAsArg(0); | - | ||||||
440 | as->callRuntime("Runtime::method_callGlobalLookup", reinterpret_cast<void *>(&Runtime::method_callGlobalLookup), Assembler::ResultInAccumulator); | - | ||||||
441 | as->checkException(); | - | ||||||
442 | } executed 2 times by 1 test: end of block Executed by:
| 2 | ||||||
443 | - | |||||||
444 | void BaselineJIT::generate_CallScopeObjectProperty(int propIdx, int base, int argc, int argv) | - | ||||||
445 | { | - | ||||||
446 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
447 | as->prepareCallWithArgCount(5); | - | ||||||
448 | as->passInt32AsArg(argc, 4); | - | ||||||
449 | as->passRegAsArg(argv, 3); | - | ||||||
450 | as->passInt32AsArg(propIdx, 2); | - | ||||||
451 | as->passRegAsArg(base, 1); | - | ||||||
452 | as->passEngineAsArg(0); | - | ||||||
453 | as->callRuntime("Runtime::method_callQmlScopeObjectProperty", reinterpret_cast<void *>(&Runtime::method_callQmlScopeObjectProperty), Assembler::ResultInAccumulator); | - | ||||||
454 | as->checkException(); | - | ||||||
455 | } never executed: end of block | 0 | ||||||
456 | - | |||||||
457 | void BaselineJIT::generate_CallContextObjectProperty(int propIdx, int base, int argc, int argv) | - | ||||||
458 | { | - | ||||||
459 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
460 | as->prepareCallWithArgCount(5); | - | ||||||
461 | as->passInt32AsArg(argc, 4); | - | ||||||
462 | as->passRegAsArg(argv, 3); | - | ||||||
463 | as->passInt32AsArg(propIdx, 2); | - | ||||||
464 | as->passRegAsArg(base, 1); | - | ||||||
465 | as->passEngineAsArg(0); | - | ||||||
466 | as->callRuntime("Runtime::method_callQmlContextObjectProperty", reinterpret_cast<void *>(&Runtime::method_callQmlContextObjectProperty), Assembler::ResultInAccumulator); | - | ||||||
467 | as->checkException(); | - | ||||||
468 | } never executed: end of block | 0 | ||||||
469 | - | |||||||
470 | - | |||||||
471 | void BaselineJIT::generate_CallWithSpread(int func, int thisObject, int argc, int argv) | - | ||||||
472 | { | - | ||||||
473 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
474 | as->prepareCallWithArgCount(5); | - | ||||||
475 | as->passInt32AsArg(argc, 4); | - | ||||||
476 | as->passRegAsArg(argv, 3); | - | ||||||
477 | as->passRegAsArg(thisObject, 2); | - | ||||||
478 | as->passRegAsArg(func, 1); | - | ||||||
479 | as->passEngineAsArg(0); | - | ||||||
480 | as->callRuntime("Runtime::method_callWithSpread", reinterpret_cast<void *>(&Runtime::method_callWithSpread), Assembler::ResultInAccumulator); | - | ||||||
481 | as->checkException(); | - | ||||||
482 | } never executed: end of block | 0 | ||||||
483 | - | |||||||
484 | - | |||||||
485 | void BaselineJIT::generate_Construct(int func, int argc, int argv) | - | ||||||
486 | { | - | ||||||
487 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
488 | as->saveAccumulatorInFrame(); | - | ||||||
489 | as->prepareCallWithArgCount(5); | - | ||||||
490 | as->passInt32AsArg(argc, 4); | - | ||||||
491 | as->passRegAsArg(argv, 3); | - | ||||||
492 | as->passAccumulatorAsArg(2); | - | ||||||
493 | as->passRegAsArg(func, 1); | - | ||||||
494 | as->passEngineAsArg(0); | - | ||||||
495 | as->callRuntime("Runtime::method_construct", reinterpret_cast<void *>(&Runtime::method_construct), Assembler::ResultInAccumulator); | - | ||||||
496 | as->checkException(); | - | ||||||
497 | } executed 366 times by 8 tests: end of block Executed by:
| 366 | ||||||
498 | - | |||||||
499 | void BaselineJIT::generate_ConstructWithSpread(int func, int argc, int argv) | - | ||||||
500 | { | - | ||||||
501 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
502 | as->saveAccumulatorInFrame(); | - | ||||||
503 | as->prepareCallWithArgCount(5); | - | ||||||
504 | as->passInt32AsArg(argc, 4); | - | ||||||
505 | as->passRegAsArg(argv, 3); | - | ||||||
506 | as->passAccumulatorAsArg(2); | - | ||||||
507 | as->passRegAsArg(func, 1); | - | ||||||
508 | as->passEngineAsArg(0); | - | ||||||
509 | as->callRuntime("Runtime::method_constructWithSpread", reinterpret_cast<void *>(&Runtime::method_constructWithSpread), Assembler::ResultInAccumulator); | - | ||||||
510 | as->checkException(); | - | ||||||
511 | } never executed: end of block | 0 | ||||||
512 | - | |||||||
513 | void BaselineJIT::generate_SetUnwindHandler(int offset) | - | ||||||
514 | { | - | ||||||
515 | if (offset
| 58-92 | ||||||
516 | as-> executed 92 times by 7 tests: setUnwindHandler(instructionOffset() + offset);as->setUnwindHandler(instructionOffset() + offset); Executed by:
executed 92 times by 7 tests: as->setUnwindHandler(instructionOffset() + offset); Executed by:
| 92 | ||||||
517 | else | - | ||||||
518 | as-> executed 58 times by 7 tests: clearUnwindHandler();as->clearUnwindHandler(); Executed by:
executed 58 times by 7 tests: as->clearUnwindHandler(); Executed by:
| 58 | ||||||
519 | } | - | ||||||
520 | - | |||||||
521 | void BaselineJIT::generate_UnwindDispatch() | - | ||||||
522 | { | - | ||||||
523 | as->unwindDispatch(); | - | ||||||
524 | } executed 50 times by 7 tests: end of block Executed by:
| 50 | ||||||
525 | - | |||||||
526 | void BaselineJIT::generate_UnwindToLabel(int level, int offset) | - | ||||||
527 | { | - | ||||||
528 | as->unwindToLabel(level, instructionOffset() + offset); | - | ||||||
529 | } executed 8 times by 1 test: end of block Executed by:
| 8 | ||||||
530 | - | |||||||
531 | - | |||||||
532 | void BaselineJIT::generate_ThrowException() | - | ||||||
533 | { | - | ||||||
534 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
535 | as->saveAccumulatorInFrame(); | - | ||||||
536 | as->prepareCallWithArgCount(2); | - | ||||||
537 | as->passAccumulatorAsArg(1); | - | ||||||
538 | as->passEngineAsArg(0); | - | ||||||
539 | as->callRuntime("Runtime::method_throwException", reinterpret_cast<void *>(&Runtime::method_throwException), Assembler::IgnoreResult); | - | ||||||
540 | as->gotoCatchException(); | - | ||||||
541 | } executed 42 times by 4 tests: end of block Executed by:
| 42 | ||||||
542 | - | |||||||
543 | void BaselineJIT::generate_GetException() { as->getException(); } never executed: end of block | 0 | ||||||
544 | void BaselineJIT::generate_SetException() { as->setException(); } never executed: end of block | 0 | ||||||
545 | - | |||||||
546 | void BaselineJIT::generate_CreateCallContext() | - | ||||||
547 | { | - | ||||||
548 | as->prepareCallWithArgCount(1); | - | ||||||
549 | as->passCppFrameAsArg(0); | - | ||||||
550 | as->callRuntime("ExecutionContext::newCallContext", reinterpret_cast<void *>(&ExecutionContext::newCallContext), Assembler::IgnoreResult); | - | ||||||
551 | as->storeHeapObject(CallData::Context); | - | ||||||
552 | } executed 154 times by 9 tests: end of block Executed by:
| 154 | ||||||
553 | - | |||||||
554 | void BaselineJIT::generate_PushCatchContext(int index, int name) { as->pushCatchContext(index, name); } executed 50 times by 7 tests: end of block Executed by:
| 50 | ||||||
555 | - | |||||||
556 | void BaselineJIT::generate_PushWithContext() | - | ||||||
557 | { | - | ||||||
558 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
559 | as->saveAccumulatorInFrame(); | - | ||||||
560 | as->prepareCallWithArgCount(2); | - | ||||||
561 | as->passRegAsArg(0, 1); | - | ||||||
562 | as->passEngineAsArg(0); | - | ||||||
563 | as->callRuntime("Runtime::method_createWithContext", reinterpret_cast<void *>(&Runtime::method_createWithContext), Assembler::IgnoreResult); | - | ||||||
564 | as->checkException(); | - | ||||||
565 | as->storeHeapObject(CallData::Context); | - | ||||||
566 | } never executed: end of block | 0 | ||||||
567 | - | |||||||
568 | void BaselineJIT::generate_PushBlockContext(int index) | - | ||||||
569 | { | - | ||||||
570 | as->saveAccumulatorInFrame(); | - | ||||||
571 | as->prepareCallWithArgCount(2); | - | ||||||
572 | as->passInt32AsArg(index, 1); | - | ||||||
573 | as->passRegAsArg(0, 0); | - | ||||||
574 | as->callRuntime("Helpers::pushBlockContext", reinterpret_cast<void *>(&Helpers::pushBlockContext), Assembler::IgnoreResult); | - | ||||||
575 | } never executed: end of block | 0 | ||||||
576 | - | |||||||
577 | void BaselineJIT::generate_CloneBlockContext() | - | ||||||
578 | { | - | ||||||
579 | as->saveAccumulatorInFrame(); | - | ||||||
580 | as->prepareCallWithArgCount(1); | - | ||||||
581 | as->passRegAsArg(CallData::Context, 0); | - | ||||||
582 | as->callRuntime("Helpers::cloneBlockContext", reinterpret_cast<void *>(&Helpers::cloneBlockContext), Assembler::IgnoreResult); | - | ||||||
583 | } never executed: end of block | 0 | ||||||
584 | - | |||||||
585 | void BaselineJIT::generate_PushScriptContext(int index) | - | ||||||
586 | { | - | ||||||
587 | as->saveAccumulatorInFrame(); | - | ||||||
588 | as->prepareCallWithArgCount(3); | - | ||||||
589 | as->passInt32AsArg(index, 2); | - | ||||||
590 | as->passEngineAsArg(1); | - | ||||||
591 | as->passRegAsArg(0, 0); | - | ||||||
592 | as->callRuntime("Helpers::pushScriptContext", reinterpret_cast<void *>(&Helpers::pushScriptContext), Assembler::IgnoreResult); | - | ||||||
593 | } never executed: end of block | 0 | ||||||
594 | - | |||||||
595 | void BaselineJIT::generate_PopScriptContext() | - | ||||||
596 | { | - | ||||||
597 | as->saveAccumulatorInFrame(); | - | ||||||
598 | as->prepareCallWithArgCount(2); | - | ||||||
599 | as->passEngineAsArg(1); | - | ||||||
600 | as->passRegAsArg(0, 0); | - | ||||||
601 | as->callRuntime("Helpers::popScriptContext", reinterpret_cast<void *>(&Helpers::popScriptContext), Assembler::IgnoreResult); | - | ||||||
602 | } never executed: end of block | 0 | ||||||
603 | - | |||||||
604 | void BaselineJIT::generate_PopContext() { as->popContext(); } executed 204 times by 11 tests: end of block Executed by:
| 204 | ||||||
605 | - | |||||||
606 | void BaselineJIT::generate_GetIterator(int iterator) | - | ||||||
607 | { | - | ||||||
608 | as->saveAccumulatorInFrame(); | - | ||||||
609 | as->prepareCallWithArgCount(3); | - | ||||||
610 | as->passInt32AsArg(iterator, 2); | - | ||||||
611 | as->passAccumulatorAsArg(1); | - | ||||||
612 | as->passEngineAsArg(0); | - | ||||||
613 | as->callRuntime("Runtime::method_getIterator", reinterpret_cast<void *>(&Runtime::method_getIterator), Assembler::ResultInAccumulator); | - | ||||||
614 | as->checkException(); | - | ||||||
615 | } never executed: end of block | 0 | ||||||
616 | - | |||||||
617 | void BaselineJIT::generate_IteratorNext(int value) | - | ||||||
618 | { | - | ||||||
619 | as->saveAccumulatorInFrame(); | - | ||||||
620 | as->prepareCallWithArgCount(3); | - | ||||||
621 | as->passRegAsArg(value, 2); | - | ||||||
622 | as->passAccumulatorAsArg(1); | - | ||||||
623 | as->passEngineAsArg(0); | - | ||||||
624 | as->callRuntime("Runtime::method_iteratorNext", reinterpret_cast<void *>(&Runtime::method_iteratorNext), Assembler::ResultInAccumulator); | - | ||||||
625 | as->checkException(); | - | ||||||
626 | } never executed: end of block | 0 | ||||||
627 | - | |||||||
628 | void BaselineJIT::generate_IteratorClose(int done) | - | ||||||
629 | { | - | ||||||
630 | as->saveAccumulatorInFrame(); | - | ||||||
631 | as->prepareCallWithArgCount(3); | - | ||||||
632 | as->passRegAsArg(done, 2); | - | ||||||
633 | as->passAccumulatorAsArg(1); | - | ||||||
634 | as->passEngineAsArg(0); | - | ||||||
635 | as->callRuntime("Runtime::method_iteratorClose", reinterpret_cast<void *>(&Runtime::method_iteratorClose), Assembler::ResultInAccumulator); | - | ||||||
636 | as->checkException(); | - | ||||||
637 | } never executed: end of block | 0 | ||||||
638 | - | |||||||
639 | void BaselineJIT::generate_DestructureRestElement() | - | ||||||
640 | { | - | ||||||
641 | as->saveAccumulatorInFrame(); | - | ||||||
642 | as->prepareCallWithArgCount(2); | - | ||||||
643 | as->passAccumulatorAsArg(1); | - | ||||||
644 | as->passEngineAsArg(0); | - | ||||||
645 | as->callRuntime("Runtime::method_destructureRestElement", reinterpret_cast<void *>(&Runtime::method_destructureRestElement), Assembler::ResultInAccumulator); | - | ||||||
646 | as->checkException(); | - | ||||||
647 | } never executed: end of block | 0 | ||||||
648 | - | |||||||
649 | void BaselineJIT::generate_DeleteProperty(int base, int index) | - | ||||||
650 | { | - | ||||||
651 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
652 | as->prepareCallWithArgCount(3); | - | ||||||
653 | as->passRegAsArg(index, 2); | - | ||||||
654 | as->passRegAsArg(base, 1); | - | ||||||
655 | as->passFunctionAsArg(0); | - | ||||||
656 | as->callRuntime("Helpers::deleteProperty", reinterpret_cast<void *>(&Helpers::deleteProperty), Assembler::ResultInAccumulator); | - | ||||||
657 | as->checkException(); | - | ||||||
658 | } never executed: end of block | 0 | ||||||
659 | - | |||||||
660 | void BaselineJIT::generate_DeleteName(int name) | - | ||||||
661 | { | - | ||||||
662 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
663 | as->prepareCallWithArgCount(2); | - | ||||||
664 | as->passInt32AsArg(name, 1); | - | ||||||
665 | as->passFunctionAsArg(0); | - | ||||||
666 | as->callRuntime("Helpers::deleteName", reinterpret_cast<void *>(&Helpers::deleteName), Assembler::ResultInAccumulator); | - | ||||||
667 | as->checkException(); | - | ||||||
668 | } never executed: end of block | 0 | ||||||
669 | - | |||||||
670 | void BaselineJIT::generate_TypeofName(int name) | - | ||||||
671 | { | - | ||||||
672 | as->prepareCallWithArgCount(2); | - | ||||||
673 | as->passInt32AsArg(name, 1); | - | ||||||
674 | as->passEngineAsArg(0); | - | ||||||
675 | as->callRuntime("Runtime::method_typeofName", reinterpret_cast<void *>(&Runtime::method_typeofName), Assembler::ResultInAccumulator); | - | ||||||
676 | } never executed: end of block | 0 | ||||||
677 | - | |||||||
678 | void BaselineJIT::generate_TypeofValue() | - | ||||||
679 | { | - | ||||||
680 | as->saveAccumulatorInFrame(); | - | ||||||
681 | as->prepareCallWithArgCount(2); | - | ||||||
682 | as->passAccumulatorAsArg(1); | - | ||||||
683 | as->passEngineAsArg(0); | - | ||||||
684 | as->callRuntime("Runtime::method_typeofValue", reinterpret_cast<void *>(&Runtime::method_typeofValue), Assembler::ResultInAccumulator); | - | ||||||
685 | } executed 72 times by 3 tests: end of block Executed by:
| 72 | ||||||
686 | - | |||||||
687 | void BaselineJIT::generate_DeclareVar(int varName, int isDeletable) | - | ||||||
688 | { | - | ||||||
689 | as->prepareCallWithArgCount(3); | - | ||||||
690 | as->passInt32AsArg(varName, 2); | - | ||||||
691 | as->passInt32AsArg(isDeletable, 1); | - | ||||||
692 | as->passEngineAsArg(0); | - | ||||||
693 | as->callRuntime("Runtime::method_declareVar", reinterpret_cast<void *>(&Runtime::method_declareVar), Assembler::IgnoreResult); | - | ||||||
694 | } executed 30 times by 3 tests: end of block Executed by:
| 30 | ||||||
695 | - | |||||||
696 | void BaselineJIT::generate_DefineArray(int argc, int args) | - | ||||||
697 | { | - | ||||||
698 | as->prepareCallWithArgCount(3); | - | ||||||
699 | as->passInt32AsArg(argc, 2); | - | ||||||
700 | as->passRegAsArg(args, 1); | - | ||||||
701 | as->passEngineAsArg(0); | - | ||||||
702 | as->callRuntime("Runtime::method_arrayLiteral", reinterpret_cast<void *>(&Runtime::method_arrayLiteral), Assembler::ResultInAccumulator); | - | ||||||
703 | } executed 122 times by 11 tests: end of block Executed by:
| 122 | ||||||
704 | - | |||||||
705 | void BaselineJIT::generate_DefineObjectLiteral(int internalClassId, int argc, int args) | - | ||||||
706 | { | - | ||||||
707 | as->prepareCallWithArgCount(4); | - | ||||||
708 | as->passRegAsArg(args, 3); | - | ||||||
709 | as->passInt32AsArg(argc, 2); | - | ||||||
710 | as->passInt32AsArg(internalClassId, 1); | - | ||||||
711 | as->passEngineAsArg(0); | - | ||||||
712 | as->callRuntime("Runtime::method_objectLiteral", reinterpret_cast<void *>(&Runtime::method_objectLiteral), Assembler::ResultInAccumulator); | - | ||||||
713 | } executed 20 times by 4 tests: end of block Executed by:
| 20 | ||||||
714 | - | |||||||
715 | void BaselineJIT::generate_CreateClass(int classIndex, int heritage, int computedNames) | - | ||||||
716 | { | - | ||||||
717 | as->prepareCallWithArgCount(4); | - | ||||||
718 | as->passRegAsArg(computedNames, 3); | - | ||||||
719 | as->passRegAsArg(heritage, 2); | - | ||||||
720 | as->passInt32AsArg(classIndex, 1); | - | ||||||
721 | as->passEngineAsArg(0); | - | ||||||
722 | as->callRuntime("Runtime::method_createClass", reinterpret_cast<void *>(&Runtime::method_createClass), Assembler::ResultInAccumulator); | - | ||||||
723 | } never executed: end of block | 0 | ||||||
724 | - | |||||||
725 | void BaselineJIT::generate_CreateMappedArgumentsObject() | - | ||||||
726 | { | - | ||||||
727 | as->prepareCallWithArgCount(1); | - | ||||||
728 | as->passEngineAsArg(0); | - | ||||||
729 | as->callRuntime("Runtime::method_createMappedArgumentsObject", reinterpret_cast<void *>(&Runtime::method_createMappedArgumentsObject), Assembler::ResultInAccumulator) | - | ||||||
730 | ; | - | ||||||
731 | } executed 30 times by 5 tests: end of block Executed by:
| 30 | ||||||
732 | - | |||||||
733 | void BaselineJIT::generate_CreateUnmappedArgumentsObject() | - | ||||||
734 | { | - | ||||||
735 | as->prepareCallWithArgCount(1); | - | ||||||
736 | as->passEngineAsArg(0); | - | ||||||
737 | as->callRuntime("Runtime::method_createUnmappedArgumentsObject", reinterpret_cast<void *>(&Runtime::method_createUnmappedArgumentsObject), Assembler::ResultInAccumulator) | - | ||||||
738 | ; | - | ||||||
739 | } never executed: end of block | 0 | ||||||
740 | - | |||||||
741 | void BaselineJIT::generate_CreateRestParameter(int argIndex) | - | ||||||
742 | { | - | ||||||
743 | as->prepareCallWithArgCount(2); | - | ||||||
744 | as->passInt32AsArg(argIndex, 1); | - | ||||||
745 | as->passEngineAsArg(0); | - | ||||||
746 | as->callRuntime("Runtime::method_createRestParameter", reinterpret_cast<void *>(&Runtime::method_createRestParameter), Assembler::ResultInAccumulator); | - | ||||||
747 | } never executed: end of block | 0 | ||||||
748 | - | |||||||
749 | void BaselineJIT::generate_ConvertThisToObject() | - | ||||||
750 | { | - | ||||||
751 | as->prepareCallWithArgCount(2); | - | ||||||
752 | as->passRegAsArg(CallData::This, 1); | - | ||||||
753 | as->passEngineAsArg(0); | - | ||||||
754 | as->callRuntime("Helpers::convertThisToObject", reinterpret_cast<void *>(&Helpers::convertThisToObject), Assembler::IgnoreResult); | - | ||||||
755 | as->checkException(); | - | ||||||
756 | } executed 8 times by 1 test: end of block Executed by:
| 8 | ||||||
757 | - | |||||||
758 | void BaselineJIT::generate_LoadSuperConstructor() | - | ||||||
759 | { | - | ||||||
760 | as->prepareCallWithArgCount(2); | - | ||||||
761 | as->passRegAsArg(CallData::Function, 1); | - | ||||||
762 | as->passEngineAsArg(0); | - | ||||||
763 | as->callRuntime("Helpers::loadSuperConstructor", reinterpret_cast<void *>(&Helpers::loadSuperConstructor), Assembler::ResultInAccumulator); | - | ||||||
764 | as->checkException(); | - | ||||||
765 | } never executed: end of block | 0 | ||||||
766 | - | |||||||
767 | void BaselineJIT::generate_ToObject() | - | ||||||
768 | { | - | ||||||
769 | as->saveAccumulatorInFrame(); | - | ||||||
770 | as->prepareCallWithArgCount(2); | - | ||||||
771 | as->passAccumulatorAsArg(1); | - | ||||||
772 | as->passEngineAsArg(0); | - | ||||||
773 | as->callRuntime("Helpers::toObject", reinterpret_cast<void *>(&Helpers::toObject), Assembler::ResultInAccumulator); | - | ||||||
774 | as->checkException(); | - | ||||||
775 | - | |||||||
776 | } never executed: end of block | 0 | ||||||
777 | - | |||||||
778 | void BaselineJIT::generate_Jump(int offset) { as->jump(instructionOffset() + offset); } executed 2072 times by 31 tests: end of block Executed by:
| 2072 | ||||||
779 | void BaselineJIT::generate_JumpTrue(int offset) { as->jumpTrue(instructionOffset() + offset); } executed 248 times by 9 tests: end of block Executed by:
| 248 | ||||||
780 | void BaselineJIT::generate_JumpFalse(int offset) { as->jumpFalse(instructionOffset() + offset); } executed 3426 times by 37 tests: end of block Executed by:
| 3426 | ||||||
781 | void BaselineJIT::generate_JumpNoException(int offset) { as->jumpNoException(instructionOffset() + offset); } executed 50 times by 7 tests: end of block Executed by:
| 50 | ||||||
782 | void BaselineJIT::generate_JumpNotUndefined(int offset) { as->jumpNotUndefined(instructionOffset() + offset); } never executed: end of block | 0 | ||||||
783 | - | |||||||
784 | void BaselineJIT::generate_CmpEqNull() { as->cmpeqNull(); } never executed: end of block | 0 | ||||||
785 | void BaselineJIT::generate_CmpNeNull() { as->cmpneNull(); } executed 8 times by 1 test: end of block Executed by:
| 8 | ||||||
786 | void BaselineJIT::generate_CmpEqInt(int lhs) { as->cmpeqInt(lhs); } executed 40 times by 8 tests: end of block Executed by:
| 40 | ||||||
787 | void BaselineJIT::generate_CmpNeInt(int lhs) { as->cmpneInt(lhs); } executed 30 times by 3 tests: end of block Executed by:
| 30 | ||||||
788 | void BaselineJIT::generate_CmpEq(int lhs) { as->cmpeq(lhs); } executed 1042 times by 16 tests: end of block Executed by:
| 1042 | ||||||
789 | void BaselineJIT::generate_CmpNe(int lhs) { as->cmpne(lhs); } executed 86 times by 7 tests: end of block Executed by:
| 86 | ||||||
790 | void BaselineJIT::generate_CmpGt(int lhs) { as->cmpgt(lhs); } executed 74 times by 10 tests: end of block Executed by:
| 74 | ||||||
791 | void BaselineJIT::generate_CmpGe(int lhs) { as->cmpge(lhs); } executed 12 times by 3 tests: end of block Executed by:
| 12 | ||||||
792 | void BaselineJIT::generate_CmpLt(int lhs) { as->cmplt(lhs); } executed 336 times by 15 tests: end of block Executed by:
| 336 | ||||||
793 | void BaselineJIT::generate_CmpLe(int lhs) { as->cmple(lhs); } executed 72 times by 5 tests: end of block Executed by:
| 72 | ||||||
794 | void BaselineJIT::generate_CmpStrictEqual(int lhs) { as->cmpStrictEqual(lhs); } executed 586 times by 11 tests: end of block Executed by:
| 586 | ||||||
795 | void BaselineJIT::generate_CmpStrictNotEqual(int lhs) { as->cmpStrictNotEqual(lhs); } executed 48 times by 6 tests: end of block Executed by:
| 48 | ||||||
796 | - | |||||||
797 | void BaselineJIT::generate_CmpIn(int lhs) | - | ||||||
798 | { | - | ||||||
799 | as->saveAccumulatorInFrame(); | - | ||||||
800 | as->prepareCallWithArgCount(3); | - | ||||||
801 | as->passAccumulatorAsArg(2); | - | ||||||
802 | as->passRegAsArg(lhs, 1); | - | ||||||
803 | as->passEngineAsArg(0); | - | ||||||
804 | as->callRuntime("Runtime::method_in", reinterpret_cast<void *>(&Runtime::method_in), Assembler::ResultInAccumulator); | - | ||||||
805 | as->checkException(); | - | ||||||
806 | } executed 50 times by 2 tests: end of block Executed by:
| 50 | ||||||
807 | - | |||||||
808 | void BaselineJIT::generate_CmpInstanceOf(int lhs) | - | ||||||
809 | { | - | ||||||
810 | as->saveAccumulatorInFrame(); | - | ||||||
811 | as->prepareCallWithArgCount(3); | - | ||||||
812 | as->passAccumulatorAsArg(2); | - | ||||||
813 | as->passRegAsArg(lhs, 1); | - | ||||||
814 | as->passEngineAsArg(0); | - | ||||||
815 | as->callRuntime("Runtime::method_instanceof", reinterpret_cast<void *>(&Runtime::method_instanceof), Assembler::ResultInAccumulator); | - | ||||||
816 | as->checkException(); | - | ||||||
817 | } executed 84 times by 5 tests: end of block Executed by:
| 84 | ||||||
818 | - | |||||||
819 | void BaselineJIT::generate_UNot() { as->unot(); } executed 134 times by 10 tests: end of block Executed by:
| 134 | ||||||
820 | void BaselineJIT::generate_UPlus() { as->toNumber(); } executed 2 times by 1 test: end of block Executed by:
| 2 | ||||||
821 | void BaselineJIT::generate_UMinus() { as->uminus(); } executed 26 times by 3 tests: end of block Executed by:
| 26 | ||||||
822 | void BaselineJIT::generate_UCompl() { as->ucompl(); } never executed: end of block | 0 | ||||||
823 | void BaselineJIT::generate_Increment() { as->inc(); } executed 326 times by 13 tests: end of block Executed by:
| 326 | ||||||
824 | void BaselineJIT::generate_Decrement() { as->dec(); } executed 288 times by 6 tests: end of block Executed by:
| 288 | ||||||
825 | void BaselineJIT::generate_Add(int lhs) { as->add(lhs); } executed 2130 times by 29 tests: end of block Executed by:
| 2130 | ||||||
826 | - | |||||||
827 | void BaselineJIT::generate_BitAnd(int lhs) { as->bitAnd(lhs); } never executed: end of block | 0 | ||||||
828 | void BaselineJIT::generate_BitOr(int lhs) { as->bitOr(lhs); } executed 14 times by 1 test: end of block Executed by:
| 14 | ||||||
829 | void BaselineJIT::generate_BitXor(int lhs) { as->bitXor(lhs); } never executed: end of block | 0 | ||||||
830 | void BaselineJIT::generate_UShr(int lhs) { as->ushr(lhs); } never executed: end of block | 0 | ||||||
831 | void BaselineJIT::generate_Shr(int lhs) { as->shr(lhs); } never executed: end of block | 0 | ||||||
832 | void BaselineJIT::generate_Shl(int lhs) { as->shl(lhs); } never executed: end of block | 0 | ||||||
833 | - | |||||||
834 | void BaselineJIT::generate_BitAndConst(int rhs) { as->bitAndConst(rhs); } executed 4 times by 1 test: end of block Executed by:
| 4 | ||||||
835 | void BaselineJIT::generate_BitOrConst(int rhs) { as->bitOrConst(rhs); } never executed: end of block | 0 | ||||||
836 | void BaselineJIT::generate_BitXorConst(int rhs) { as->bitXorConst(rhs); } never executed: end of block | 0 | ||||||
837 | void BaselineJIT::generate_UShrConst(int rhs) { as->ushrConst(rhs); } never executed: end of block | 0 | ||||||
838 | void BaselineJIT::generate_ShrConst(int rhs) { as->shrConst(rhs); } never executed: end of block | 0 | ||||||
839 | void BaselineJIT::generate_ShlConst(int rhs) { as->shlConst(rhs); } never executed: end of block | 0 | ||||||
840 | - | |||||||
841 | void BaselineJIT::generate_Exp(int lhs) { | - | ||||||
842 | as->storeInstructionPointer(instructionOffset()); | - | ||||||
843 | as->saveAccumulatorInFrame(); | - | ||||||
844 | as->prepareCallWithArgCount(2); | - | ||||||
845 | as->passAccumulatorAsArg(1); | - | ||||||
846 | as->passRegAsArg(lhs, 0); | - | ||||||
847 | as->callRuntime("Helpers::exp", reinterpret_cast<void *>(&Helpers::exp), Assembler::ResultInAccumulator); | - | ||||||
848 | as->checkException(); | - | ||||||
849 | } never executed: end of block | 0 | ||||||
850 | void BaselineJIT::generate_Mul(int lhs) { as->mul(lhs); } executed 896 times by 13 tests: end of block Executed by:
| 896 | ||||||
851 | void BaselineJIT::generate_Div(int lhs) { as->div(lhs); } executed 468 times by 12 tests: end of block Executed by:
| 468 | ||||||
852 | void BaselineJIT::generate_Mod(int lhs) { as->mod(lhs); } executed 46 times by 5 tests: end of block Executed by:
| 46 | ||||||
853 | void BaselineJIT::generate_Sub(int lhs) { as->sub(lhs); } executed 686 times by 20 tests: end of block Executed by:
| 686 | ||||||
854 | void BaselineJIT::generate_LoadQmlContext(int result) | - | ||||||
855 | { | - | ||||||
856 | as->prepareCallWithArgCount(1); | - | ||||||
857 | as->passEngineAsArg(0); | - | ||||||
858 | as->callRuntime("Runtime::method_loadQmlContext", reinterpret_cast<void *>(&Runtime::method_loadQmlContext), Assembler::ResultInAccumulator); | - | ||||||
859 | as->storeReg(result); | - | ||||||
860 | } executed 13128 times by 60 tests: end of block Executed by:
| 13128 | ||||||
861 | - | |||||||
862 | void BaselineJIT::generate_LoadQmlImportedScripts(int result) | - | ||||||
863 | { | - | ||||||
864 | as->prepareCallWithArgCount(1); | - | ||||||
865 | as->passEngineAsArg(0); | - | ||||||
866 | as->callRuntime("Runtime::method_loadQmlImportedScripts", reinterpret_cast<void *>(&Runtime::method_loadQmlImportedScripts), Assembler::ResultInAccumulator); | - | ||||||
867 | as->storeReg(result); | - | ||||||
868 | } executed 13128 times by 60 tests: end of block Executed by:
| 13128 | ||||||
869 | - | |||||||
870 | void BaselineJIT::startInstruction(Instr::Type ) | - | ||||||
871 | { | - | ||||||
872 | if (hasLabel()
| 5472-137716 | ||||||
873 | as-> executed 5472 times by 38 tests: addLabel(instructionOffset());as->addLabel(instructionOffset()); Executed by:
executed 5472 times by 38 tests: as->addLabel(instructionOffset()); Executed by:
| 5472 | ||||||
874 | } executed 143188 times by 64 tests: end of block Executed by:
| 143188 | ||||||
875 | - | |||||||
876 | void BaselineJIT::endInstruction(Instr::Type instr) | - | ||||||
877 | { | - | ||||||
878 | (void)instr;; | - | ||||||
879 | } executed 143188 times by 64 tests: end of block Executed by:
| 143188 | ||||||
Switch to Source code | Preprocessed file |