Reapply descriptor array sharing.
This reverts commit 12669
Review URL: https://chromiumcodereview.appspot.com/11093026
git-svn-id: http://v8.googlecode.com/svn/trunk@12683 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
diff --git a/src/x64/macro-assembler-x64.h b/src/x64/macro-assembler-x64.h
index 5268fe2..89b7962 100644
--- a/src/x64/macro-assembler-x64.h
+++ b/src/x64/macro-assembler-x64.h
@@ -949,13 +949,15 @@
void LoadInstanceDescriptors(Register map, Register descriptors);
void EnumLength(Register dst, Register map);
+ void NumberOfOwnDescriptors(Register dst, Register map);
template<typename Field>
void DecodeField(Register reg) {
- static const int full_shift = Field::kShift + kSmiShift;
- static const int low_mask = Field::kMask >> Field::kShift;
- shr(reg, Immediate(full_shift));
- and_(reg, Immediate(low_mask));
+ static const int shift = Field::kShift + kSmiShift;
+ static const int mask = Field::kMask >> Field::kShift;
+ shr(reg, Immediate(shift));
+ and_(reg, Immediate(mask));
+ shl(reg, Immediate(kSmiShift));
}
// Abort execution if argument is not a number. Used in debug code.