| OLD | NEW |
| 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. | 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. |
| 2 // All Rights Reserved. | 2 // All Rights Reserved. |
| 3 // | 3 // |
| 4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
| 5 // modification, are permitted provided that the following conditions | 5 // modification, are permitted provided that the following conditions |
| 6 // are met: | 6 // are met: |
| 7 // | 7 // |
| 8 // - Redistributions of source code must retain the above copyright notice, | 8 // - Redistributions of source code must retain the above copyright notice, |
| 9 // this list of conditions and the following disclaimer. | 9 // this list of conditions and the following disclaimer. |
| 10 // | 10 // |
| (...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 450 | 450 |
| 451 // Return the address in the constant pool of the code target address used by | 451 // Return the address in the constant pool of the code target address used by |
| 452 // the branch/call instruction at pc, or the object in a mov. | 452 // the branch/call instruction at pc, or the object in a mov. |
| 453 INLINE(static Address target_constant_pool_address_at( | 453 INLINE(static Address target_constant_pool_address_at( |
| 454 Address pc, Address constant_pool, ConstantPoolEntry::Access access, | 454 Address pc, Address constant_pool, ConstantPoolEntry::Access access, |
| 455 ConstantPoolEntry::Type type)); | 455 ConstantPoolEntry::Type type)); |
| 456 | 456 |
| 457 // Read/Modify the code target address in the branch/call instruction at pc. | 457 // Read/Modify the code target address in the branch/call instruction at pc. |
| 458 INLINE(static Address target_address_at(Address pc, Address constant_pool)); | 458 INLINE(static Address target_address_at(Address pc, Address constant_pool)); |
| 459 INLINE(static void set_target_address_at( | 459 INLINE(static void set_target_address_at( |
| 460 Address pc, Address constant_pool, Address target, | 460 Isolate* isolate, Address pc, Address constant_pool, Address target, |
| 461 ICacheFlushMode icache_flush_mode = FLUSH_ICACHE_IF_NEEDED)); | 461 ICacheFlushMode icache_flush_mode = FLUSH_ICACHE_IF_NEEDED)); |
| 462 INLINE(static Address target_address_at(Address pc, Code* code)) { | 462 INLINE(static Address target_address_at(Address pc, Code* code)) { |
| 463 Address constant_pool = code ? code->constant_pool() : NULL; | 463 Address constant_pool = code ? code->constant_pool() : NULL; |
| 464 return target_address_at(pc, constant_pool); | 464 return target_address_at(pc, constant_pool); |
| 465 } | 465 } |
| 466 INLINE(static void set_target_address_at( | 466 INLINE(static void set_target_address_at( |
| 467 Address pc, Code* code, Address target, | 467 Isolate* isolate, Address pc, Code* code, Address target, |
| 468 ICacheFlushMode icache_flush_mode = FLUSH_ICACHE_IF_NEEDED)) { | 468 ICacheFlushMode icache_flush_mode = FLUSH_ICACHE_IF_NEEDED)) { |
| 469 Address constant_pool = code ? code->constant_pool() : NULL; | 469 Address constant_pool = code ? code->constant_pool() : NULL; |
| 470 set_target_address_at(pc, constant_pool, target, icache_flush_mode); | 470 set_target_address_at(isolate, pc, constant_pool, target, |
| 471 icache_flush_mode); |
| 471 } | 472 } |
| 472 | 473 |
| 473 // Return the code target address at a call site from the return address | 474 // Return the code target address at a call site from the return address |
| 474 // of that call in the instruction stream. | 475 // of that call in the instruction stream. |
| 475 inline static Address target_address_from_return_address(Address pc); | 476 inline static Address target_address_from_return_address(Address pc); |
| 476 | 477 |
| 477 // Given the address of the beginning of a call, return the address | 478 // Given the address of the beginning of a call, return the address |
| 478 // in the instruction stream that the call will return to. | 479 // in the instruction stream that the call will return to. |
| 479 INLINE(static Address return_address_from_call_start(Address pc)); | 480 INLINE(static Address return_address_from_call_start(Address pc)); |
| 480 | 481 |
| 481 // This sets the branch destination. | 482 // This sets the branch destination. |
| 482 // This is for calls and branches within generated code. | 483 // This is for calls and branches within generated code. |
| 483 inline static void deserialization_set_special_target_at( | 484 inline static void deserialization_set_special_target_at( |
| 484 Address instruction_payload, Code* code, Address target); | 485 Isolate* isolate, Address instruction_payload, Code* code, |
| 486 Address target); |
| 485 | 487 |
| 486 // This sets the internal reference at the pc. | 488 // This sets the internal reference at the pc. |
| 487 inline static void deserialization_set_target_internal_reference_at( | 489 inline static void deserialization_set_target_internal_reference_at( |
| 488 Address pc, Address target, | 490 Isolate* isolate, Address pc, Address target, |
| 489 RelocInfo::Mode mode = RelocInfo::INTERNAL_REFERENCE); | 491 RelocInfo::Mode mode = RelocInfo::INTERNAL_REFERENCE); |
| 490 | 492 |
| 491 // Size of an instruction. | 493 // Size of an instruction. |
| 492 static const int kInstrSize = sizeof(Instr); | 494 static const int kInstrSize = sizeof(Instr); |
| 493 | 495 |
| 494 // Here we are patching the address in the LUI/ORI instruction pair. | 496 // Here we are patching the address in the LUI/ORI instruction pair. |
| 495 // These values are used in the serialization process and must be zero for | 497 // These values are used in the serialization process and must be zero for |
| 496 // PPC platform, as Code, Embedded Object or External-reference pointers | 498 // PPC platform, as Code, Embedded Object or External-reference pointers |
| 497 // are split across two consecutive instructions and don't exist separately | 499 // are split across two consecutive instructions and don't exist separately |
| 498 // in the code, so the serializer should not step forwards in memory after | 500 // in the code, so the serializer should not step forwards in memory after |
| (...skipping 960 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1459 | 1461 |
| 1460 | 1462 |
| 1461 class EnsureSpace BASE_EMBEDDED { | 1463 class EnsureSpace BASE_EMBEDDED { |
| 1462 public: | 1464 public: |
| 1463 explicit EnsureSpace(Assembler* assembler) { assembler->CheckBuffer(); } | 1465 explicit EnsureSpace(Assembler* assembler) { assembler->CheckBuffer(); } |
| 1464 }; | 1466 }; |
| 1465 } // namespace internal | 1467 } // namespace internal |
| 1466 } // namespace v8 | 1468 } // namespace v8 |
| 1467 | 1469 |
| 1468 #endif // V8_PPC_ASSEMBLER_PPC_H_ | 1470 #endif // V8_PPC_ASSEMBLER_PPC_H_ |
| OLD | NEW |