| Index: src/objects-inl.h
|
| diff --git a/src/objects-inl.h b/src/objects-inl.h
|
| index 3c34be5119f65c385a07df0544f57f5856f0a58f..55d5e9cbca2456b1779450670bde8aca85099ec9 100644
|
| --- a/src/objects-inl.h
|
| +++ b/src/objects-inl.h
|
| @@ -3052,7 +3052,8 @@ int Code::major_key() {
|
| kind() == BINARY_OP_IC ||
|
| kind() == COMPARE_IC ||
|
| kind() == TO_BOOLEAN_IC);
|
| - return READ_BYTE_FIELD(this, kStubMajorKeyOffset);
|
| + return StubMajorKeyField::decode(
|
| + READ_UINT32_FIELD(this, kKindSpecificFlags2Offset));
|
| }
|
|
|
|
|
| @@ -3063,7 +3064,9 @@ void Code::set_major_key(int major) {
|
| kind() == COMPARE_IC ||
|
| kind() == TO_BOOLEAN_IC);
|
| ASSERT(0 <= major && major < 256);
|
| - WRITE_BYTE_FIELD(this, kStubMajorKeyOffset, major);
|
| + int previous = READ_UINT32_FIELD(this, kKindSpecificFlags2Offset);
|
| + int updated = StubMajorKeyField::update(previous, major);
|
| + WRITE_UINT32_FIELD(this, kKindSpecificFlags2Offset, updated);
|
| }
|
|
|
|
|
| @@ -3165,39 +3168,50 @@ void Code::set_profiler_ticks(int ticks) {
|
|
|
| unsigned Code::stack_slots() {
|
| ASSERT(kind() == OPTIMIZED_FUNCTION);
|
| - return READ_UINT32_FIELD(this, kStackSlotsOffset);
|
| + return StackSlotsField::decode(
|
| + READ_UINT32_FIELD(this, kKindSpecificFlags1Offset));
|
| }
|
|
|
|
|
| void Code::set_stack_slots(unsigned slots) {
|
| + CHECK(slots <= (1 << kStackSlotsBitCount));
|
| ASSERT(kind() == OPTIMIZED_FUNCTION);
|
| - WRITE_UINT32_FIELD(this, kStackSlotsOffset, slots);
|
| + int previous = READ_UINT32_FIELD(this, kKindSpecificFlags1Offset);
|
| + int updated = StackSlotsField::update(previous, slots);
|
| + WRITE_UINT32_FIELD(this, kKindSpecificFlags1Offset, updated);
|
| }
|
|
|
|
|
| unsigned Code::safepoint_table_offset() {
|
| ASSERT(kind() == OPTIMIZED_FUNCTION);
|
| - return READ_UINT32_FIELD(this, kSafepointTableOffsetOffset);
|
| + return SafepointTableOffsetField::decode(
|
| + READ_UINT32_FIELD(this, kKindSpecificFlags2Offset));
|
| }
|
|
|
|
|
| void Code::set_safepoint_table_offset(unsigned offset) {
|
| + CHECK(offset <= (1 << kSafepointTableOffsetBitCount));
|
| ASSERT(kind() == OPTIMIZED_FUNCTION);
|
| ASSERT(IsAligned(offset, static_cast<unsigned>(kIntSize)));
|
| - WRITE_UINT32_FIELD(this, kSafepointTableOffsetOffset, offset);
|
| + int previous = READ_UINT32_FIELD(this, kKindSpecificFlags2Offset);
|
| + int updated = SafepointTableOffsetField::update(previous, offset);
|
| + WRITE_UINT32_FIELD(this, kKindSpecificFlags2Offset, updated);
|
| }
|
|
|
|
|
| unsigned Code::stack_check_table_offset() {
|
| ASSERT_EQ(FUNCTION, kind());
|
| - return READ_UINT32_FIELD(this, kStackCheckTableOffsetOffset);
|
| + return StackCheckTableOffsetField::decode(
|
| + READ_UINT32_FIELD(this, kKindSpecificFlags2Offset));
|
| }
|
|
|
|
|
| void Code::set_stack_check_table_offset(unsigned offset) {
|
| ASSERT_EQ(FUNCTION, kind());
|
| ASSERT(IsAligned(offset, static_cast<unsigned>(kIntSize)));
|
| - WRITE_UINT32_FIELD(this, kStackCheckTableOffsetOffset, offset);
|
| + int previous = READ_UINT32_FIELD(this, kKindSpecificFlags2Offset);
|
| + int updated = StackCheckTableOffsetField::update(previous, offset);
|
| + WRITE_UINT32_FIELD(this, kKindSpecificFlags2Offset, updated);
|
| }
|
|
|
|
|
| @@ -3216,85 +3230,106 @@ void Code::set_check_type(CheckType value) {
|
|
|
| byte Code::unary_op_type() {
|
| ASSERT(is_unary_op_stub());
|
| - return READ_BYTE_FIELD(this, kUnaryOpTypeOffset);
|
| + return UnaryOpTypeField::decode(
|
| + READ_UINT32_FIELD(this, kKindSpecificFlags1Offset));
|
| }
|
|
|
|
|
| void Code::set_unary_op_type(byte value) {
|
| ASSERT(is_unary_op_stub());
|
| - WRITE_BYTE_FIELD(this, kUnaryOpTypeOffset, value);
|
| + int previous = READ_UINT32_FIELD(this, kKindSpecificFlags1Offset);
|
| + int updated = UnaryOpTypeField::update(previous, value);
|
| + WRITE_UINT32_FIELD(this, kKindSpecificFlags1Offset, updated);
|
| }
|
|
|
|
|
| byte Code::binary_op_type() {
|
| ASSERT(is_binary_op_stub());
|
| - return READ_BYTE_FIELD(this, kBinaryOpTypeOffset);
|
| + return BinaryOpTypeField::decode(
|
| + READ_UINT32_FIELD(this, kKindSpecificFlags1Offset));
|
| }
|
|
|
|
|
| void Code::set_binary_op_type(byte value) {
|
| ASSERT(is_binary_op_stub());
|
| - WRITE_BYTE_FIELD(this, kBinaryOpTypeOffset, value);
|
| + int previous = READ_UINT32_FIELD(this, kKindSpecificFlags1Offset);
|
| + int updated = BinaryOpTypeField::update(previous, value);
|
| + WRITE_UINT32_FIELD(this, kKindSpecificFlags1Offset, updated);
|
| }
|
|
|
|
|
| byte Code::binary_op_result_type() {
|
| ASSERT(is_binary_op_stub());
|
| - return READ_BYTE_FIELD(this, kBinaryOpReturnTypeOffset);
|
| + return BinaryOpResultTypeField::decode(
|
| + READ_UINT32_FIELD(this, kKindSpecificFlags1Offset));
|
| }
|
|
|
|
|
| void Code::set_binary_op_result_type(byte value) {
|
| ASSERT(is_binary_op_stub());
|
| - WRITE_BYTE_FIELD(this, kBinaryOpReturnTypeOffset, value);
|
| + int previous = READ_UINT32_FIELD(this, kKindSpecificFlags1Offset);
|
| + int updated = BinaryOpResultTypeField::update(previous, value);
|
| + WRITE_UINT32_FIELD(this, kKindSpecificFlags1Offset, updated);
|
| }
|
|
|
|
|
| byte Code::compare_state() {
|
| ASSERT(is_compare_ic_stub());
|
| - return READ_BYTE_FIELD(this, kCompareStateOffset);
|
| + return CompareStateField::decode(
|
| + READ_UINT32_FIELD(this, kKindSpecificFlags1Offset));
|
| }
|
|
|
|
|
| void Code::set_compare_state(byte value) {
|
| ASSERT(is_compare_ic_stub());
|
| - WRITE_BYTE_FIELD(this, kCompareStateOffset, value);
|
| + int previous = READ_UINT32_FIELD(this, kKindSpecificFlags1Offset);
|
| + int updated = CompareStateField::update(previous, value);
|
| + WRITE_UINT32_FIELD(this, kKindSpecificFlags1Offset, updated);
|
| }
|
|
|
|
|
| byte Code::compare_operation() {
|
| ASSERT(is_compare_ic_stub());
|
| - return READ_BYTE_FIELD(this, kCompareOperationOffset);
|
| + return CompareOperationField::decode(
|
| + READ_UINT32_FIELD(this, kKindSpecificFlags1Offset));
|
| }
|
|
|
|
|
| void Code::set_compare_operation(byte value) {
|
| ASSERT(is_compare_ic_stub());
|
| - WRITE_BYTE_FIELD(this, kCompareOperationOffset, value);
|
| + int previous = READ_UINT32_FIELD(this, kKindSpecificFlags1Offset);
|
| + int updated = CompareOperationField::update(previous, value);
|
| + WRITE_UINT32_FIELD(this, kKindSpecificFlags1Offset, updated);
|
| }
|
|
|
|
|
| byte Code::to_boolean_state() {
|
| ASSERT(is_to_boolean_ic_stub());
|
| - return READ_BYTE_FIELD(this, kToBooleanTypeOffset);
|
| + return ToBooleanStateField::decode(
|
| + READ_UINT32_FIELD(this, kKindSpecificFlags1Offset));
|
| }
|
|
|
|
|
| void Code::set_to_boolean_state(byte value) {
|
| ASSERT(is_to_boolean_ic_stub());
|
| - WRITE_BYTE_FIELD(this, kToBooleanTypeOffset, value);
|
| + int previous = READ_UINT32_FIELD(this, kKindSpecificFlags1Offset);
|
| + int updated = ToBooleanStateField::update(previous, value);
|
| + WRITE_UINT32_FIELD(this, kKindSpecificFlags1Offset, updated);
|
| }
|
|
|
|
|
| bool Code::has_function_cache() {
|
| ASSERT(kind() == STUB);
|
| - return READ_BYTE_FIELD(this, kHasFunctionCacheOffset) != 0;
|
| + return HasFunctionCacheField::decode(
|
| + READ_UINT32_FIELD(this, kKindSpecificFlags1Offset));
|
| }
|
|
|
|
|
| void Code::set_has_function_cache(bool flag) {
|
| ASSERT(kind() == STUB);
|
| - WRITE_BYTE_FIELD(this, kHasFunctionCacheOffset, flag);
|
| + int previous = READ_UINT32_FIELD(this, kKindSpecificFlags1Offset);
|
| + int updated = HasFunctionCacheField::update(previous, flag);
|
| + WRITE_UINT32_FIELD(this, kKindSpecificFlags1Offset, updated);
|
| }
|
|
|
|
|
|
|