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

Unified Diff: src/arm/macro-assembler-arm.h

Issue 9315032: ARM: Use ubfx and movw instructions to avoid a PC-relative load on Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 8 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/arm/lithium-codegen-arm.cc ('k') | src/arm/macro-assembler-arm.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/arm/macro-assembler-arm.h
===================================================================
--- src/arm/macro-assembler-arm.h (revision 10578)
+++ src/arm/macro-assembler-arm.h (working copy)
@@ -806,8 +806,11 @@
// Compare an object's map with the specified map and its transitioned
// elements maps if mode is ALLOW_ELEMENT_TRANSITION_MAPS. Condition flags are
// set with result of map compare. If multiple map compares are required, the
- // compare sequences branches to early_success.
+ // compare sequences branches to early_success. The map_register and the
+ // scratch register can be the same register, but in that case the map will
+ // not be available afterwards in the map_register.
void CompareMap(Register obj,
+ Register map_register,
Register scratch,
Handle<Map> map,
Label* early_success,
@@ -818,6 +821,7 @@
// heap object). If mode is ALLOW_ELEMENT_TRANSITION_MAPS, then also match
// against maps that are ElementsKind transition maps of the specified map.
void CheckMap(Register obj,
+ Register map_register,
Register scratch,
Handle<Map> map,
Label* fail,
@@ -847,6 +851,12 @@
void CompareRoot(Register obj, Heap::RootListIndex index);
+ // As CompareRoot, above, but only works for roots that are maps. May be more
+ // efficient.
+ void CompareMapRoot(
+ Register obj, Register scratch, 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.
@@ -1286,6 +1296,18 @@
Register bitmap_reg,
Register mask_reg);
+ bool CanDoEfficientMapComparison(Map* map);
+
+ void EfficientMapComparisonPrepare(Register obj, Register scratch);
+ void EfficientMapComparison(Register prepared_map, Map* map);
+
+ void CompareMaps(Register possible_map,
+ Register scratch,
+ Map* map1, // May not be NULL.
+ Map* map2, // May be NULL.
+ Map* map3, // May be NULL.
+ Label* early_success);
+
// Helper for throwing exceptions. Compute a handler address and jump to
// it. See the implementation for register usage.
void JumpToHandlerEntry();
« no previous file with comments | « src/arm/lithium-codegen-arm.cc ('k') | src/arm/macro-assembler-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698