Index: src/x64/macro-assembler-x64.cc |
diff --git a/src/x64/macro-assembler-x64.cc b/src/x64/macro-assembler-x64.cc |
index 5371afcdfef0a9a7893ca818215b62064cec29d1..36d3f064a0a26f1a37307c32dbba3e8a55d8314f 100644 |
--- a/src/x64/macro-assembler-x64.cc |
+++ b/src/x64/macro-assembler-x64.cc |
@@ -4033,6 +4033,18 @@ Condition MacroAssembler::IsObjectNameType(Register heap_object, |
return below_equal; |
} |
+void MacroAssembler::GetMapConstructor(Register result, Register map, |
+ Register temp) { |
+ Label done, loop; |
+ movp(result, FieldOperand(map, Map::kConstructorOrBackPointerOffset)); |
+ bind(&loop); |
+ JumpIfSmi(result, &done, Label::kNear); |
+ CmpObjectType(result, MAP_TYPE, temp); |
+ j(not_equal, &done, Label::kNear); |
+ movp(result, FieldOperand(result, Map::kConstructorOrBackPointerOffset)); |
+ jmp(&loop); |
+ bind(&done); |
+} |
void MacroAssembler::SetCounter(StatsCounter* counter, int value) { |
if (FLAG_native_code_counters && counter->Enabled()) { |