| OLD | NEW |
| 1 | 1 |
| 2 // Copyright (c) 1994-2006 Sun Microsystems Inc. | 2 // Copyright (c) 1994-2006 Sun Microsystems Inc. |
| 3 // All Rights Reserved. | 3 // All Rights Reserved. |
| 4 // | 4 // |
| 5 // Redistribution and use in source and binary forms, with or without | 5 // Redistribution and use in source and binary forms, with or without |
| 6 // modification, are permitted provided that the following conditions are | 6 // modification, are permitted provided that the following conditions are |
| 7 // met: | 7 // met: |
| 8 // | 8 // |
| 9 // - Redistributions of source code must retain the above copyright notice, | 9 // - Redistributions of source code must retain the above copyright notice, |
| 10 // this list of conditions and the following disclaimer. | 10 // this list of conditions and the following disclaimer. |
| (...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 342 if (IsInternalReference(rmode_)) { | 342 if (IsInternalReference(rmode_)) { |
| 343 Memory::Address_at(pc_) = NULL; | 343 Memory::Address_at(pc_) = NULL; |
| 344 } else if (IsInternalReferenceEncoded(rmode_)) { | 344 } else if (IsInternalReferenceEncoded(rmode_)) { |
| 345 Assembler::set_target_internal_reference_encoded_at(pc_, nullptr); | 345 Assembler::set_target_internal_reference_encoded_at(pc_, nullptr); |
| 346 } else { | 346 } else { |
| 347 Assembler::set_target_address_at(isolate_, pc_, host_, NULL); | 347 Assembler::set_target_address_at(isolate_, pc_, host_, NULL); |
| 348 } | 348 } |
| 349 } | 349 } |
| 350 | 350 |
| 351 | 351 |
| 352 bool RelocInfo::IsPatchedReturnSequence() { | |
| 353 Instr instr0 = Assembler::instr_at(pc_); | |
| 354 Instr instr1 = Assembler::instr_at(pc_ + 1 * Assembler::kInstrSize); | |
| 355 Instr instr2 = Assembler::instr_at(pc_ + 2 * Assembler::kInstrSize); | |
| 356 bool patched_return = ((instr0 & kOpcodeMask) == LUI && | |
| 357 (instr1 & kOpcodeMask) == ORI && | |
| 358 ((instr2 & kOpcodeMask) == JAL || | |
| 359 ((instr2 & kOpcodeMask) == SPECIAL && | |
| 360 (instr2 & kFunctionFieldMask) == JALR))); | |
| 361 return patched_return; | |
| 362 } | |
| 363 | |
| 364 | |
| 365 bool RelocInfo::IsPatchedDebugBreakSlotSequence() { | |
| 366 Instr current_instr = Assembler::instr_at(pc_); | |
| 367 return !Assembler::IsNop(current_instr, Assembler::DEBUG_BREAK_NOP); | |
| 368 } | |
| 369 | |
| 370 | |
| 371 void RelocInfo::Visit(Isolate* isolate, ObjectVisitor* visitor) { | 352 void RelocInfo::Visit(Isolate* isolate, ObjectVisitor* visitor) { |
| 372 RelocInfo::Mode mode = rmode(); | 353 RelocInfo::Mode mode = rmode(); |
| 373 if (mode == RelocInfo::EMBEDDED_OBJECT) { | 354 if (mode == RelocInfo::EMBEDDED_OBJECT) { |
| 374 visitor->VisitEmbeddedPointer(this); | 355 visitor->VisitEmbeddedPointer(this); |
| 375 } else if (RelocInfo::IsCodeTarget(mode)) { | 356 } else if (RelocInfo::IsCodeTarget(mode)) { |
| 376 visitor->VisitCodeTarget(this); | 357 visitor->VisitCodeTarget(this); |
| 377 } else if (mode == RelocInfo::CELL) { | 358 } else if (mode == RelocInfo::CELL) { |
| 378 visitor->VisitCell(this); | 359 visitor->VisitCell(this); |
| 379 } else if (mode == RelocInfo::EXTERNAL_REFERENCE) { | 360 } else if (mode == RelocInfo::EXTERNAL_REFERENCE) { |
| 380 visitor->VisitExternalReference(this); | 361 visitor->VisitExternalReference(this); |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 482 CheckBuffer(); | 463 CheckBuffer(); |
| 483 } | 464 } |
| 484 EmitHelper(x, is_compact_branch); | 465 EmitHelper(x, is_compact_branch); |
| 485 } | 466 } |
| 486 | 467 |
| 487 | 468 |
| 488 } // namespace internal | 469 } // namespace internal |
| 489 } // namespace v8 | 470 } // namespace v8 |
| 490 | 471 |
| 491 #endif // V8_MIPS_ASSEMBLER_MIPS_INL_H_ | 472 #endif // V8_MIPS_ASSEMBLER_MIPS_INL_H_ |
| OLD | NEW |