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 |