| Index: src/objects-inl.h
|
| diff --git a/src/objects-inl.h b/src/objects-inl.h
|
| index 1cd0c7cdb43f990fed5740369a16c75f90485307..cd2b818bb991dcaa2937e6539bc403ab50ead537 100644
|
| --- a/src/objects-inl.h
|
| +++ b/src/objects-inl.h
|
| @@ -5129,7 +5129,7 @@ class Code::FindAndReplacePattern {
|
| friend class Code;
|
| };
|
|
|
| -int AbstractCode::Size() {
|
| +int AbstractCode::instruction_size() {
|
| if (IsCode()) {
|
| return GetCode()->instruction_size();
|
| } else {
|
| @@ -5137,6 +5137,45 @@ int AbstractCode::Size() {
|
| }
|
| }
|
|
|
| +int AbstractCode::ExecutableSize() {
|
| + if (IsCode()) {
|
| + return GetCode()->ExecutableSize();
|
| + } else {
|
| + return GetBytecodeArray()->BytecodeArraySize();
|
| + }
|
| +}
|
| +
|
| +Address AbstractCode::instruction_start() {
|
| + if (IsCode()) {
|
| + return GetCode()->instruction_start();
|
| + } else {
|
| + return GetBytecodeArray()->GetFirstBytecodeAddress();
|
| + }
|
| +}
|
| +
|
| +Address AbstractCode::instruction_end() {
|
| + if (IsCode()) {
|
| + return GetCode()->instruction_end();
|
| + } else {
|
| + return GetBytecodeArray()->GetFirstBytecodeAddress() +
|
| + GetBytecodeArray()->length();
|
| + }
|
| +}
|
| +
|
| +bool AbstractCode::contains(byte* inner_pointer) {
|
| + return (address() <= inner_pointer) && (inner_pointer <= address() + Size());
|
| +}
|
| +
|
| +AbstractCode::Kind AbstractCode::kind() {
|
| + if (IsCode()) {
|
| + STATIC_ASSERT(AbstractCode::FUNCTION ==
|
| + static_cast<AbstractCode::Kind>(Code::FUNCTION));
|
| + return static_cast<AbstractCode::Kind>(GetCode()->kind());
|
| + } else {
|
| + return INTERPRETED_FUNCTION;
|
| + }
|
| +}
|
| +
|
| Code* AbstractCode::GetCode() { return Code::cast(this); }
|
|
|
| BytecodeArray* AbstractCode::GetBytecodeArray() {
|
| @@ -5628,6 +5667,13 @@ BOOL_GETTER(SharedFunctionInfo,
|
| optimization_disabled,
|
| kOptimizationDisabled)
|
|
|
| +AbstractCode* SharedFunctionInfo::abstract_code() {
|
| + if (HasBytecodeArray()) {
|
| + return AbstractCode::cast(bytecode_array());
|
| + } else {
|
| + return AbstractCode::cast(code());
|
| + }
|
| +}
|
|
|
| void SharedFunctionInfo::set_optimization_disabled(bool disable) {
|
| set_compiler_hints(BooleanBit::set(compiler_hints(),
|
| @@ -6002,6 +6048,14 @@ void Map::InobjectSlackTrackingStep() {
|
| }
|
| }
|
|
|
| +AbstractCode* JSFunction::abstract_code() {
|
| + Code* code = this->code();
|
| + if (code->is_interpreter_entry_trampoline()) {
|
| + return AbstractCode::cast(shared()->bytecode_array());
|
| + } else {
|
| + return AbstractCode::cast(code);
|
| + }
|
| +}
|
|
|
| Code* JSFunction::code() {
|
| return Code::cast(
|
|
|