| 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 5476 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5487 __ Move(address, regs_.address()); | 5487 __ Move(address, regs_.address()); |
| 5488 __ Move(arg1, regs_.object()); | 5488 __ Move(arg1, regs_.object()); |
| 5489 if (mode == INCREMENTAL_COMPACTION) { | 5489 if (mode == INCREMENTAL_COMPACTION) { |
| 5490 // TODO(gc) Can we just set address arg2 in the beginning? | 5490 // TODO(gc) Can we just set address arg2 in the beginning? |
| 5491 __ Move(arg2, address); | 5491 __ Move(arg2, address); |
| 5492 } else { | 5492 } else { |
| 5493 ASSERT(mode == INCREMENTAL); | 5493 ASSERT(mode == INCREMENTAL); |
| 5494 __ movq(arg2, Operand(address, 0)); | 5494 __ movq(arg2, Operand(address, 0)); |
| 5495 } | 5495 } |
| 5496 __ LoadAddress(arg3, ExternalReference::isolate_address()); | 5496 __ LoadAddress(arg3, ExternalReference::isolate_address()); |
| 5497 // TODO(gc): Create a fast version of this C function that does not duplicate | |
| 5498 // the checks done in the stub. | |
| 5499 int argument_count = 3; | 5497 int argument_count = 3; |
| 5500 __ PrepareCallCFunction(argument_count); | 5498 __ PrepareCallCFunction(argument_count); |
| 5501 if (mode == INCREMENTAL_COMPACTION) { | 5499 if (mode == INCREMENTAL_COMPACTION) { |
| 5502 __ CallCFunction( | 5500 __ CallCFunction( |
| 5503 ExternalReference::incremental_evacuation_record_write_function( | 5501 ExternalReference::incremental_evacuation_record_write_function( |
| 5504 masm->isolate()), | 5502 masm->isolate()), |
| 5505 argument_count); | 5503 argument_count); |
| 5506 } else { | 5504 } else { |
| 5507 ASSERT(mode == INCREMENTAL); | 5505 ASSERT(mode == INCREMENTAL); |
| 5508 __ CallCFunction( | 5506 __ CallCFunction( |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5541 // TODO(gc): Add call to EnsureNotWhite here. | 5539 // TODO(gc): Add call to EnsureNotWhite here. |
| 5542 // Fall through when we need to inform the incremental marker. | 5540 // Fall through when we need to inform the incremental marker. |
| 5543 } | 5541 } |
| 5544 | 5542 |
| 5545 | 5543 |
| 5546 #undef __ | 5544 #undef __ |
| 5547 | 5545 |
| 5548 } } // namespace v8::internal | 5546 } } // namespace v8::internal |
| 5549 | 5547 |
| 5550 #endif // V8_TARGET_ARCH_X64 | 5548 #endif // V8_TARGET_ARCH_X64 |
| OLD | NEW |