| 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 are | 5 // modification, are permitted provided that the following conditions are |
| 6 // met: | 6 // 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 465 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 476 virtual ~Assembler() { } | 476 virtual ~Assembler() { } |
| 477 | 477 |
| 478 // GetCode emits any pending (non-emitted) code and fills the descriptor | 478 // GetCode emits any pending (non-emitted) code and fills the descriptor |
| 479 // desc. GetCode() is idempotent; it returns the same result if no other | 479 // desc. GetCode() is idempotent; it returns the same result if no other |
| 480 // Assembler functions are invoked in between GetCode() calls. | 480 // Assembler functions are invoked in between GetCode() calls. |
| 481 void GetCode(CodeDesc* desc); | 481 void GetCode(CodeDesc* desc); |
| 482 | 482 |
| 483 // Read/Modify the code target in the branch/call instruction at pc. | 483 // Read/Modify the code target in the branch/call instruction at pc. |
| 484 inline static Address target_address_at(Address pc, Address constant_pool); | 484 inline static Address target_address_at(Address pc, Address constant_pool); |
| 485 inline static void set_target_address_at( | 485 inline static void set_target_address_at( |
| 486 Address pc, Address constant_pool, Address target, | 486 Isolate* isolate, Address pc, Address constant_pool, Address target, |
| 487 ICacheFlushMode icache_flush_mode = FLUSH_ICACHE_IF_NEEDED); | 487 ICacheFlushMode icache_flush_mode = FLUSH_ICACHE_IF_NEEDED); |
| 488 static inline Address target_address_at(Address pc, Code* code) { | 488 static inline Address target_address_at(Address pc, Code* code) { |
| 489 Address constant_pool = code ? code->constant_pool() : NULL; | 489 Address constant_pool = code ? code->constant_pool() : NULL; |
| 490 return target_address_at(pc, constant_pool); | 490 return target_address_at(pc, constant_pool); |
| 491 } | 491 } |
| 492 static inline void set_target_address_at(Address pc, | 492 static inline void set_target_address_at( |
| 493 Code* code, | 493 Isolate* isolate, Address pc, Code* code, Address target, |
| 494 Address target, | 494 ICacheFlushMode icache_flush_mode = FLUSH_ICACHE_IF_NEEDED) { |
| 495 ICacheFlushMode icache_flush_mode = | |
| 496 FLUSH_ICACHE_IF_NEEDED) { | |
| 497 Address constant_pool = code ? code->constant_pool() : NULL; | 495 Address constant_pool = code ? code->constant_pool() : NULL; |
| 498 set_target_address_at(pc, constant_pool, target); | 496 set_target_address_at(isolate, pc, constant_pool, target); |
| 499 } | 497 } |
| 500 | 498 |
| 501 // Return the code target address at a call site from the return address | 499 // Return the code target address at a call site from the return address |
| 502 // of that call in the instruction stream. | 500 // of that call in the instruction stream. |
| 503 inline static Address target_address_from_return_address(Address pc); | 501 inline static Address target_address_from_return_address(Address pc); |
| 504 | 502 |
| 505 // This sets the branch destination (which is in the instruction on x86). | 503 // This sets the branch destination (which is in the instruction on x86). |
| 506 // This is for calls and branches within generated code. | 504 // This is for calls and branches within generated code. |
| 507 inline static void deserialization_set_special_target_at( | 505 inline static void deserialization_set_special_target_at( |
| 508 Address instruction_payload, Code* code, Address target) { | 506 Isolate* isolate, Address instruction_payload, Code* code, |
| 509 set_target_address_at(instruction_payload, code, target); | 507 Address target) { |
| 508 set_target_address_at(isolate, instruction_payload, code, target); |
| 510 } | 509 } |
| 511 | 510 |
| 512 // This sets the internal reference at the pc. | 511 // This sets the internal reference at the pc. |
| 513 inline static void deserialization_set_target_internal_reference_at( | 512 inline static void deserialization_set_target_internal_reference_at( |
| 514 Address pc, Address target, | 513 Isolate* isolate, Address pc, Address target, |
| 515 RelocInfo::Mode mode = RelocInfo::INTERNAL_REFERENCE); | 514 RelocInfo::Mode mode = RelocInfo::INTERNAL_REFERENCE); |
| 516 | 515 |
| 517 static const int kSpecialTargetSize = kPointerSize; | 516 static const int kSpecialTargetSize = kPointerSize; |
| 518 | 517 |
| 519 // Distance between the address of the code target in the call instruction | 518 // Distance between the address of the code target in the call instruction |
| 520 // and the return address | 519 // and the return address |
| 521 static const int kCallTargetAddressOffset = kPointerSize; | 520 static const int kCallTargetAddressOffset = kPointerSize; |
| 522 | 521 |
| 523 static const int kCallInstructionLength = 5; | 522 static const int kCallInstructionLength = 5; |
| 524 | 523 |
| (...skipping 549 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1074 Assembler* assembler_; | 1073 Assembler* assembler_; |
| 1075 #ifdef DEBUG | 1074 #ifdef DEBUG |
| 1076 int space_before_; | 1075 int space_before_; |
| 1077 #endif | 1076 #endif |
| 1078 }; | 1077 }; |
| 1079 | 1078 |
| 1080 } // namespace internal | 1079 } // namespace internal |
| 1081 } // namespace v8 | 1080 } // namespace v8 |
| 1082 | 1081 |
| 1083 #endif // V8_X87_ASSEMBLER_X87_H_ | 1082 #endif // V8_X87_ASSEMBLER_X87_H_ |
| OLD | NEW |