summaryrefslogtreecommitdiff
path: root/chromium/v8/src/frames.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/v8/src/frames.cc')
-rw-r--r--chromium/v8/src/frames.cc109
1 files changed, 21 insertions, 88 deletions
diff --git a/chromium/v8/src/frames.cc b/chromium/v8/src/frames.cc
index 37f5b4d9cf1..f33dba8ba29 100644
--- a/chromium/v8/src/frames.cc
+++ b/chromium/v8/src/frames.cc
@@ -16,8 +16,7 @@
#include "src/string-stream.h"
#include "src/visitors.h"
#include "src/vm-state-inl.h"
-#include "src/wasm/wasm-module.h"
-#include "src/wasm/wasm-objects.h"
+#include "src/wasm/wasm-objects-inl.h"
namespace v8 {
namespace internal {
@@ -137,25 +136,6 @@ void JavaScriptFrameIterator::Advance() {
} while (!iterator_.done() && !iterator_.frame()->is_java_script());
}
-void JavaScriptFrameIterator::AdvanceToArgumentsFrame() {
- if (!frame()->has_adapted_arguments()) return;
- iterator_.Advance();
- DCHECK(iterator_.frame()->is_arguments_adaptor());
-}
-
-void JavaScriptFrameIterator::AdvanceWhileDebugContext(Debug* debug) {
- if (!debug->in_debug_scope()) return;
-
- while (!done()) {
- Context* context = Context::cast(frame()->context());
- if (context->native_context() == *debug->debug_context()) {
- Advance();
- } else {
- break;
- }
- }
-}
-
// -------------------------------------------------------------------------
StackTraceFrameIterator::StackTraceFrameIterator(Isolate* isolate)
@@ -185,12 +165,6 @@ bool StackTraceFrameIterator::IsValidFrame(StackFrame* frame) const {
return frame->is_wasm();
}
-void StackTraceFrameIterator::AdvanceToArgumentsFrame() {
- if (!is_javascript() || !javascript_frame()->has_adapted_arguments()) return;
- iterator_.Advance();
- DCHECK(iterator_.frame()->is_arguments_adaptor());
-}
-
// -------------------------------------------------------------------------
namespace {
@@ -266,9 +240,9 @@ SafeStackFrameIterator::SafeStackFrameIterator(
advance_frame = true;
}
} else {
- // Mark the frame as JAVA_SCRIPT if we cannot determine its type.
+ // Mark the frame as OPTIMIZED if we cannot determine its type.
// The frame anyways will be skipped.
- type = StackFrame::JAVA_SCRIPT;
+ type = StackFrame::OPTIMIZED;
// Top frame is incomplete so we cannot reliably determine its type.
top_frame_type_ = StackFrame::NONE;
}
@@ -455,7 +429,7 @@ StackFrame::Type StackFrame::ComputeType(const StackFrameIteratorBase* iterator,
*(state->pc_address))) {
return INTERPRETED;
} else {
- return JAVA_SCRIPT;
+ return OPTIMIZED;
}
}
} else {
@@ -477,8 +451,6 @@ StackFrame::Type StackFrame::ComputeType(const StackFrameIteratorBase* iterator,
return OPTIMIZED;
}
return BUILTIN;
- case Code::FUNCTION:
- return JAVA_SCRIPT;
case Code::OPTIMIZED_FUNCTION:
return OPTIMIZED;
case Code::WASM_FUNCTION:
@@ -517,7 +489,6 @@ StackFrame::Type StackFrame::ComputeType(const StackFrameIteratorBase* iterator,
case WASM_COMPILED:
return candidate;
case JS_TO_WASM:
- case JAVA_SCRIPT:
case OPTIMIZED:
case INTERPRETED:
default:
@@ -768,8 +739,7 @@ void StandardFrame::ComputeCallerState(State* state) const {
bool StandardFrame::IsConstructor() const { return false; }
-void StandardFrame::Summarize(std::vector<FrameSummary>* functions,
- FrameSummary::Mode mode) const {
+void StandardFrame::Summarize(std::vector<FrameSummary>* functions) const {
// This should only be called on frames which override this method.
UNREACHABLE();
}
@@ -820,7 +790,6 @@ void StandardFrame::IterateCompiledFrame(RootVisitor* v) const {
case C_WASM_ENTRY:
frame_header_size = TypedFrameConstants::kFixedFrameSizeFromFp;
break;
- case JAVA_SCRIPT:
case OPTIMIZED:
case INTERPRETED:
case BUILTIN:
@@ -993,15 +962,14 @@ void JavaScriptFrame::GetFunctions(
}
}
-void JavaScriptFrame::Summarize(std::vector<FrameSummary>* functions,
- FrameSummary::Mode mode) const {
+void JavaScriptFrame::Summarize(std::vector<FrameSummary>* functions) const {
DCHECK(functions->empty());
Code* code = LookupCode();
int offset = static_cast<int>(pc() - code->instruction_start());
AbstractCode* abstract_code = AbstractCode::cast(code);
FrameSummary::JavaScriptFrameSummary summary(isolate(), receiver(),
function(), abstract_code,
- offset, IsConstructor(), mode);
+ offset, IsConstructor());
functions->push_back(summary);
}
@@ -1166,9 +1134,8 @@ bool IsNonDeoptimizingAsmCode(Code* code, JSFunction* function) {
FrameSummary::JavaScriptFrameSummary::JavaScriptFrameSummary(
Isolate* isolate, Object* receiver, JSFunction* function,
- AbstractCode* abstract_code, int code_offset, bool is_constructor,
- Mode mode)
- : FrameSummaryBase(isolate, JAVA_SCRIPT),
+ AbstractCode* abstract_code, int code_offset, bool is_constructor)
+ : FrameSummaryBase(isolate, FrameSummary::JAVA_SCRIPT),
receiver_(receiver, isolate),
function_(function, isolate),
abstract_code_(abstract_code, isolate),
@@ -1176,8 +1143,7 @@ FrameSummary::JavaScriptFrameSummary::JavaScriptFrameSummary(
is_constructor_(is_constructor) {
DCHECK(abstract_code->IsBytecodeArray() ||
Code::cast(abstract_code)->kind() != Code::OPTIMIZED_FUNCTION ||
- IsNonDeoptimizingAsmCode(Code::cast(abstract_code), function) ||
- mode == kApproximateSummary);
+ IsNonDeoptimizingAsmCode(Code::cast(abstract_code), function));
}
bool FrameSummary::JavaScriptFrameSummary::is_subject_to_debugging() const {
@@ -1230,16 +1196,11 @@ WASM_SUMMARY_DISPATCH(int, byte_offset)
#undef WASM_SUMMARY_DISPATCH
int FrameSummary::WasmFrameSummary::SourcePosition() const {
- int offset = byte_offset();
Handle<WasmCompiledModule> compiled_module(wasm_instance()->compiled_module(),
isolate());
- if (compiled_module->is_asm_js()) {
- offset = WasmCompiledModule::GetAsmJsSourcePosition(
- compiled_module, function_index(), offset, at_to_number_conversion());
- } else {
- offset += compiled_module->GetFunctionOffset(function_index());
- }
- return offset;
+ return WasmCompiledModule::GetSourcePosition(compiled_module,
+ function_index(), byte_offset(),
+ at_to_number_conversion());
}
Handle<Script> FrameSummary::WasmFrameSummary::script() const {
@@ -1353,8 +1314,7 @@ FRAME_SUMMARY_DISPATCH(Handle<Context>, native_context)
#undef FRAME_SUMMARY_DISPATCH
-void OptimizedFrame::Summarize(std::vector<FrameSummary>* frames,
- FrameSummary::Mode mode) const {
+void OptimizedFrame::Summarize(std::vector<FrameSummary>* frames) const {
DCHECK(frames->empty());
DCHECK(is_optimized());
@@ -1370,9 +1330,6 @@ void OptimizedFrame::Summarize(std::vector<FrameSummary>* frames,
DeoptimizationInputData* const data = GetDeoptimizationData(&deopt_index);
if (deopt_index == Safepoint::kNoDeoptimizationIndex) {
CHECK_NULL(data);
- if (mode == FrameSummary::kApproximateSummary) {
- return JavaScriptFrame::Summarize(frames, mode);
- }
FATAL("Missing deoptimization information for OptimizedFrame::Summarize.");
}
@@ -1631,8 +1588,7 @@ void InterpretedFrame::WriteInterpreterRegister(int register_index,
return SetExpression(index + register_index, value);
}
-void InterpretedFrame::Summarize(std::vector<FrameSummary>* functions,
- FrameSummary::Mode mode) const {
+void InterpretedFrame::Summarize(std::vector<FrameSummary>* functions) const {
DCHECK(functions->empty());
AbstractCode* abstract_code =
AbstractCode::cast(function()->shared()->bytecode_array());
@@ -1712,7 +1668,7 @@ Address WasmCompiledFrame::GetCallerStackPointer() const {
}
WasmInstanceObject* WasmCompiledFrame::wasm_instance() const {
- WasmInstanceObject* obj = wasm::GetOwningWasmInstance(LookupCode());
+ WasmInstanceObject* obj = WasmInstanceObject::GetOwningInstance(LookupCode());
// This is a live stack frame; it must have a live instance.
DCHECK_NOT_NULL(obj);
return obj;
@@ -1730,8 +1686,7 @@ int WasmCompiledFrame::position() const {
return FrameSummary::GetSingle(this).SourcePosition();
}
-void WasmCompiledFrame::Summarize(std::vector<FrameSummary>* functions,
- FrameSummary::Mode mode) const {
+void WasmCompiledFrame::Summarize(std::vector<FrameSummary>* functions) const {
DCHECK(functions->empty());
Handle<Code> code(LookupCode(), isolate());
int offset = static_cast<int>(pc() - code->instruction_start());
@@ -1777,8 +1732,8 @@ void WasmInterpreterEntryFrame::Print(StringStream* accumulator, PrintMode mode,
if (mode != OVERVIEW) accumulator->Add("\n");
}
-void WasmInterpreterEntryFrame::Summarize(std::vector<FrameSummary>* functions,
- FrameSummary::Mode mode) const {
+void WasmInterpreterEntryFrame::Summarize(
+ std::vector<FrameSummary>* functions) const {
Handle<WasmInstanceObject> instance(wasm_instance(), isolate());
std::vector<std::pair<uint32_t, int>> interpreted_stack =
instance->debug_info()->GetInterpretedStack(fp());
@@ -1795,7 +1750,7 @@ Code* WasmInterpreterEntryFrame::unchecked_code() const {
}
WasmInstanceObject* WasmInterpreterEntryFrame::wasm_instance() const {
- WasmInstanceObject* ret = wasm::GetOwningWasmInstance(LookupCode());
+ WasmInstanceObject* ret = WasmInstanceObject::GetOwningInstance(LookupCode());
// This is a live stack frame, there must be a live wasm instance available.
DCHECK_NOT_NULL(ret);
return ret;
@@ -1862,13 +1817,7 @@ void JavaScriptFrame::Print(StringStream* accumulator,
accumulator->PrintName(script->name());
Address pc = this->pc();
- if (code != NULL && code->kind() == Code::FUNCTION &&
- pc >= code->instruction_start() && pc < code->instruction_end()) {
- int offset = static_cast<int>(pc - code->instruction_start());
- int source_pos = AbstractCode::cast(code)->SourcePosition(offset);
- int line = script->GetLineNumber(source_pos) + 1;
- accumulator->Add(":%d] [pc=%p]", line, pc);
- } else if (is_interpreted()) {
+ if (is_interpreted()) {
const InterpretedFrame* iframe =
reinterpret_cast<const InterpretedFrame*>(this);
BytecodeArray* bytecodes = iframe->GetBytecodeArray();
@@ -2037,24 +1986,8 @@ void InternalFrame::Iterate(RootVisitor* v) const {
if (code->has_tagged_params()) IterateExpressions(v);
}
-
// -------------------------------------------------------------------------
-
-JavaScriptFrame* StackFrameLocator::FindJavaScriptFrame(int n) {
- DCHECK(n >= 0);
- for (int i = 0; i <= n; i++) {
- while (!iterator_.frame()->is_java_script()) iterator_.Advance();
- if (i == n) return JavaScriptFrame::cast(iterator_.frame());
- iterator_.Advance();
- }
- UNREACHABLE();
-}
-
-
-// -------------------------------------------------------------------------
-
-
static Map* GcSafeMapOfCodeSpaceObject(HeapObject* object) {
MapWord map_word = object->map_word();
return map_word.IsForwardingAddress() ?