| Index: src/ia32/assembler-ia32-inl.h | 
| =================================================================== | 
| --- src/ia32/assembler-ia32-inl.h	(revision 13870) | 
| +++ src/ia32/assembler-ia32-inl.h	(working copy) | 
| @@ -51,7 +51,7 @@ | 
|  | 
| // The modes possibly affected by apply must be in kApplyMask. | 
| void RelocInfo::apply(intptr_t delta) { | 
| -  if (rmode_ == RUNTIME_ENTRY || IsCodeTarget(rmode_)) { | 
| +  if (IsRuntimeEntry(rmode_) || IsCodeTarget(rmode_)) { | 
| int32_t* p = reinterpret_cast<int32_t*>(pc_); | 
| *p -= delta;  // Relocate entry. | 
| CPU::FlushICache(p, sizeof(uint32_t)); | 
| @@ -83,13 +83,13 @@ | 
|  | 
|  | 
| Address RelocInfo::target_address() { | 
| -  ASSERT(IsCodeTarget(rmode_) || rmode_ == RUNTIME_ENTRY); | 
| +  ASSERT(IsCodeTarget(rmode_) || IsRuntimeEntry(rmode_)); | 
| return Assembler::target_address_at(pc_); | 
| } | 
|  | 
|  | 
| Address RelocInfo::target_address_address() { | 
| -  ASSERT(IsCodeTarget(rmode_) || rmode_ == RUNTIME_ENTRY | 
| +  ASSERT(IsCodeTarget(rmode_) || IsRuntimeEntry(rmode_) | 
| || rmode_ == EMBEDDED_OBJECT | 
| || rmode_ == EXTERNAL_REFERENCE); | 
| return reinterpret_cast<Address>(pc_); | 
| @@ -103,7 +103,7 @@ | 
|  | 
| void RelocInfo::set_target_address(Address target, WriteBarrierMode mode) { | 
| Assembler::set_target_address_at(pc_, target); | 
| -  ASSERT(IsCodeTarget(rmode_) || rmode_ == RUNTIME_ENTRY); | 
| +  ASSERT(IsCodeTarget(rmode_) || IsRuntimeEntry(rmode_)); | 
| if (mode == UPDATE_WRITE_BARRIER && host() != NULL && IsCodeTarget(rmode_)) { | 
| Object* target_code = Code::GetCodeFromTargetAddress(target); | 
| host()->GetHeap()->incremental_marking()->RecordWriteIntoCode( | 
| @@ -149,6 +149,19 @@ | 
| } | 
|  | 
|  | 
| +Address RelocInfo::target_runtime_entry(Assembler* origin) { | 
| +  ASSERT(IsRuntimeEntry(rmode_)); | 
| +  return reinterpret_cast<Address>(*reinterpret_cast<int32_t*>(pc_)); | 
| +} | 
| + | 
| + | 
| +void RelocInfo::set_target_runtime_entry(Address target, | 
| +                                         WriteBarrierMode mode) { | 
| +  ASSERT(IsRuntimeEntry(rmode_)); | 
| +  if (target_address() != target) set_target_address(target, mode); | 
| +} | 
| + | 
| + | 
| Handle<JSGlobalPropertyCell> RelocInfo::target_cell_handle() { | 
| ASSERT(rmode_ == RelocInfo::GLOBAL_PROPERTY_CELL); | 
| Address address = Memory::Address_at(pc_); | 
| @@ -262,7 +275,7 @@ | 
| Isolate::Current()->debug()->has_break_points()) { | 
| visitor->VisitDebugTarget(this); | 
| #endif | 
| -  } else if (mode == RelocInfo::RUNTIME_ENTRY) { | 
| +  } else if (IsRuntimeEntry(mode)) { | 
| visitor->VisitRuntimeEntry(this); | 
| } | 
| } | 
| @@ -291,7 +304,7 @@ | 
| IsPatchedDebugBreakSlotSequence()))) { | 
| StaticVisitor::VisitDebugTarget(heap, this); | 
| #endif | 
| -  } else if (mode == RelocInfo::RUNTIME_ENTRY) { | 
| +  } else if (IsRuntimeEntry(mode)) { | 
| StaticVisitor::VisitRuntimeEntry(this); | 
| } | 
| } | 
|  |