OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 // | 4 // |
5 // Review notes: | 5 // Review notes: |
6 // | 6 // |
7 // - The use of macros in these inline functions may seem superfluous | 7 // - The use of macros in these inline functions may seem superfluous |
8 // but it is absolutely needed to make sure gcc generates optimal | 8 // but it is absolutely needed to make sure gcc generates optimal |
9 // code. gcc is not happy when attempting to inline too deep. | 9 // code. gcc is not happy when attempting to inline too deep. |
10 // | 10 // |
(...skipping 6249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6260 DCHECK(code()->gc_metadata() == NULL && value->gc_metadata() == NULL); | 6260 DCHECK(code()->gc_metadata() == NULL && value->gc_metadata() == NULL); |
6261 #ifdef DEBUG | 6261 #ifdef DEBUG |
6262 Code::VerifyRecompiledCode(code(), value); | 6262 Code::VerifyRecompiledCode(code(), value); |
6263 #endif // DEBUG | 6263 #endif // DEBUG |
6264 | 6264 |
6265 set_code(value); | 6265 set_code(value); |
6266 | 6266 |
6267 if (is_compiled()) set_never_compiled(false); | 6267 if (is_compiled()) set_never_compiled(false); |
6268 } | 6268 } |
6269 | 6269 |
| 6270 bool SharedFunctionInfo::IsInterpreted() const { |
| 6271 return code()->is_interpreter_trampoline_builtin(); |
| 6272 } |
| 6273 |
6270 bool SharedFunctionInfo::HasBaselineCode() const { | 6274 bool SharedFunctionInfo::HasBaselineCode() const { |
6271 return code()->kind() == Code::FUNCTION; | 6275 return code()->kind() == Code::FUNCTION; |
6272 } | 6276 } |
6273 | 6277 |
6274 ScopeInfo* SharedFunctionInfo::scope_info() const { | 6278 ScopeInfo* SharedFunctionInfo::scope_info() const { |
6275 return reinterpret_cast<ScopeInfo*>(READ_FIELD(this, kScopeInfoOffset)); | 6279 return reinterpret_cast<ScopeInfo*>(READ_FIELD(this, kScopeInfoOffset)); |
6276 } | 6280 } |
6277 | 6281 |
6278 | 6282 |
6279 void SharedFunctionInfo::set_scope_info(ScopeInfo* value, | 6283 void SharedFunctionInfo::set_scope_info(ScopeInfo* value, |
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6501 | 6505 |
6502 bool SharedFunctionInfo::OptimizedCodeMapIsCleared() const { | 6506 bool SharedFunctionInfo::OptimizedCodeMapIsCleared() const { |
6503 return optimized_code_map() == GetHeap()->empty_fixed_array(); | 6507 return optimized_code_map() == GetHeap()->empty_fixed_array(); |
6504 } | 6508 } |
6505 | 6509 |
6506 | 6510 |
6507 bool JSFunction::IsOptimized() { | 6511 bool JSFunction::IsOptimized() { |
6508 return code()->kind() == Code::OPTIMIZED_FUNCTION; | 6512 return code()->kind() == Code::OPTIMIZED_FUNCTION; |
6509 } | 6513 } |
6510 | 6514 |
| 6515 bool JSFunction::IsInterpreted() { |
| 6516 return code()->is_interpreter_trampoline_builtin(); |
| 6517 } |
| 6518 |
6511 bool JSFunction::IsMarkedForBaseline() { | 6519 bool JSFunction::IsMarkedForBaseline() { |
6512 return code() == | 6520 return code() == |
6513 GetIsolate()->builtins()->builtin(Builtins::kCompileBaseline); | 6521 GetIsolate()->builtins()->builtin(Builtins::kCompileBaseline); |
6514 } | 6522 } |
6515 | 6523 |
6516 bool JSFunction::IsMarkedForOptimization() { | 6524 bool JSFunction::IsMarkedForOptimization() { |
6517 return code() == GetIsolate()->builtins()->builtin( | 6525 return code() == GetIsolate()->builtins()->builtin( |
6518 Builtins::kCompileOptimized); | 6526 Builtins::kCompileOptimized); |
6519 } | 6527 } |
6520 | 6528 |
(...skipping 25 matching lines...) Expand all Loading... |
6546 void Map::InobjectSlackTrackingStep() { | 6554 void Map::InobjectSlackTrackingStep() { |
6547 if (!IsInobjectSlackTrackingInProgress()) return; | 6555 if (!IsInobjectSlackTrackingInProgress()) return; |
6548 int counter = construction_counter(); | 6556 int counter = construction_counter(); |
6549 set_construction_counter(counter - 1); | 6557 set_construction_counter(counter - 1); |
6550 if (counter == kSlackTrackingCounterEnd) { | 6558 if (counter == kSlackTrackingCounterEnd) { |
6551 CompleteInobjectSlackTracking(); | 6559 CompleteInobjectSlackTracking(); |
6552 } | 6560 } |
6553 } | 6561 } |
6554 | 6562 |
6555 AbstractCode* JSFunction::abstract_code() { | 6563 AbstractCode* JSFunction::abstract_code() { |
6556 Code* code = this->code(); | 6564 if (IsInterpreted()) { |
6557 if (code->is_interpreter_trampoline_builtin()) { | |
6558 return AbstractCode::cast(shared()->bytecode_array()); | 6565 return AbstractCode::cast(shared()->bytecode_array()); |
6559 } else { | 6566 } else { |
6560 return AbstractCode::cast(code); | 6567 return AbstractCode::cast(code()); |
6561 } | 6568 } |
6562 } | 6569 } |
6563 | 6570 |
6564 Code* JSFunction::code() { | 6571 Code* JSFunction::code() { |
6565 return Code::cast( | 6572 return Code::cast( |
6566 Code::GetObjectFromEntryAddress(FIELD_ADDR(this, kCodeEntryOffset))); | 6573 Code::GetObjectFromEntryAddress(FIELD_ADDR(this, kCodeEntryOffset))); |
6567 } | 6574 } |
6568 | 6575 |
6569 | 6576 |
6570 void JSFunction::set_code(Code* value) { | 6577 void JSFunction::set_code(Code* value) { |
(...skipping 1860 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8431 #undef WRITE_INT64_FIELD | 8438 #undef WRITE_INT64_FIELD |
8432 #undef READ_BYTE_FIELD | 8439 #undef READ_BYTE_FIELD |
8433 #undef WRITE_BYTE_FIELD | 8440 #undef WRITE_BYTE_FIELD |
8434 #undef NOBARRIER_READ_BYTE_FIELD | 8441 #undef NOBARRIER_READ_BYTE_FIELD |
8435 #undef NOBARRIER_WRITE_BYTE_FIELD | 8442 #undef NOBARRIER_WRITE_BYTE_FIELD |
8436 | 8443 |
8437 } // namespace internal | 8444 } // namespace internal |
8438 } // namespace v8 | 8445 } // namespace v8 |
8439 | 8446 |
8440 #endif // V8_OBJECTS_INL_H_ | 8447 #endif // V8_OBJECTS_INL_H_ |
OLD | NEW |