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 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
398 // is too small, a fatal error occurs. No deallocation of the buffer is done | 398 // is too small, a fatal error occurs. No deallocation of the buffer is done |
399 // upon destruction of the assembler. | 399 // upon destruction of the assembler. |
400 Assembler(Isolate* isolate, void* buffer, int buffer_size) | 400 Assembler(Isolate* isolate, void* buffer, int buffer_size) |
401 : Assembler(IsolateData(isolate), buffer, buffer_size) {} | 401 : Assembler(IsolateData(isolate), buffer, buffer_size) {} |
402 Assembler(IsolateData isolate_data, void* buffer, int buffer_size); | 402 Assembler(IsolateData isolate_data, void* buffer, int buffer_size); |
403 virtual ~Assembler() {} | 403 virtual ~Assembler() {} |
404 | 404 |
405 // GetCode emits any pending (non-emitted) code and fills the descriptor | 405 // GetCode emits any pending (non-emitted) code and fills the descriptor |
406 // desc. GetCode() is idempotent; it returns the same result if no other | 406 // desc. GetCode() is idempotent; it returns the same result if no other |
407 // Assembler functions are invoked in between GetCode() calls. | 407 // Assembler functions are invoked in between GetCode() calls. |
408 void GetCode(CodeDesc* desc); | 408 void GetCode(Isolate* isolate, CodeDesc* desc); |
409 | 409 |
410 // Label operations & relative jumps (PPUM Appendix D) | 410 // Label operations & relative jumps (PPUM Appendix D) |
411 // | 411 // |
412 // Takes a branch opcode (cc) and a label (L) and generates | 412 // Takes a branch opcode (cc) and a label (L) and generates |
413 // either a backward branch or a forward branch and links it | 413 // either a backward branch or a forward branch and links it |
414 // to the label fixup chain. Usage: | 414 // to the label fixup chain. Usage: |
415 // | 415 // |
416 // Label L; // unbound label | 416 // Label L; // unbound label |
417 // j(cc, &L); // forward branch to unbound label | 417 // j(cc, &L); // forward branch to unbound label |
418 // bind(&L); // bind label to the current pc | 418 // bind(&L); // bind label to the current pc |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
486 // This is for calls and branches within generated code. | 486 // This is for calls and branches within generated code. |
487 inline static void deserialization_set_special_target_at( | 487 inline static void deserialization_set_special_target_at( |
488 Isolate* isolate, Address instruction_payload, Code* code, | 488 Isolate* isolate, Address instruction_payload, Code* code, |
489 Address target); | 489 Address target); |
490 | 490 |
491 // This sets the internal reference at the pc. | 491 // This sets the internal reference at the pc. |
492 inline static void deserialization_set_target_internal_reference_at( | 492 inline static void deserialization_set_target_internal_reference_at( |
493 Isolate* isolate, Address pc, Address target, | 493 Isolate* isolate, Address pc, Address target, |
494 RelocInfo::Mode mode = RelocInfo::INTERNAL_REFERENCE); | 494 RelocInfo::Mode mode = RelocInfo::INTERNAL_REFERENCE); |
495 | 495 |
| 496 static void set_heap_number(Handle<HeapObject> number, Address pc) { |
| 497 UNIMPLEMENTED(); |
| 498 } |
| 499 |
496 // Size of an instruction. | 500 // Size of an instruction. |
497 static constexpr int kInstrSize = sizeof(Instr); | 501 static constexpr int kInstrSize = sizeof(Instr); |
498 | 502 |
499 // Here we are patching the address in the LUI/ORI instruction pair. | 503 // Here we are patching the address in the LUI/ORI instruction pair. |
500 // These values are used in the serialization process and must be zero for | 504 // These values are used in the serialization process and must be zero for |
501 // PPC platform, as Code, Embedded Object or External-reference pointers | 505 // PPC platform, as Code, Embedded Object or External-reference pointers |
502 // are split across two consecutive instructions and don't exist separately | 506 // are split across two consecutive instructions and don't exist separately |
503 // in the code, so the serializer should not step forwards in memory after | 507 // in the code, so the serializer should not step forwards in memory after |
504 // a target is resolved and written. | 508 // a target is resolved and written. |
505 static constexpr int kSpecialTargetSize = 0; | 509 static constexpr int kSpecialTargetSize = 0; |
(...skipping 1051 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1557 PatchingAssembler(IsolateData isolate_data, byte* address, int instructions); | 1561 PatchingAssembler(IsolateData isolate_data, byte* address, int instructions); |
1558 ~PatchingAssembler(); | 1562 ~PatchingAssembler(); |
1559 | 1563 |
1560 void FlushICache(Isolate* isolate); | 1564 void FlushICache(Isolate* isolate); |
1561 }; | 1565 }; |
1562 | 1566 |
1563 } // namespace internal | 1567 } // namespace internal |
1564 } // namespace v8 | 1568 } // namespace v8 |
1565 | 1569 |
1566 #endif // V8_PPC_ASSEMBLER_PPC_H_ | 1570 #endif // V8_PPC_ASSEMBLER_PPC_H_ |
OLD | NEW |