Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(185)

Side by Side Diff: JavaScriptCore/interpreter/Interpreter.h

Issue 28077: WebKit side of merge from r41149 to r41181. (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/WebKit/
Patch Set: Created 11 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2008 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 DidReachBreakpoint, 60 DidReachBreakpoint,
61 WillLeaveCallFrame, 61 WillLeaveCallFrame,
62 WillExecuteStatement 62 WillExecuteStatement
63 }; 63 };
64 64
65 enum { MaxReentryDepth = 128 }; 65 enum { MaxReentryDepth = 128 };
66 66
67 class Interpreter { 67 class Interpreter {
68 friend class JIT; 68 friend class JIT;
69 friend class JITStubs; 69 friend class JITStubs;
70
70 public: 71 public:
71 Interpreter(); 72 Interpreter();
72 ~Interpreter();
73 73
74 void initialize(JSGlobalData*);
75
76 RegisterFile& registerFile() { return m_registerFile; } 74 RegisterFile& registerFile() { return m_registerFile; }
77 75
78 Opcode getOpcode(OpcodeID id) 76 Opcode getOpcode(OpcodeID id)
79 { 77 {
80 #if HAVE(COMPUTED_GOTO) 78 #if HAVE(COMPUTED_GOTO)
81 return m_opcodeTable[id]; 79 return m_opcodeTable[id];
82 #else 80 #else
83 return id; 81 return id;
84 #endif 82 #endif
85 } 83 }
(...skipping 16 matching lines...) Expand all
102 100
103 JSValuePtr retrieveArguments(CallFrame*, JSFunction*) const; 101 JSValuePtr retrieveArguments(CallFrame*, JSFunction*) const;
104 JSValuePtr retrieveCaller(CallFrame*, InternalFunction*) const; 102 JSValuePtr retrieveCaller(CallFrame*, InternalFunction*) const;
105 void retrieveLastCaller(CallFrame*, int& lineNumber, intptr_t& sourceID, UString& sourceURL, JSValuePtr& function) const; 103 void retrieveLastCaller(CallFrame*, int& lineNumber, intptr_t& sourceID, UString& sourceURL, JSValuePtr& function) const;
106 104
107 void getArgumentsData(CallFrame*, JSFunction*&, ptrdiff_t& firstParamete rIndex, Register*& argv, int& argc); 105 void getArgumentsData(CallFrame*, JSFunction*&, ptrdiff_t& firstParamete rIndex, Register*& argv, int& argc);
108 106
109 void setSampler(SamplingTool* sampler) { m_sampler = sampler; } 107 void setSampler(SamplingTool* sampler) { m_sampler = sampler; }
110 SamplingTool* sampler() { return m_sampler; } 108 SamplingTool* sampler() { return m_sampler; }
111 109
112 bool isJSArray(JSValuePtr v) { return v.isCell() && v.asCell()->vptr() = = m_jsArrayVptr; }
113 bool isJSString(JSValuePtr v) { return v.isCell() && v.asCell()->vptr() == m_jsStringVptr; }
114 bool isJSByteArray(JSValuePtr v) { return v.isCell() && v.asCell()->vptr () == m_jsByteArrayVptr; }
115
116 private: 110 private:
117 enum ExecutionFlag { Normal, InitializeAndReturn }; 111 enum ExecutionFlag { Normal, InitializeAndReturn };
118 112
119 NEVER_INLINE JSValuePtr callEval(CallFrame*, RegisterFile*, Register* ar gv, int argc, int registerOffset, JSValuePtr& exceptionValue); 113 NEVER_INLINE JSValuePtr callEval(CallFrame*, RegisterFile*, Register* ar gv, int argc, int registerOffset, JSValuePtr& exceptionValue);
120 JSValuePtr execute(EvalNode*, CallFrame*, JSObject* thisObject, int glob alRegisterOffset, ScopeChainNode*, JSValuePtr* exception); 114 JSValuePtr execute(EvalNode*, CallFrame*, JSObject* thisObject, int glob alRegisterOffset, ScopeChainNode*, JSValuePtr* exception);
121 115
122 NEVER_INLINE void debug(CallFrame*, DebugHookID, int firstLine, int last Line); 116 NEVER_INLINE void debug(CallFrame*, DebugHookID, int firstLine, int last Line);
123 117
124 NEVER_INLINE bool resolve(CallFrame*, Instruction*, JSValuePtr& exceptio nValue); 118 NEVER_INLINE bool resolve(CallFrame*, Instruction*, JSValuePtr& exceptio nValue);
125 NEVER_INLINE bool resolveSkip(CallFrame*, Instruction*, JSValuePtr& exce ptionValue); 119 NEVER_INLINE bool resolveSkip(CallFrame*, Instruction*, JSValuePtr& exce ptionValue);
(...skipping 17 matching lines...) Expand all
143 137
144 void tryCacheGetByID(CallFrame*, CodeBlock*, Instruction*, JSValuePtr ba seValue, const Identifier& propertyName, const PropertySlot&); 138 void tryCacheGetByID(CallFrame*, CodeBlock*, Instruction*, JSValuePtr ba seValue, const Identifier& propertyName, const PropertySlot&);
145 void uncacheGetByID(CodeBlock*, Instruction* vPC); 139 void uncacheGetByID(CodeBlock*, Instruction* vPC);
146 void tryCachePutByID(CallFrame*, CodeBlock*, Instruction*, JSValuePtr ba seValue, const PutPropertySlot&); 140 void tryCachePutByID(CallFrame*, CodeBlock*, Instruction*, JSValuePtr ba seValue, const PutPropertySlot&);
147 void uncachePutByID(CodeBlock*, Instruction* vPC); 141 void uncachePutByID(CodeBlock*, Instruction* vPC);
148 142
149 bool isCallBytecode(Opcode opcode) { return opcode == getOpcode(op_call) || opcode == getOpcode(op_construct) || opcode == getOpcode(op_call_eval); } 143 bool isCallBytecode(Opcode opcode) { return opcode == getOpcode(op_call) || opcode == getOpcode(op_construct) || opcode == getOpcode(op_call_eval); }
150 144
151 SamplingTool* m_sampler; 145 SamplingTool* m_sampler;
152 146
153 #if ENABLE(JIT)
154 RefPtr<ExecutablePool> m_executablePool;
155 void* m_ctiArrayLengthTrampoline;
156 void* m_ctiStringLengthTrampoline;
157 void* m_ctiVirtualCallPreLink;
158 void* m_ctiVirtualCallLink;
159 void* m_ctiVirtualCall;
160 #endif
161
162 int m_reentryDepth; 147 int m_reentryDepth;
163 148
164 RegisterFile m_registerFile; 149 RegisterFile m_registerFile;
165 150
166 void* m_jsArrayVptr;
167 void* m_jsByteArrayVptr;
168 void* m_jsStringVptr;
169 void* m_jsFunctionVptr;
170
171 #if HAVE(COMPUTED_GOTO) 151 #if HAVE(COMPUTED_GOTO)
172 Opcode m_opcodeTable[numOpcodeIDs]; // Maps OpcodeID => Opcode for compi ling 152 Opcode m_opcodeTable[numOpcodeIDs]; // Maps OpcodeID => Opcode for compi ling
173 HashMap<Opcode, OpcodeID> m_opcodeIDTable; // Maps Opcode => OpcodeID fo r decompiling 153 HashMap<Opcode, OpcodeID> m_opcodeIDTable; // Maps Opcode => OpcodeID fo r decompiling
174 #endif 154 #endif
175 }; 155 };
176 156
177 } // namespace JSC 157 } // namespace JSC
178 158
179 #endif // Interpreter_h 159 #endif // Interpreter_h
180 160
OLDNEW
« no previous file with comments | « JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj ('k') | JavaScriptCore/interpreter/Interpreter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698