OLD | NEW |
1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 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 7429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7440 } | 7440 } |
7441 __ mov(ecx, FieldOperand(eax, i + kPointerSize)); | 7441 __ mov(ecx, FieldOperand(eax, i + kPointerSize)); |
7442 | 7442 |
7443 STATIC_ASSERT(JSObject::kElementsOffset % (2 * kPointerSize) == 0); | 7443 STATIC_ASSERT(JSObject::kElementsOffset % (2 * kPointerSize) == 0); |
7444 if (i == JSObject::kElementsOffset) { | 7444 if (i == JSObject::kElementsOffset) { |
7445 // If the elements array isn't empty, make it copy-on-write | 7445 // If the elements array isn't empty, make it copy-on-write |
7446 // before copying it. | 7446 // before copying it. |
7447 Label empty; | 7447 Label empty; |
7448 __ cmp(Operand(edx), Immediate(Factory::empty_fixed_array())); | 7448 __ cmp(Operand(edx), Immediate(Factory::empty_fixed_array())); |
7449 __ j(equal, &empty); | 7449 __ j(equal, &empty); |
7450 ASSERT(!Heap::InNewSpace(Heap::fixed_cow_array_map())); | |
7451 __ mov(FieldOperand(edx, HeapObject::kMapOffset), | 7450 __ mov(FieldOperand(edx, HeapObject::kMapOffset), |
7452 Immediate(Factory::fixed_cow_array_map())); | 7451 Immediate(Factory::fixed_cow_array_map())); |
7453 __ bind(&empty); | 7452 __ bind(&empty); |
7454 } | 7453 } |
7455 __ mov(FieldOperand(ebx, i), edx); | 7454 __ mov(FieldOperand(ebx, i), edx); |
7456 __ mov(FieldOperand(ebx, i + kPointerSize), ecx); | 7455 __ mov(FieldOperand(ebx, i + kPointerSize), ecx); |
7457 } | 7456 } |
7458 __ mov(eax, ebx); | 7457 __ mov(eax, ebx); |
7459 | 7458 |
7460 __ bind(&done); | 7459 __ bind(&done); |
(...skipping 7047 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
14508 masm.GetCode(&desc); | 14507 masm.GetCode(&desc); |
14509 // Call the function from C++. | 14508 // Call the function from C++. |
14510 return FUNCTION_CAST<MemCopyFunction>(buffer); | 14509 return FUNCTION_CAST<MemCopyFunction>(buffer); |
14511 } | 14510 } |
14512 | 14511 |
14513 #undef __ | 14512 #undef __ |
14514 | 14513 |
14515 } } // namespace v8::internal | 14514 } } // namespace v8::internal |
14516 | 14515 |
14517 #endif // V8_TARGET_ARCH_IA32 | 14516 #endif // V8_TARGET_ARCH_IA32 |
OLD | NEW |