# Copyright 2014 the V8 project authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Print HeapObjects.
define job
print ((v8::internal::HeapObject*)($arg0))->Print()
end
document job
Print a v8 JavaScript object
Usage: job tagged_ptr
end

# Print Code objects containing given PC.
define jco
job (v8::internal::Isolate::Current()->FindCodeObject((v8::internal::Address)$arg0))
end
document jco
Print a v8 Code object from an internal code address
Usage: jco pc
end

# Print JavaScript stack trace.
define jst
print v8::internal::Isolate::Current()->PrintStack(stdout)
end
document jst
Print the current JavaScript stack trace
Usage: jst
end

set disassembly-flavor intel
set disable-randomization off
