Index: src/mips/macro-assembler-mips.h |
diff --git a/src/mips/macro-assembler-mips.h b/src/mips/macro-assembler-mips.h |
index 94e95470094971f9ccf118830aaaf2cf39edab28..6d07d2cf8258b7c6134541dcc2b2929a44792e8e 100644 |
--- a/src/mips/macro-assembler-mips.h |
+++ b/src/mips/macro-assembler-mips.h |
@@ -1,4 +1,4 @@ |
-// Copyright 2011 the V8 project authors. All rights reserved. |
+// Copyright 2012 the V8 project authors. All rights reserved. |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
@@ -940,15 +940,29 @@ class MacroAssembler: public Assembler { |
Register scratch4, |
Label* fail); |
- // Check if the map of an object is equal to a specified map (either |
- // given directly or as an index into the root list) and branch to |
- // label if not. Skip the smi check if not required (object is known |
- // to be a heap object). |
+ // Compare an object's map with the specified map and its transitioned |
+ // elements maps if mode is ALLOW_ELEMENT_TRANSITION_MAPS. Jumps to |
+ // "branch_to" if the result of the comparison is "cond". If multiple map |
+ // compares are required, the compare sequences branches to early_success. |
+ void CompareMapAndBranch(Register obj, |
+ Register scratch, |
+ Handle<Map> map, |
+ Label* early_success, |
+ Condition cond, |
+ Label* branch_to, |
+ CompareMapMode mode = REQUIRE_EXACT_MAP); |
+ |
+ // Check if the map of an object is equal to a specified map and branch to |
+ // label if not. Skip the smi check if not required (object is known to be a |
+ // heap object). If mode is ALLOW_ELEMENT_TRANSITION_MAPS, then also match |
+ // against maps that are ElementsKind transition maps of the specificed map. |
void CheckMap(Register obj, |
Register scratch, |
Handle<Map> map, |
Label* fail, |
- SmiCheckType smi_check_type); |
+ SmiCheckType smi_check_type, |
+ CompareMapMode mode = REQUIRE_EXACT_MAP); |
+ |
void CheckMap(Register obj, |
Register scratch, |