1/* 2 * Copyright (C) 2012 Apple Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25 26#include "config.h" 27 28#include "ArrayProfile.h" 29#include "CodeBlock.h" 30#include "Executable.h" 31#include "Heap.h" 32#include "Interpreter.h" 33#include "JITStubs.h" 34#include "JSArray.h" 35#include "JSCell.h" 36#include "JSFunction.h" 37#include "VM.h" 38#include "JSGlobalObject.h" 39#include "JSObject.h" 40#include "JSPropertyNameIterator.h" 41#include "JSStack.h" 42#include "JSString.h" 43#include "JSTypeInfo.h" 44#include "JSVariableObject.h" 45#include "JumpTable.h" 46#include "LLIntOfflineAsmConfig.h" 47#include "MarkedSpace.h" 48 49#include "Structure.h" 50#include "StructureChain.h" 51#include "ValueProfile.h" 52#include <wtf/text/StringImpl.h> 53 54namespace JSC { 55 56#define OFFLINE_ASM_OFFSETOF(clazz, field) (static_cast<unsigned>(OBJECT_OFFSETOF(clazz, field))) 57 58class LLIntOffsetsExtractor { 59public: 60 static const unsigned* dummy(); 61}; 62 63const unsigned* LLIntOffsetsExtractor::dummy() 64{ 65#if ENABLE(LLINT) 66// This is a file generated by offlineasm/generate_offsets_extractor.rb, and contains code 67// to create a table of offsets, sizes, and a header identifying what combination of 68// Platform.h macros we have set. We include it inside of a method on LLIntOffsetsExtractor 69// because the fields whose offsets we're extracting are mostly private. So we make their 70// classes friends with LLIntOffsetsExtractor, and include the header here, to get the C++ 71// compiler to kindly step aside and yield to our best intentions. 72#include "LLIntDesiredOffsets.h" 73 return extractorTable; 74#else 75 return 0; 76#endif 77} 78 79} // namespace JSC 80 81int main(int, char**) 82{ 83 // Out of an abundance of caution, make sure that LLIntOffsetsExtractor::dummy() is live, 84 // and the extractorTable is live, too. 85 printf("%p\n", JSC::LLIntOffsetsExtractor::dummy()); 86 return 0; 87} 88 89 90