From 5a40de9b21a123008bd538008ab4a6bfd2d7f4e3 Mon Sep 17 00:00:00 2001 From: "whesse@chromium.org" Date: Thu, 3 Mar 2011 12:21:37 +0000 Subject: [PATCH] Add new ARM macro assembler function CompareRoot left out of previous commit. Review URL: http://codereview.chromium.org/6614015 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7042 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/arm/macro-assembler-arm.cc | 12 +++++++++--- src/arm/macro-assembler-arm.h | 5 +++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/arm/macro-assembler-arm.cc b/src/arm/macro-assembler-arm.cc index 89af202..d431f6a 100644 --- a/src/arm/macro-assembler-arm.cc +++ b/src/arm/macro-assembler-arm.cc @@ -1537,6 +1537,14 @@ void MacroAssembler::CompareInstanceType(Register map, } +void MacroAssembler::CompareRoot(Register obj, + Heap::RootListIndex index) { + ASSERT(!obj.is(ip)); + LoadRoot(ip, index); + cmp(obj, ip); +} + + void MacroAssembler::CheckMap(Register obj, Register scratch, Handle map, @@ -2342,9 +2350,7 @@ void MacroAssembler::AbortIfNotString(Register object) { void MacroAssembler::AbortIfNotRootValue(Register src, Heap::RootListIndex root_value_index, const char* message) { - ASSERT(!src.is(ip)); - LoadRoot(ip, root_value_index); - cmp(src, ip); + CompareRoot(src, root_value_index); Assert(eq, message); } diff --git a/src/arm/macro-assembler-arm.h b/src/arm/macro-assembler-arm.h index acd1d79..aaf4458 100644 --- a/src/arm/macro-assembler-arm.h +++ b/src/arm/macro-assembler-arm.h @@ -577,6 +577,11 @@ class MacroAssembler: public Assembler { bool is_heap_object); + // Compare the object in a register to a value from the root list. + // Uses the ip register as scratch. + void CompareRoot(Register obj, Heap::RootListIndex index); + + // Load and check the instance type of an object for being a string. // Loads the type into the second argument register. // Returns a condition that will be enabled if the object was a string. -- 2.7.4