| 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 |