| Index: src/objects-inl.h
|
| diff --git a/src/objects-inl.h b/src/objects-inl.h
|
| index d678a1209cf76e80302671b18d29e3d5c7921a96..dd80e8cd9d962dd98c2ecf39f7801eadabbb1509 100644
|
| --- a/src/objects-inl.h
|
| +++ b/src/objects-inl.h
|
| @@ -3371,6 +3371,47 @@ bool Map::is_observed() {
|
| }
|
|
|
|
|
| +void Map::AddDependentCode(Handle<Code> code) {
|
| + Handle<FixedArray> codes =
|
| + DependentCodes::Append(Handle<FixedArray>(dependent_codes()), code);
|
| + if (*codes != dependent_codes()) {
|
| + set_dependent_codes(*codes);
|
| + }
|
| +}
|
| +
|
| +
|
| +int DependentCodes::number_of_codes(FixedArray* codes) {
|
| + if (codes->length() == 0) return 0;
|
| + return Smi::cast(codes->get(kNumberOfCodesOffset))->value();
|
| +}
|
| +
|
| +
|
| +void DependentCodes::set_number_of_codes(FixedArray* codes, int value) {
|
| + codes->set(kNumberOfCodesOffset, Smi::FromInt(value));
|
| +}
|
| +
|
| +
|
| +Code* DependentCodes::code(FixedArray* codes, int i) {
|
| + return Code::cast(codes->get(kCodesOffset + i));
|
| +}
|
| +
|
| +
|
| +void DependentCodes::set_code(FixedArray* codes, int i, Code* value) {
|
| + codes->set(kCodesOffset + i, value);
|
| +}
|
| +
|
| +
|
| +Object** DependentCodes::code_slot(FixedArray* codes, int i) {
|
| + return HeapObject::RawField(
|
| + codes, FixedArray::OffsetOfElementAt(kCodesOffset + i));
|
| +}
|
| +
|
| +
|
| +void DependentCodes::clear_code(FixedArray* codes, int i) {
|
| + codes->set(kCodesOffset + i, Smi::FromInt(0), SKIP_WRITE_BARRIER);
|
| +}
|
| +
|
| +
|
| void Code::set_flags(Code::Flags flags) {
|
| STATIC_ASSERT(Code::NUMBER_OF_KINDS <= KindField::kMax + 1);
|
| // Make sure that all call stubs have an arguments count.
|
| @@ -3643,6 +3684,21 @@ void Code::set_has_function_cache(bool flag) {
|
| }
|
|
|
|
|
| +bool Code::marked_for_deoptimization() {
|
| + ASSERT(kind() == OPTIMIZED_FUNCTION);
|
| + return MarkedForDeoptimizationField::decode(
|
| + READ_UINT32_FIELD(this, kKindSpecificFlags1Offset));
|
| +}
|
| +
|
| +
|
| +void Code::set_marked_for_deoptimization(bool flag) {
|
| + ASSERT(kind() == OPTIMIZED_FUNCTION);
|
| + int previous = READ_UINT32_FIELD(this, kKindSpecificFlags1Offset);
|
| + int updated = MarkedForDeoptimizationField::update(previous, flag);
|
| + WRITE_UINT32_FIELD(this, kKindSpecificFlags1Offset, updated);
|
| +}
|
| +
|
| +
|
| bool Code::is_inline_cache_stub() {
|
| Kind kind = this->kind();
|
| return kind >= FIRST_IC_KIND && kind <= LAST_IC_KIND;
|
| @@ -3966,6 +4022,7 @@ HeapObject* Map::UncheckedPrototypeTransitions() {
|
|
|
|
|
| ACCESSORS(Map, code_cache, Object, kCodeCacheOffset)
|
| +ACCESSORS(Map, dependent_codes, FixedArray, kDependentCodesOffset)
|
| ACCESSORS(Map, constructor, Object, kConstructorOffset)
|
|
|
| ACCESSORS(JSFunction, shared, SharedFunctionInfo, kSharedFunctionInfoOffset)
|
|
|