| 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 350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 361 Object* obj = *handle; | 361 Object* obj = *handle; |
| 362 if (obj->IsHeapObject()) { | 362 if (obj->IsHeapObject()) { |
| 363 emit(reinterpret_cast<intptr_t>(handle.location()), | 363 emit(reinterpret_cast<intptr_t>(handle.location()), |
| 364 RelocInfo::EMBEDDED_OBJECT); | 364 RelocInfo::EMBEDDED_OBJECT); |
| 365 } else { | 365 } else { |
| 366 // no relocation needed | 366 // no relocation needed |
| 367 emit(reinterpret_cast<intptr_t>(obj)); | 367 emit(reinterpret_cast<intptr_t>(obj)); |
| 368 } | 368 } |
| 369 } | 369 } |
| 370 | 370 |
| 371 | 371 void Assembler::emit(uint32_t x, RelocInfo::Mode rmode) { |
| 372 void Assembler::emit(uint32_t x, RelocInfo::Mode rmode, TypeFeedbackId id) { | 372 if (!RelocInfo::IsNone(rmode) && rmode != RelocInfo::CODE_AGE_SEQUENCE) { |
| 373 if (rmode == RelocInfo::CODE_TARGET && !id.IsNone()) { | |
| 374 RecordRelocInfo(RelocInfo::CODE_TARGET_WITH_ID, id.ToInt()); | |
| 375 } else if (!RelocInfo::IsNone(rmode) | |
| 376 && rmode != RelocInfo::CODE_AGE_SEQUENCE) { | |
| 377 RecordRelocInfo(rmode); | 373 RecordRelocInfo(rmode); |
| 378 } | 374 } |
| 379 emit(x); | 375 emit(x); |
| 380 } | 376 } |
| 381 | 377 |
| 382 | 378 void Assembler::emit(Handle<Code> code, RelocInfo::Mode rmode) { |
| 383 void Assembler::emit(Handle<Code> code, | |
| 384 RelocInfo::Mode rmode, | |
| 385 TypeFeedbackId id) { | |
| 386 AllowDeferredHandleDereference embedding_raw_address; | 379 AllowDeferredHandleDereference embedding_raw_address; |
| 387 emit(reinterpret_cast<intptr_t>(code.location()), rmode, id); | 380 emit(reinterpret_cast<intptr_t>(code.location()), rmode); |
| 388 } | 381 } |
| 389 | 382 |
| 390 | 383 |
| 391 void Assembler::emit(const Immediate& x) { | 384 void Assembler::emit(const Immediate& x) { |
| 392 if (x.rmode_ == RelocInfo::INTERNAL_REFERENCE) { | 385 if (x.rmode_ == RelocInfo::INTERNAL_REFERENCE) { |
| 393 Label* label = reinterpret_cast<Label*>(x.immediate()); | 386 Label* label = reinterpret_cast<Label*>(x.immediate()); |
| 394 emit_code_relative_offset(label); | 387 emit_code_relative_offset(label); |
| 395 return; | 388 return; |
| 396 } | 389 } |
| 397 if (!RelocInfo::IsNone(x.rmode_)) RecordRelocInfo(x.rmode_); | 390 if (!RelocInfo::IsNone(x.rmode_)) RecordRelocInfo(x.rmode_); |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 548 | 541 |
| 549 Operand::Operand(Immediate imm) { | 542 Operand::Operand(Immediate imm) { |
| 550 // [disp/r] | 543 // [disp/r] |
| 551 set_modrm(0, ebp); | 544 set_modrm(0, ebp); |
| 552 set_dispr(imm.immediate(), imm.rmode_); | 545 set_dispr(imm.immediate(), imm.rmode_); |
| 553 } | 546 } |
| 554 } // namespace internal | 547 } // namespace internal |
| 555 } // namespace v8 | 548 } // namespace v8 |
| 556 | 549 |
| 557 #endif // V8_IA32_ASSEMBLER_IA32_INL_H_ | 550 #endif // V8_IA32_ASSEMBLER_IA32_INL_H_ |
| OLD | NEW |