Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(78)

Side by Side Diff: src/objects.cc

Issue 267116: Fix X64 build in the case that debugger support is disabled. Change function... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 11 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/mark-compact.cc ('k') | src/x64/assembler-x64-inl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2006-2009 the V8 project authors. All rights reserved. 1 // Copyright 2006-2009 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 4965 matching lines...) Expand 10 before | Expand all | Expand 10 after
4976 void ObjectVisitor::VisitCodeTarget(RelocInfo* rinfo) { 4976 void ObjectVisitor::VisitCodeTarget(RelocInfo* rinfo) {
4977 ASSERT(RelocInfo::IsCodeTarget(rinfo->rmode())); 4977 ASSERT(RelocInfo::IsCodeTarget(rinfo->rmode()));
4978 Object* target = Code::GetCodeFromTargetAddress(rinfo->target_address()); 4978 Object* target = Code::GetCodeFromTargetAddress(rinfo->target_address());
4979 Object* old_target = target; 4979 Object* old_target = target;
4980 VisitPointer(&target); 4980 VisitPointer(&target);
4981 CHECK_EQ(target, old_target); // VisitPointer doesn't change Code* *target. 4981 CHECK_EQ(target, old_target); // VisitPointer doesn't change Code* *target.
4982 } 4982 }
4983 4983
4984 4984
4985 void ObjectVisitor::VisitDebugTarget(RelocInfo* rinfo) { 4985 void ObjectVisitor::VisitDebugTarget(RelocInfo* rinfo) {
4986 ASSERT(RelocInfo::IsJSReturn(rinfo->rmode()) && rinfo->IsCallInstruction()); 4986 ASSERT(RelocInfo::IsJSReturn(rinfo->rmode()) &&
4987 rinfo->IsPatchedReturnSequence());
4987 Object* target = Code::GetCodeFromTargetAddress(rinfo->call_address()); 4988 Object* target = Code::GetCodeFromTargetAddress(rinfo->call_address());
4988 Object* old_target = target; 4989 Object* old_target = target;
4989 VisitPointer(&target); 4990 VisitPointer(&target);
4990 CHECK_EQ(target, old_target); // VisitPointer doesn't change Code* *target. 4991 CHECK_EQ(target, old_target); // VisitPointer doesn't change Code* *target.
4991 } 4992 }
4992 4993
4993 4994
4994 void Code::CodeIterateBody(ObjectVisitor* v) { 4995 void Code::CodeIterateBody(ObjectVisitor* v) {
4995 int mode_mask = RelocInfo::kCodeTargetMask | 4996 int mode_mask = RelocInfo::kCodeTargetMask |
4996 RelocInfo::ModeMask(RelocInfo::EMBEDDED_OBJECT) | 4997 RelocInfo::ModeMask(RelocInfo::EMBEDDED_OBJECT) |
4997 RelocInfo::ModeMask(RelocInfo::EXTERNAL_REFERENCE) | 4998 RelocInfo::ModeMask(RelocInfo::EXTERNAL_REFERENCE) |
4998 RelocInfo::ModeMask(RelocInfo::JS_RETURN) | 4999 RelocInfo::ModeMask(RelocInfo::JS_RETURN) |
4999 RelocInfo::ModeMask(RelocInfo::RUNTIME_ENTRY); 5000 RelocInfo::ModeMask(RelocInfo::RUNTIME_ENTRY);
5000 5001
5001 for (RelocIterator it(this, mode_mask); !it.done(); it.next()) { 5002 for (RelocIterator it(this, mode_mask); !it.done(); it.next()) {
5002 RelocInfo::Mode rmode = it.rinfo()->rmode(); 5003 RelocInfo::Mode rmode = it.rinfo()->rmode();
5003 if (rmode == RelocInfo::EMBEDDED_OBJECT) { 5004 if (rmode == RelocInfo::EMBEDDED_OBJECT) {
5004 v->VisitPointer(it.rinfo()->target_object_address()); 5005 v->VisitPointer(it.rinfo()->target_object_address());
5005 } else if (RelocInfo::IsCodeTarget(rmode)) { 5006 } else if (RelocInfo::IsCodeTarget(rmode)) {
5006 v->VisitCodeTarget(it.rinfo()); 5007 v->VisitCodeTarget(it.rinfo());
5007 } else if (rmode == RelocInfo::EXTERNAL_REFERENCE) { 5008 } else if (rmode == RelocInfo::EXTERNAL_REFERENCE) {
5008 v->VisitExternalReference(it.rinfo()->target_reference_address()); 5009 v->VisitExternalReference(it.rinfo()->target_reference_address());
5009 #ifdef ENABLE_DEBUGGER_SUPPORT 5010 #ifdef ENABLE_DEBUGGER_SUPPORT
5010 } else if (Debug::has_break_points() && 5011 } else if (Debug::has_break_points() &&
5011 RelocInfo::IsJSReturn(rmode) && 5012 RelocInfo::IsJSReturn(rmode) &&
5012 it.rinfo()->IsCallInstruction()) { 5013 it.rinfo()->IsPatchedReturnSequence()) {
5013 v->VisitDebugTarget(it.rinfo()); 5014 v->VisitDebugTarget(it.rinfo());
5014 #endif 5015 #endif
5015 } else if (rmode == RelocInfo::RUNTIME_ENTRY) { 5016 } else if (rmode == RelocInfo::RUNTIME_ENTRY) {
5016 v->VisitRuntimeEntry(it.rinfo()); 5017 v->VisitRuntimeEntry(it.rinfo());
5017 } 5018 }
5018 } 5019 }
5019 5020
5020 ScopeInfo<>::IterateScopeInfo(this, v); 5021 ScopeInfo<>::IterateScopeInfo(this, v);
5021 } 5022 }
5022 5023
(...skipping 17 matching lines...) Expand all
5040 *p++ = 0; 5041 *p++ = 0;
5041 } 5042 }
5042 } 5043 }
5043 5044
5044 // copy reloc info 5045 // copy reloc info
5045 memmove(relocation_start(), 5046 memmove(relocation_start(),
5046 desc.buffer + desc.buffer_size - desc.reloc_size, 5047 desc.buffer + desc.buffer_size - desc.reloc_size,
5047 desc.reloc_size); 5048 desc.reloc_size);
5048 5049
5049 // unbox handles and relocate 5050 // unbox handles and relocate
5050 int delta = instruction_start() - desc.buffer; 5051 intptr_t delta = instruction_start() - desc.buffer;
5051 int mode_mask = RelocInfo::kCodeTargetMask | 5052 int mode_mask = RelocInfo::kCodeTargetMask |
5052 RelocInfo::ModeMask(RelocInfo::EMBEDDED_OBJECT) | 5053 RelocInfo::ModeMask(RelocInfo::EMBEDDED_OBJECT) |
5053 RelocInfo::kApplyMask; 5054 RelocInfo::kApplyMask;
5054 Assembler* origin = desc.origin; // Needed to find target_object on X64. 5055 Assembler* origin = desc.origin; // Needed to find target_object on X64.
5055 for (RelocIterator it(this, mode_mask); !it.done(); it.next()) { 5056 for (RelocIterator it(this, mode_mask); !it.done(); it.next()) {
5056 RelocInfo::Mode mode = it.rinfo()->rmode(); 5057 RelocInfo::Mode mode = it.rinfo()->rmode();
5057 if (mode == RelocInfo::EMBEDDED_OBJECT) { 5058 if (mode == RelocInfo::EMBEDDED_OBJECT) {
5058 Handle<Object> p = it.rinfo()->target_object_handle(origin); 5059 Handle<Object> p = it.rinfo()->target_object_handle(origin);
5059 it.rinfo()->set_target_object(*p); 5060 it.rinfo()->set_target_object(*p);
5060 } else if (RelocInfo::IsCodeTarget(mode)) { 5061 } else if (RelocInfo::IsCodeTarget(mode)) {
(...skipping 2919 matching lines...) Expand 10 before | Expand all | Expand 10 after
7980 if (break_point_objects()->IsUndefined()) return 0; 7981 if (break_point_objects()->IsUndefined()) return 0;
7981 // Single beak point. 7982 // Single beak point.
7982 if (!break_point_objects()->IsFixedArray()) return 1; 7983 if (!break_point_objects()->IsFixedArray()) return 1;
7983 // Multiple break points. 7984 // Multiple break points.
7984 return FixedArray::cast(break_point_objects())->length(); 7985 return FixedArray::cast(break_point_objects())->length();
7985 } 7986 }
7986 #endif 7987 #endif
7987 7988
7988 7989
7989 } } // namespace v8::internal 7990 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/mark-compact.cc ('k') | src/x64/assembler-x64-inl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698