Lines Matching full:__

34 #define __ masm.  macro
49 __ movsd(xmm0, Operand(esp, 1 * kPointerSize)); in CreateSqrtFunction()
50 __ sqrtsd(xmm0, xmm0); in CreateSqrtFunction()
51 __ movsd(Operand(esp, 1 * kPointerSize), xmm0); in CreateSqrtFunction()
53 __ fld_d(Operand(esp, 1 * kPointerSize)); in CreateSqrtFunction()
54 __ Ret(); in CreateSqrtFunction()
68 #undef __
69 #define __ ACCESS_MASM(masm) macro
88 __ cmp(loop_count, 0); in MemMoveEmitMainLoop()
89 __ j(equal, &move_last_63); in MemMoveEmitMainLoop()
90 __ bind(&loop); in MemMoveEmitMainLoop()
92 if (direction == BACKWARD) __ sub(src, Immediate(0x40)); in MemMoveEmitMainLoop()
93 __ movdq(alignment == MOVE_ALIGNED, xmm0, Operand(src, 0x00)); in MemMoveEmitMainLoop()
94 __ movdq(alignment == MOVE_ALIGNED, xmm1, Operand(src, 0x10)); in MemMoveEmitMainLoop()
95 __ movdq(alignment == MOVE_ALIGNED, xmm2, Operand(src, 0x20)); in MemMoveEmitMainLoop()
96 __ movdq(alignment == MOVE_ALIGNED, xmm3, Operand(src, 0x30)); in MemMoveEmitMainLoop()
97 if (direction == FORWARD) __ add(src, Immediate(0x40)); in MemMoveEmitMainLoop()
98 if (direction == BACKWARD) __ sub(dst, Immediate(0x40)); in MemMoveEmitMainLoop()
99 __ movdqa(Operand(dst, 0x00), xmm0); in MemMoveEmitMainLoop()
100 __ movdqa(Operand(dst, 0x10), xmm1); in MemMoveEmitMainLoop()
101 __ movdqa(Operand(dst, 0x20), xmm2); in MemMoveEmitMainLoop()
102 __ movdqa(Operand(dst, 0x30), xmm3); in MemMoveEmitMainLoop()
103 if (direction == FORWARD) __ add(dst, Immediate(0x40)); in MemMoveEmitMainLoop()
104 __ dec(loop_count); in MemMoveEmitMainLoop()
105 __ j(not_zero, &loop); in MemMoveEmitMainLoop()
107 __ bind(&move_last_63); in MemMoveEmitMainLoop()
108 __ test(count, Immediate(0x20)); in MemMoveEmitMainLoop()
109 __ j(zero, &move_last_31); in MemMoveEmitMainLoop()
110 if (direction == BACKWARD) __ sub(src, Immediate(0x20)); in MemMoveEmitMainLoop()
111 __ movdq(alignment == MOVE_ALIGNED, xmm0, Operand(src, 0x00)); in MemMoveEmitMainLoop()
112 __ movdq(alignment == MOVE_ALIGNED, xmm1, Operand(src, 0x10)); in MemMoveEmitMainLoop()
113 if (direction == FORWARD) __ add(src, Immediate(0x20)); in MemMoveEmitMainLoop()
114 if (direction == BACKWARD) __ sub(dst, Immediate(0x20)); in MemMoveEmitMainLoop()
115 __ movdqa(Operand(dst, 0x00), xmm0); in MemMoveEmitMainLoop()
116 __ movdqa(Operand(dst, 0x10), xmm1); in MemMoveEmitMainLoop()
117 if (direction == FORWARD) __ add(dst, Immediate(0x20)); in MemMoveEmitMainLoop()
119 __ bind(&move_last_31); in MemMoveEmitMainLoop()
120 __ test(count, Immediate(0x10)); in MemMoveEmitMainLoop()
121 __ j(zero, move_last_15); in MemMoveEmitMainLoop()
122 if (direction == BACKWARD) __ sub(src, Immediate(0x10)); in MemMoveEmitMainLoop()
123 __ movdq(alignment == MOVE_ALIGNED, xmm0, Operand(src, 0)); in MemMoveEmitMainLoop()
124 if (direction == FORWARD) __ add(src, Immediate(0x10)); in MemMoveEmitMainLoop()
125 if (direction == BACKWARD) __ sub(dst, Immediate(0x10)); in MemMoveEmitMainLoop()
126 __ movdqa(Operand(dst, 0), xmm0); in MemMoveEmitMainLoop()
127 if (direction == FORWARD) __ add(dst, Immediate(0x10)); in MemMoveEmitMainLoop()
132 __ pop(esi); in MemMoveEmitPopAndReturn()
133 __ pop(edi); in MemMoveEmitPopAndReturn()
134 __ ret(0); in MemMoveEmitPopAndReturn()
138 #undef __
139 #define __ masm. macro
193 __ push(edi); in CreateMemMoveFunction()
194 __ push(esi); in CreateMemMoveFunction()
200 __ mov(dst, Operand(esp, stack_offset + kDestinationOffset)); in CreateMemMoveFunction()
201 __ mov(src, Operand(esp, stack_offset + kSourceOffset)); in CreateMemMoveFunction()
202 __ mov(count, Operand(esp, stack_offset + kSizeOffset)); in CreateMemMoveFunction()
204 __ cmp(dst, src); in CreateMemMoveFunction()
205 __ j(equal, &pop_and_return); in CreateMemMoveFunction()
207 __ prefetch(Operand(src, 0), 1); in CreateMemMoveFunction()
208 __ cmp(count, kSmallCopySize); in CreateMemMoveFunction()
209 __ j(below_equal, &small_size); in CreateMemMoveFunction()
210 __ cmp(count, kMediumCopySize); in CreateMemMoveFunction()
211 __ j(below_equal, &medium_size); in CreateMemMoveFunction()
212 __ cmp(dst, src); in CreateMemMoveFunction()
213 __ j(above, &backward); in CreateMemMoveFunction()
218 __ mov(eax, src); in CreateMemMoveFunction()
219 __ sub(eax, dst); in CreateMemMoveFunction()
220 __ cmp(eax, kMinMoveDistance); in CreateMemMoveFunction()
221 __ j(below, &forward_much_overlap); in CreateMemMoveFunction()
223 __ movdqu(xmm0, Operand(src, 0)); in CreateMemMoveFunction()
224 __ movdqu(Operand(dst, 0), xmm0); in CreateMemMoveFunction()
226 __ mov(edx, dst); in CreateMemMoveFunction()
227 __ and_(edx, 0xF); in CreateMemMoveFunction()
228 __ neg(edx); in CreateMemMoveFunction()
229 __ add(edx, Immediate(16)); in CreateMemMoveFunction()
230 __ add(dst, edx); in CreateMemMoveFunction()
231 __ add(src, edx); in CreateMemMoveFunction()
232 __ sub(count, edx); in CreateMemMoveFunction()
234 __ mov(loop_count, count); in CreateMemMoveFunction()
235 __ shr(loop_count, 6); in CreateMemMoveFunction()
237 __ test(src, Immediate(0xF)); in CreateMemMoveFunction()
238 __ j(not_zero, &unaligned_source); in CreateMemMoveFunction()
242 __ bind(&move_last_15); in CreateMemMoveFunction()
243 __ and_(count, 0xF); in CreateMemMoveFunction()
244 __ j(zero, &skip_last_move, Label::kNear); in CreateMemMoveFunction()
245 __ movdqu(xmm0, Operand(src, count, times_1, -0x10)); in CreateMemMoveFunction()
246 __ movdqu(Operand(dst, count, times_1, -0x10), xmm0); in CreateMemMoveFunction()
247 __ bind(&skip_last_move); in CreateMemMoveFunction()
251 __ bind(&unaligned_source); in CreateMemMoveFunction()
253 __ jmp(&move_last_15); in CreateMemMoveFunction()
257 __ bind(&loop_until_aligned); in CreateMemMoveFunction()
258 __ mov_b(eax, Operand(src, 0)); in CreateMemMoveFunction()
259 __ inc(src); in CreateMemMoveFunction()
260 __ mov_b(Operand(dst, 0), eax); in CreateMemMoveFunction()
261 __ inc(dst); in CreateMemMoveFunction()
262 __ dec(count); in CreateMemMoveFunction()
263 __ bind(&forward_much_overlap); // Entry point into this block. in CreateMemMoveFunction()
264 __ test(dst, Immediate(0xF)); in CreateMemMoveFunction()
265 __ j(not_zero, &loop_until_aligned); in CreateMemMoveFunction()
267 __ mov(loop_count, count); in CreateMemMoveFunction()
268 __ shr(loop_count, 6); in CreateMemMoveFunction()
271 __ bind(&last_15_much_overlap); in CreateMemMoveFunction()
272 __ and_(count, 0xF); in CreateMemMoveFunction()
273 __ j(zero, &pop_and_return); in CreateMemMoveFunction()
274 __ cmp(count, kSmallCopySize); in CreateMemMoveFunction()
275 __ j(below_equal, &small_size); in CreateMemMoveFunction()
276 __ jmp(&medium_size); in CreateMemMoveFunction()
282 __ bind(&backward); in CreateMemMoveFunction()
284 __ add(dst, count); in CreateMemMoveFunction()
285 __ add(src, count); in CreateMemMoveFunction()
286 __ mov(eax, dst); in CreateMemMoveFunction()
287 __ sub(eax, src); in CreateMemMoveFunction()
288 __ cmp(eax, kMinMoveDistance); in CreateMemMoveFunction()
289 __ j(below, &backward_much_overlap); in CreateMemMoveFunction()
291 __ movdqu(xmm0, Operand(src, -0x10)); in CreateMemMoveFunction()
292 __ movdqu(Operand(dst, -0x10), xmm0); in CreateMemMoveFunction()
294 __ mov(edx, dst); in CreateMemMoveFunction()
295 __ and_(edx, 0xF); in CreateMemMoveFunction()
296 __ sub(dst, edx); in CreateMemMoveFunction()
297 __ sub(src, edx); in CreateMemMoveFunction()
298 __ sub(count, edx); in CreateMemMoveFunction()
300 __ mov(loop_count, count); in CreateMemMoveFunction()
301 __ shr(loop_count, 6); in CreateMemMoveFunction()
303 __ test(src, Immediate(0xF)); in CreateMemMoveFunction()
304 __ j(not_zero, &unaligned_source); in CreateMemMoveFunction()
308 __ bind(&move_first_15); in CreateMemMoveFunction()
309 __ and_(count, 0xF); in CreateMemMoveFunction()
310 __ j(zero, &skip_last_move, Label::kNear); in CreateMemMoveFunction()
311 __ sub(src, count); in CreateMemMoveFunction()
312 __ sub(dst, count); in CreateMemMoveFunction()
313 __ movdqu(xmm0, Operand(src, 0)); in CreateMemMoveFunction()
314 __ movdqu(Operand(dst, 0), xmm0); in CreateMemMoveFunction()
315 __ bind(&skip_last_move); in CreateMemMoveFunction()
319 __ bind(&unaligned_source); in CreateMemMoveFunction()
321 __ jmp(&move_first_15); in CreateMemMoveFunction()
325 __ bind(&loop_until_aligned); in CreateMemMoveFunction()
326 __ dec(src); in CreateMemMoveFunction()
327 __ dec(dst); in CreateMemMoveFunction()
328 __ mov_b(eax, Operand(src, 0)); in CreateMemMoveFunction()
329 __ mov_b(Operand(dst, 0), eax); in CreateMemMoveFunction()
330 __ dec(count); in CreateMemMoveFunction()
331 __ bind(&backward_much_overlap); // Entry point into this block. in CreateMemMoveFunction()
332 __ test(dst, Immediate(0xF)); in CreateMemMoveFunction()
333 __ j(not_zero, &loop_until_aligned); in CreateMemMoveFunction()
335 __ mov(loop_count, count); in CreateMemMoveFunction()
336 __ shr(loop_count, 6); in CreateMemMoveFunction()
339 __ bind(&first_15_much_overlap); in CreateMemMoveFunction()
340 __ and_(count, 0xF); in CreateMemMoveFunction()
341 __ j(zero, &pop_and_return); in CreateMemMoveFunction()
343 __ sub(dst, count); in CreateMemMoveFunction()
344 __ sub(src, count); in CreateMemMoveFunction()
345 __ cmp(count, kSmallCopySize); in CreateMemMoveFunction()
346 __ j(below_equal, &small_size); in CreateMemMoveFunction()
347 __ jmp(&medium_size); in CreateMemMoveFunction()
355 __ bind(&f9_16); in CreateMemMoveFunction()
356 __ movsd(xmm0, Operand(src, 0)); in CreateMemMoveFunction()
357 __ movsd(xmm1, Operand(src, count, times_1, -8)); in CreateMemMoveFunction()
358 __ movsd(Operand(dst, 0), xmm0); in CreateMemMoveFunction()
359 __ movsd(Operand(dst, count, times_1, -8), xmm1); in CreateMemMoveFunction()
362 __ bind(&f17_32); in CreateMemMoveFunction()
363 __ movdqu(xmm0, Operand(src, 0)); in CreateMemMoveFunction()
364 __ movdqu(xmm1, Operand(src, count, times_1, -0x10)); in CreateMemMoveFunction()
365 __ movdqu(Operand(dst, 0x00), xmm0); in CreateMemMoveFunction()
366 __ movdqu(Operand(dst, count, times_1, -0x10), xmm1); in CreateMemMoveFunction()
369 __ bind(&f33_48); in CreateMemMoveFunction()
370 __ movdqu(xmm0, Operand(src, 0x00)); in CreateMemMoveFunction()
371 __ movdqu(xmm1, Operand(src, 0x10)); in CreateMemMoveFunction()
372 __ movdqu(xmm2, Operand(src, count, times_1, -0x10)); in CreateMemMoveFunction()
373 __ movdqu(Operand(dst, 0x00), xmm0); in CreateMemMoveFunction()
374 __ movdqu(Operand(dst, 0x10), xmm1); in CreateMemMoveFunction()
375 __ movdqu(Operand(dst, count, times_1, -0x10), xmm2); in CreateMemMoveFunction()
378 __ bind(&f49_63); in CreateMemMoveFunction()
379 __ movdqu(xmm0, Operand(src, 0x00)); in CreateMemMoveFunction()
380 __ movdqu(xmm1, Operand(src, 0x10)); in CreateMemMoveFunction()
381 __ movdqu(xmm2, Operand(src, 0x20)); in CreateMemMoveFunction()
382 __ movdqu(xmm3, Operand(src, count, times_1, -0x10)); in CreateMemMoveFunction()
383 __ movdqu(Operand(dst, 0x00), xmm0); in CreateMemMoveFunction()
384 __ movdqu(Operand(dst, 0x10), xmm1); in CreateMemMoveFunction()
385 __ movdqu(Operand(dst, 0x20), xmm2); in CreateMemMoveFunction()
386 __ movdqu(Operand(dst, count, times_1, -0x10), xmm3); in CreateMemMoveFunction()
389 __ bind(&medium_handlers); in CreateMemMoveFunction()
390 __ dd(conv.address(&f9_16)); in CreateMemMoveFunction()
391 __ dd(conv.address(&f17_32)); in CreateMemMoveFunction()
392 __ dd(conv.address(&f33_48)); in CreateMemMoveFunction()
393 __ dd(conv.address(&f49_63)); in CreateMemMoveFunction()
395 __ bind(&medium_size); // Entry point into this block. in CreateMemMoveFunction()
396 __ mov(eax, count); in CreateMemMoveFunction()
397 __ dec(eax); in CreateMemMoveFunction()
398 __ shr(eax, 4); in CreateMemMoveFunction()
401 __ cmp(eax, 3); in CreateMemMoveFunction()
402 __ j(below_equal, &ok); in CreateMemMoveFunction()
403 __ int3(); in CreateMemMoveFunction()
404 __ bind(&ok); in CreateMemMoveFunction()
406 __ mov(eax, Operand(eax, times_4, conv.address(&medium_handlers))); in CreateMemMoveFunction()
407 __ jmp(eax); in CreateMemMoveFunction()
412 __ bind(&f0); in CreateMemMoveFunction()
415 __ bind(&f1); in CreateMemMoveFunction()
416 __ mov_b(eax, Operand(src, 0)); in CreateMemMoveFunction()
417 __ mov_b(Operand(dst, 0), eax); in CreateMemMoveFunction()
420 __ bind(&f2); in CreateMemMoveFunction()
421 __ mov_w(eax, Operand(src, 0)); in CreateMemMoveFunction()
422 __ mov_w(Operand(dst, 0), eax); in CreateMemMoveFunction()
425 __ bind(&f3); in CreateMemMoveFunction()
426 __ mov_w(eax, Operand(src, 0)); in CreateMemMoveFunction()
427 __ mov_b(edx, Operand(src, 2)); in CreateMemMoveFunction()
428 __ mov_w(Operand(dst, 0), eax); in CreateMemMoveFunction()
429 __ mov_b(Operand(dst, 2), edx); in CreateMemMoveFunction()
432 __ bind(&f4); in CreateMemMoveFunction()
433 __ mov(eax, Operand(src, 0)); in CreateMemMoveFunction()
434 __ mov(Operand(dst, 0), eax); in CreateMemMoveFunction()
437 __ bind(&f5_8); in CreateMemMoveFunction()
438 __ mov(eax, Operand(src, 0)); in CreateMemMoveFunction()
439 __ mov(edx, Operand(src, count, times_1, -4)); in CreateMemMoveFunction()
440 __ mov(Operand(dst, 0), eax); in CreateMemMoveFunction()
441 __ mov(Operand(dst, count, times_1, -4), edx); in CreateMemMoveFunction()
444 __ bind(&small_handlers); in CreateMemMoveFunction()
445 __ dd(conv.address(&f0)); in CreateMemMoveFunction()
446 __ dd(conv.address(&f1)); in CreateMemMoveFunction()
447 __ dd(conv.address(&f2)); in CreateMemMoveFunction()
448 __ dd(conv.address(&f3)); in CreateMemMoveFunction()
449 __ dd(conv.address(&f4)); in CreateMemMoveFunction()
450 __ dd(conv.address(&f5_8)); in CreateMemMoveFunction()
451 __ dd(conv.address(&f5_8)); in CreateMemMoveFunction()
452 __ dd(conv.address(&f5_8)); in CreateMemMoveFunction()
453 __ dd(conv.address(&f5_8)); in CreateMemMoveFunction()
455 __ bind(&small_size); // Entry point into this block. in CreateMemMoveFunction()
458 __ cmp(count, 8); in CreateMemMoveFunction()
459 __ j(below_equal, &ok); in CreateMemMoveFunction()
460 __ int3(); in CreateMemMoveFunction()
461 __ bind(&ok); in CreateMemMoveFunction()
463 __ mov(eax, Operand(count, times_4, conv.address(&small_handlers))); in CreateMemMoveFunction()
464 __ jmp(eax); in CreateMemMoveFunction()
467 __ bind(&pop_and_return); in CreateMemMoveFunction()
481 #undef __
486 #define __ ACCESS_MASM(masm) macro
502 __ JumpIfJSArrayHasAllocationMemento( in GenerateMapChangeElementsTransition()
507 __ mov(FieldOperand(receiver, HeapObject::kMapOffset), target_map); in GenerateMapChangeElementsTransition()
508 __ RecordWriteField(receiver, in GenerateMapChangeElementsTransition()
535 __ JumpIfJSArrayHasAllocationMemento(edx, edi, fail); in GenerateSmiToDouble()
540 __ mov(edi, FieldOperand(edx, JSObject::kElementsOffset)); in GenerateSmiToDouble()
541 __ cmp(edi, Immediate(masm->isolate()->factory()->empty_fixed_array())); in GenerateSmiToDouble()
542 __ j(equal, &only_change_map); in GenerateSmiToDouble()
544 __ push(eax); in GenerateSmiToDouble()
545 __ push(ebx); in GenerateSmiToDouble()
546 __ push(esi); in GenerateSmiToDouble()
548 __ mov(edi, FieldOperand(edi, FixedArray::kLengthOffset)); in GenerateSmiToDouble()
554 __ Allocate(FixedDoubleArray::kHeaderSize, times_8, edi, in GenerateSmiToDouble()
560 __ mov(FieldOperand(eax, HeapObject::kMapOffset), in GenerateSmiToDouble()
562 __ mov(FieldOperand(eax, FixedDoubleArray::kLengthOffset), edi); in GenerateSmiToDouble()
563 __ mov(esi, FieldOperand(edx, JSObject::kElementsOffset)); in GenerateSmiToDouble()
565 __ mov(FieldOperand(edx, JSObject::kElementsOffset), eax); in GenerateSmiToDouble()
566 __ mov(ebx, eax); in GenerateSmiToDouble()
567 __ RecordWriteField(edx, in GenerateSmiToDouble()
575 __ mov(edi, FieldOperand(esi, FixedArray::kLengthOffset)); in GenerateSmiToDouble()
581 __ movsd(the_hole_nan, in GenerateSmiToDouble()
583 __ jmp(&entry); in GenerateSmiToDouble()
586 __ bind(&gc_required); in GenerateSmiToDouble()
589 __ pop(esi); in GenerateSmiToDouble()
590 __ pop(ebx); in GenerateSmiToDouble()
591 __ pop(eax); in GenerateSmiToDouble()
592 __ jmp(fail); in GenerateSmiToDouble()
596 __ bind(&loop); in GenerateSmiToDouble()
597 __ mov(ebx, FieldOperand(esi, edi, times_2, FixedArray::kHeaderSize)); in GenerateSmiToDouble()
600 __ JumpIfNotSmi(ebx, &convert_hole); in GenerateSmiToDouble()
603 __ SmiUntag(ebx); in GenerateSmiToDouble()
604 __ Cvtsi2sd(xmm0, ebx); in GenerateSmiToDouble()
605 __ movsd(FieldOperand(eax, edi, times_4, FixedDoubleArray::kHeaderSize), in GenerateSmiToDouble()
607 __ jmp(&entry); in GenerateSmiToDouble()
610 __ bind(&convert_hole); in GenerateSmiToDouble()
613 __ cmp(ebx, masm->isolate()->factory()->the_hole_value()); in GenerateSmiToDouble()
614 __ Assert(equal, kObjectFoundInSmiOnlyArray); in GenerateSmiToDouble()
617 __ movsd(FieldOperand(eax, edi, times_4, FixedDoubleArray::kHeaderSize), in GenerateSmiToDouble()
620 __ bind(&entry); in GenerateSmiToDouble()
621 __ sub(edi, Immediate(Smi::FromInt(1))); in GenerateSmiToDouble()
622 __ j(not_sign, &loop); in GenerateSmiToDouble()
625 __ pop(esi); in GenerateSmiToDouble()
626 __ pop(ebx); in GenerateSmiToDouble()
627 __ pop(eax); in GenerateSmiToDouble()
629 __ bind(&only_change_map); in GenerateSmiToDouble()
633 __ mov(FieldOperand(edx, HeapObject::kMapOffset), ebx); in GenerateSmiToDouble()
634 __ RecordWriteField(edx, in GenerateSmiToDouble()
661 __ JumpIfJSArrayHasAllocationMemento(edx, edi, fail); in GenerateDoubleToObject()
666 __ mov(edi, FieldOperand(edx, JSObject::kElementsOffset)); in GenerateDoubleToObject()
667 __ cmp(edi, Immediate(masm->isolate()->factory()->empty_fixed_array())); in GenerateDoubleToObject()
668 __ j(equal, &only_change_map); in GenerateDoubleToObject()
670 __ push(esi); in GenerateDoubleToObject()
671 __ push(eax); in GenerateDoubleToObject()
672 __ push(edx); in GenerateDoubleToObject()
673 __ push(ebx); in GenerateDoubleToObject()
675 __ mov(ebx, FieldOperand(edi, FixedDoubleArray::kLengthOffset)); in GenerateDoubleToObject()
679 __ lea(edi, Operand(ebx, times_2, FixedArray::kHeaderSize)); in GenerateDoubleToObject()
680 __ Allocate(edi, eax, esi, no_reg, &gc_required, NO_ALLOCATION_FLAGS); in GenerateDoubleToObject()
684 __ mov(FieldOperand(eax, HeapObject::kMapOffset), in GenerateDoubleToObject()
686 __ mov(FieldOperand(eax, FixedArray::kLengthOffset), ebx); in GenerateDoubleToObject()
687 __ mov(edi, FieldOperand(edx, JSObject::kElementsOffset)); in GenerateDoubleToObject()
693 __ jmp(&initialization_loop_entry, Label::kNear); in GenerateDoubleToObject()
694 __ bind(&initialization_loop); in GenerateDoubleToObject()
695 __ mov(FieldOperand(eax, ebx, times_2, FixedArray::kHeaderSize), in GenerateDoubleToObject()
697 __ bind(&initialization_loop_entry); in GenerateDoubleToObject()
698 __ sub(ebx, Immediate(Smi::FromInt(1))); in GenerateDoubleToObject()
699 __ j(not_sign, &initialization_loop); in GenerateDoubleToObject()
701 __ mov(ebx, FieldOperand(edi, FixedDoubleArray::kLengthOffset)); in GenerateDoubleToObject()
702 __ jmp(&entry); in GenerateDoubleToObject()
707 __ bind(&only_change_map); in GenerateDoubleToObject()
708 __ mov(FieldOperand(edx, HeapObject::kMapOffset), ebx); in GenerateDoubleToObject()
709 __ RecordWriteField(edx, in GenerateDoubleToObject()
716 __ jmp(&success); in GenerateDoubleToObject()
719 __ bind(&gc_required); in GenerateDoubleToObject()
720 __ pop(ebx); in GenerateDoubleToObject()
721 __ pop(edx); in GenerateDoubleToObject()
722 __ pop(eax); in GenerateDoubleToObject()
723 __ pop(esi); in GenerateDoubleToObject()
724 __ jmp(fail); in GenerateDoubleToObject()
729 __ bind(&loop); in GenerateDoubleToObject()
732 __ cmp(FieldOperand(edi, ebx, times_4, offset), Immediate(kHoleNanUpper32)); in GenerateDoubleToObject()
733 __ j(equal, &convert_hole); in GenerateDoubleToObject()
736 __ AllocateHeapNumber(edx, esi, no_reg, &gc_required); in GenerateDoubleToObject()
738 __ movsd(xmm0, in GenerateDoubleToObject()
740 __ movsd(FieldOperand(edx, HeapNumber::kValueOffset), xmm0); in GenerateDoubleToObject()
741 __ mov(FieldOperand(eax, ebx, times_2, FixedArray::kHeaderSize), edx); in GenerateDoubleToObject()
742 __ mov(esi, ebx); in GenerateDoubleToObject()
743 __ RecordWriteArray(eax, in GenerateDoubleToObject()
749 __ jmp(&entry, Label::kNear); in GenerateDoubleToObject()
752 __ bind(&convert_hole); in GenerateDoubleToObject()
753 __ mov(FieldOperand(eax, ebx, times_2, FixedArray::kHeaderSize), in GenerateDoubleToObject()
756 __ bind(&entry); in GenerateDoubleToObject()
757 __ sub(ebx, Immediate(Smi::FromInt(1))); in GenerateDoubleToObject()
758 __ j(not_sign, &loop); in GenerateDoubleToObject()
760 __ pop(ebx); in GenerateDoubleToObject()
761 __ pop(edx); in GenerateDoubleToObject()
765 __ mov(FieldOperand(edx, HeapObject::kMapOffset), ebx); in GenerateDoubleToObject()
766 __ RecordWriteField(edx, in GenerateDoubleToObject()
774 __ mov(FieldOperand(edx, JSObject::kElementsOffset), eax); in GenerateDoubleToObject()
775 __ RecordWriteField(edx, in GenerateDoubleToObject()
784 __ pop(eax); in GenerateDoubleToObject()
785 __ pop(esi); in GenerateDoubleToObject()
787 __ bind(&success); in GenerateDoubleToObject()
798 __ mov(result, FieldOperand(string, HeapObject::kMapOffset)); in Generate()
799 __ movzx_b(result, FieldOperand(result, Map::kInstanceTypeOffset)); in Generate()
803 __ test(result, Immediate(kIsIndirectStringMask)); in Generate()
804 __ j(zero, &check_sequential, Label::kNear); in Generate()
808 __ test(result, Immediate(kSlicedNotConsMask)); in Generate()
809 __ j(zero, &cons_string, Label::kNear); in Generate()
813 __ mov(result, FieldOperand(string, SlicedString::kOffsetOffset)); in Generate()
814 __ SmiUntag(result); in Generate()
815 __ add(index, result); in Generate()
816 __ mov(string, FieldOperand(string, SlicedString::kParentOffset)); in Generate()
817 __ jmp(&indirect_string_loaded, Label::kNear); in Generate()
824 __ bind(&cons_string); in Generate()
825 __ cmp(FieldOperand(string, ConsString::kSecondOffset), in Generate()
827 __ j(not_equal, call_runtime); in Generate()
828 __ mov(string, FieldOperand(string, ConsString::kFirstOffset)); in Generate()
830 __ bind(&indirect_string_loaded); in Generate()
831 __ mov(result, FieldOperand(string, HeapObject::kMapOffset)); in Generate()
832 __ movzx_b(result, FieldOperand(result, Map::kInstanceTypeOffset)); in Generate()
838 __ bind(&check_sequential); in Generate()
840 __ test(result, Immediate(kStringRepresentationMask)); in Generate()
841 __ j(zero, &seq_string, Label::kNear); in Generate()
848 __ test(result, Immediate(kIsIndirectStringMask)); in Generate()
849 __ Assert(zero, kExternalStringExpectedButNotFound); in Generate()
853 __ test_b(result, Immediate(kShortExternalStringMask)); in Generate()
854 __ j(not_zero, call_runtime); in Generate()
857 __ test_b(result, Immediate(kStringEncodingMask)); in Generate()
858 __ mov(result, FieldOperand(string, ExternalString::kResourceDataOffset)); in Generate()
859 __ j(not_equal, &one_byte_external, Label::kNear); in Generate()
861 __ movzx_w(result, Operand(result, index, times_2, 0)); in Generate()
862 __ jmp(&done, Label::kNear); in Generate()
863 __ bind(&one_byte_external); in Generate()
865 __ movzx_b(result, Operand(result, index, times_1, 0)); in Generate()
866 __ jmp(&done, Label::kNear); in Generate()
870 __ bind(&seq_string); in Generate()
873 __ test(result, Immediate(kStringEncodingMask)); in Generate()
874 __ j(not_zero, &one_byte, Label::kNear); in Generate()
878 __ movzx_w(result, FieldOperand(string, in Generate()
882 __ jmp(&done, Label::kNear); in Generate()
886 __ bind(&one_byte); in Generate()
887 __ movzx_b(result, FieldOperand(string, in Generate()
891 __ bind(&done); in Generate()
894 #undef __