Adding inspector module and macro-ized object type list.
Patch by Mark Lam from Hewlett-Packard Development Company, LP Review URL: http://codereview.chromium.org/6261012 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6379 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
9ab1970860
commit
9e23f65bec
@ -124,6 +124,9 @@ LIBRARY_FLAGS = {
|
||||
},
|
||||
'debuggersupport:on': {
|
||||
'CPPDEFINES': ['ENABLE_DEBUGGER_SUPPORT'],
|
||||
},
|
||||
'inspector:on': {
|
||||
'CPPDEFINES': ['INSPECTOR'],
|
||||
}
|
||||
},
|
||||
'gcc': {
|
||||
@ -744,6 +747,11 @@ SIMPLE_OPTIONS = {
|
||||
'default': 'on',
|
||||
'help': 'enable debugging of JavaScript code'
|
||||
},
|
||||
'inspector': {
|
||||
'values': ['on', 'off'],
|
||||
'default': 'off',
|
||||
'help': 'enable inspector features'
|
||||
},
|
||||
'soname': {
|
||||
'values': ['on', 'off'],
|
||||
'default': 'off',
|
||||
|
@ -82,6 +82,7 @@ SOURCES = {
|
||||
hydrogen.cc
|
||||
hydrogen-instructions.cc
|
||||
ic.cc
|
||||
inspector.cc
|
||||
interpreter-irregexp.cc
|
||||
jsregexp.cc
|
||||
jump-target.cc
|
||||
|
63
src/inspector.cc
Normal file
63
src/inspector.cc
Normal file
@ -0,0 +1,63 @@
|
||||
// Copyright 2011 the V8 project authors. All rights reserved.
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are
|
||||
// met:
|
||||
//
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above
|
||||
// copyright notice, this list of conditions and the following
|
||||
// disclaimer in the documentation and/or other materials provided
|
||||
// with the distribution.
|
||||
// * Neither the name of Google Inc. nor the names of its
|
||||
// contributors may be used to endorse or promote products derived
|
||||
// from this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
|
||||
#include "v8.h"
|
||||
#include "inspector.h"
|
||||
|
||||
|
||||
namespace v8 {
|
||||
namespace internal {
|
||||
|
||||
#ifdef INSPECTOR
|
||||
|
||||
//============================================================================
|
||||
// The Inspector.
|
||||
|
||||
void Inspector::DumpObjectType(FILE* out, Object *obj, bool print_more) {
|
||||
// Dump the object pointer.
|
||||
OS::FPrint(out, "%p:", reinterpret_cast<void*>(obj));
|
||||
if (obj->IsHeapObject()) {
|
||||
HeapObject *hobj = HeapObject::cast(obj);
|
||||
OS::FPrint(out, " size %d :", hobj->Size());
|
||||
}
|
||||
|
||||
// Dump each object classification that matches this object.
|
||||
#define FOR_EACH_TYPE(type) \
|
||||
if (obj->Is##type()) { \
|
||||
OS::FPrint(out, " %s", #type); \
|
||||
}
|
||||
OBJECT_TYPE_LIST(FOR_EACH_TYPE)
|
||||
HEAP_OBJECT_TYPE_LIST(FOR_EACH_TYPE)
|
||||
#undef FOR_EACH_TYPE
|
||||
}
|
||||
|
||||
|
||||
#endif // INSPECTOR
|
||||
|
||||
} } // namespace v8::internal
|
||||
|
62
src/inspector.h
Normal file
62
src/inspector.h
Normal file
@ -0,0 +1,62 @@
|
||||
// Copyright 2011 the V8 project authors. All rights reserved.
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are
|
||||
// met:
|
||||
//
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above
|
||||
// copyright notice, this list of conditions and the following
|
||||
// disclaimer in the documentation and/or other materials provided
|
||||
// with the distribution.
|
||||
// * Neither the name of Google Inc. nor the names of its
|
||||
// contributors may be used to endorse or promote products derived
|
||||
// from this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
|
||||
#ifndef V8_INSPECTOR_H_
|
||||
#define V8_INSPECTOR_H_
|
||||
|
||||
// Only build this code if we're configured with the INSPECTOR.
|
||||
#ifdef INSPECTOR
|
||||
|
||||
#include "v8.h"
|
||||
|
||||
#include "objects.h"
|
||||
|
||||
namespace v8 {
|
||||
namespace internal {
|
||||
|
||||
class Inspector {
|
||||
public:
|
||||
|
||||
static void DumpObjectType(FILE* out, Object *obj, bool print_more);
|
||||
static void DumpObjectType(FILE* out, Object *obj) {
|
||||
DumpObjectType(out, obj, false);
|
||||
}
|
||||
static void DumpObjectType(Object *obj, bool print_more) {
|
||||
DumpObjectType(stdout, obj, print_more);
|
||||
}
|
||||
static void DumpObjectType(Object *obj) {
|
||||
DumpObjectType(stdout, obj, false);
|
||||
}
|
||||
};
|
||||
|
||||
} } // namespace v8::internal
|
||||
|
||||
#endif // INSPECTOR
|
||||
|
||||
#endif // V8_INSPECTOR_H_
|
||||
|
130
src/objects.h
130
src/objects.h
@ -624,6 +624,71 @@ class MaybeObject BASE_EMBEDDED {
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
#define OBJECT_TYPE_LIST(V) \
|
||||
V(Smi) \
|
||||
V(HeapObject) \
|
||||
V(Number) \
|
||||
|
||||
#define HEAP_OBJECT_TYPE_LIST(V) \
|
||||
V(HeapNumber) \
|
||||
V(String) \
|
||||
V(Symbol) \
|
||||
V(SeqString) \
|
||||
V(ExternalString) \
|
||||
V(ConsString) \
|
||||
V(ExternalTwoByteString) \
|
||||
V(ExternalAsciiString) \
|
||||
V(SeqTwoByteString) \
|
||||
V(SeqAsciiString) \
|
||||
\
|
||||
V(PixelArray) \
|
||||
V(ExternalArray) \
|
||||
V(ExternalByteArray) \
|
||||
V(ExternalUnsignedByteArray) \
|
||||
V(ExternalShortArray) \
|
||||
V(ExternalUnsignedShortArray) \
|
||||
V(ExternalIntArray) \
|
||||
V(ExternalUnsignedIntArray) \
|
||||
V(ExternalFloatArray) \
|
||||
V(ByteArray) \
|
||||
V(JSObject) \
|
||||
V(JSContextExtensionObject) \
|
||||
V(Map) \
|
||||
V(DescriptorArray) \
|
||||
V(DeoptimizationInputData) \
|
||||
V(DeoptimizationOutputData) \
|
||||
V(FixedArray) \
|
||||
V(Context) \
|
||||
V(CatchContext) \
|
||||
V(GlobalContext) \
|
||||
V(JSFunction) \
|
||||
V(Code) \
|
||||
V(Oddball) \
|
||||
V(SharedFunctionInfo) \
|
||||
V(JSValue) \
|
||||
V(StringWrapper) \
|
||||
V(Proxy) \
|
||||
V(Boolean) \
|
||||
V(JSArray) \
|
||||
V(JSRegExp) \
|
||||
V(HashTable) \
|
||||
V(Dictionary) \
|
||||
V(SymbolTable) \
|
||||
V(JSFunctionResultCache) \
|
||||
V(NormalizedMapCache) \
|
||||
V(CompilationCacheTable) \
|
||||
V(CodeCacheHashTable) \
|
||||
V(MapCache) \
|
||||
V(Primitive) \
|
||||
V(GlobalObject) \
|
||||
V(JSGlobalObject) \
|
||||
V(JSBuiltinsObject) \
|
||||
V(JSGlobalProxy) \
|
||||
V(UndetectableObject) \
|
||||
V(AccessCheckNeeded) \
|
||||
V(JSGlobalPropertyCell) \
|
||||
|
||||
// Object is the abstract superclass for all classes in the
|
||||
// object hierarchy.
|
||||
// Object does not use any virtual functions to avoid the
|
||||
@ -633,67 +698,10 @@ class MaybeObject BASE_EMBEDDED {
|
||||
class Object : public MaybeObject {
|
||||
public:
|
||||
// Type testing.
|
||||
inline bool IsSmi();
|
||||
inline bool IsHeapObject();
|
||||
inline bool IsHeapNumber();
|
||||
inline bool IsString();
|
||||
inline bool IsSymbol();
|
||||
// See objects-inl.h for more details
|
||||
inline bool IsSeqString();
|
||||
inline bool IsExternalString();
|
||||
inline bool IsExternalTwoByteString();
|
||||
inline bool IsExternalAsciiString();
|
||||
inline bool IsSeqTwoByteString();
|
||||
inline bool IsSeqAsciiString();
|
||||
inline bool IsConsString();
|
||||
|
||||
inline bool IsNumber();
|
||||
inline bool IsByteArray();
|
||||
inline bool IsPixelArray();
|
||||
inline bool IsExternalArray();
|
||||
inline bool IsExternalByteArray();
|
||||
inline bool IsExternalUnsignedByteArray();
|
||||
inline bool IsExternalShortArray();
|
||||
inline bool IsExternalUnsignedShortArray();
|
||||
inline bool IsExternalIntArray();
|
||||
inline bool IsExternalUnsignedIntArray();
|
||||
inline bool IsExternalFloatArray();
|
||||
inline bool IsJSObject();
|
||||
inline bool IsJSContextExtensionObject();
|
||||
inline bool IsMap();
|
||||
inline bool IsFixedArray();
|
||||
inline bool IsDescriptorArray();
|
||||
inline bool IsDeoptimizationInputData();
|
||||
inline bool IsDeoptimizationOutputData();
|
||||
inline bool IsContext();
|
||||
inline bool IsCatchContext();
|
||||
inline bool IsGlobalContext();
|
||||
inline bool IsJSFunction();
|
||||
inline bool IsCode();
|
||||
inline bool IsOddball();
|
||||
inline bool IsSharedFunctionInfo();
|
||||
inline bool IsJSValue();
|
||||
inline bool IsStringWrapper();
|
||||
inline bool IsProxy();
|
||||
inline bool IsBoolean();
|
||||
inline bool IsJSArray();
|
||||
inline bool IsJSRegExp();
|
||||
inline bool IsHashTable();
|
||||
inline bool IsDictionary();
|
||||
inline bool IsSymbolTable();
|
||||
inline bool IsJSFunctionResultCache();
|
||||
inline bool IsNormalizedMapCache();
|
||||
inline bool IsCompilationCacheTable();
|
||||
inline bool IsCodeCacheHashTable();
|
||||
inline bool IsMapCache();
|
||||
inline bool IsPrimitive();
|
||||
inline bool IsGlobalObject();
|
||||
inline bool IsJSGlobalObject();
|
||||
inline bool IsJSBuiltinsObject();
|
||||
inline bool IsJSGlobalProxy();
|
||||
inline bool IsUndetectableObject();
|
||||
inline bool IsAccessCheckNeeded();
|
||||
inline bool IsJSGlobalPropertyCell();
|
||||
#define IS_TYPE_FUNCTION_DECL(type_) inline bool Is##type_();
|
||||
OBJECT_TYPE_LIST(IS_TYPE_FUNCTION_DECL)
|
||||
HEAP_OBJECT_TYPE_LIST(IS_TYPE_FUNCTION_DECL)
|
||||
#undef IS_TYPE_FUNCTION_DECL
|
||||
|
||||
// Returns true if this object is an instance of the specified
|
||||
// function template.
|
||||
|
Loading…
Reference in New Issue
Block a user