Changeset 63267 in webkit for trunk/JavaScriptCore/runtime/Executable.h
- Timestamp:
- Jul 13, 2010, 5:27:13 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/runtime/Executable.h
r63237 r63267 194 194 ~EvalExecutable(); 195 195 196 EvalCodeBlock& bytecode(ExecState* exec, ScopeChainNode* scopeChainNode) 197 { 198 if (!m_evalCodeBlock) { 199 JSObject* error = compile(exec, scopeChainNode); 200 ASSERT_UNUSED(!error, error); 201 } 196 JSObject* compile(ExecState* exec, ScopeChainNode* scopeChainNode) 197 { 198 JSObject* error = 0; 199 if (!m_evalCodeBlock) 200 error = compileInternal(exec, scopeChainNode); 201 ASSERT(!error == !!m_evalCodeBlock); 202 return error; 203 } 204 205 EvalCodeBlock& generatedBytecode() 206 { 207 ASSERT(m_evalCodeBlock); 202 208 return *m_evalCodeBlock; 203 209 } 204 210 205 JSObject* compile(ExecState*, ScopeChainNode*);206 207 211 static PassRefPtr<EvalExecutable> create(ExecState* exec, const SourceCode& source) { return adoptRef(new EvalExecutable(exec, source)); } 212 213 #if ENABLE(JIT) 214 JITCode& generatedJITCode() 215 { 216 return generatedJITCodeForCall(); 217 } 218 #endif 208 219 209 220 private: … … 214 225 } 215 226 227 JSObject* compileInternal(ExecState*, ScopeChainNode*); 228 216 229 virtual PassOwnPtr<ExceptionInfo> reparseExceptionInfo(JSGlobalData*, ScopeChainNode*, CodeBlock*); 217 230 218 231 EvalCodeBlock* m_evalCodeBlock; 219 220 #if ENABLE(JIT)221 public:222 JITCode& jitCode(ExecState* exec, ScopeChainNode* scopeChainNode)223 {224 if (!m_jitCodeForCall)225 generateJITCode(exec, scopeChainNode);226 return m_jitCodeForCall;227 }228 229 private:230 void generateJITCode(ExecState*, ScopeChainNode*);231 #endif232 232 }; 233 233 … … 241 241 ~ProgramExecutable(); 242 242 243 ProgramCodeBlock& bytecode(ExecState* exec, ScopeChainNode* scopeChainNode) 244 { 245 if (!m_programCodeBlock) { 246 JSObject* error = compile(exec, scopeChainNode); 247 ASSERT_UNUSED(!error, error); 248 } 243 JSObject* compile(ExecState* exec, ScopeChainNode* scopeChainNode) 244 { 245 JSObject* error = 0; 246 if (!m_programCodeBlock) 247 error = compileInternal(exec, scopeChainNode); 248 ASSERT(!error == !!m_programCodeBlock); 249 return error; 250 } 251 252 ProgramCodeBlock& generatedBytecode() 253 { 254 ASSERT(m_programCodeBlock); 249 255 return *m_programCodeBlock; 250 256 } 251 257 252 258 JSObject* checkSyntax(ExecState*); 253 JSObject* compile(ExecState*, ScopeChainNode*); 259 260 #if ENABLE(JIT) 261 JITCode& generatedJITCode() 262 { 263 return generatedJITCodeForCall(); 264 } 265 #endif 254 266 255 267 private: … … 260 272 } 261 273 274 JSObject* compileInternal(ExecState*, ScopeChainNode*); 275 262 276 virtual PassOwnPtr<ExceptionInfo> reparseExceptionInfo(JSGlobalData*, ScopeChainNode*, CodeBlock*); 263 277 264 278 ProgramCodeBlock* m_programCodeBlock; 265 266 #if ENABLE(JIT)267 public:268 JITCode& jitCode(ExecState* exec, ScopeChainNode* scopeChainNode)269 {270 if (!m_jitCodeForCall)271 generateJITCode(exec, scopeChainNode);272 return m_jitCodeForCall;273 }274 275 private:276 void generateJITCode(ExecState*, ScopeChainNode*);277 #endif278 279 }; 279 280 … … 301 302 // for answering questions that that don't vary between call and construct -- 302 303 // for example, argumentsRegister(). 303 FunctionCodeBlock& generatedByte Code()304 FunctionCodeBlock& generatedBytecode() 304 305 { 305 306 if (m_codeBlockForCall) … … 309 310 } 310 311 311 FunctionCodeBlock* bytecodeForCall(ExecState* exec, ScopeChainNode* scopeChainNode)312 { 313 ASSERT(scopeChainNode);312 JSObject* compileForCall(ExecState* exec, ScopeChainNode* scopeChainNode) 313 { 314 JSObject* error = 0; 314 315 if (!m_codeBlockForCall) 315 compileForCall(exec, scopeChainNode); 316 return m_codeBlockForCall; 316 error = compileForCallInternal(exec, scopeChainNode); 317 ASSERT(!error == !!m_codeBlockForCall); 318 return error; 317 319 } 318 320 … … 328 330 } 329 331 330 FunctionCodeBlock* bytecodeForConstruct(ExecState* exec, ScopeChainNode* scopeChainNode)331 { 332 ASSERT(scopeChainNode);332 JSObject* compileForConstruct(ExecState* exec, ScopeChainNode* scopeChainNode) 333 { 334 JSObject* error = 0; 333 335 if (!m_codeBlockForConstruct) 334 compileForConstruct(exec, scopeChainNode); 335 return m_codeBlockForConstruct; 336 error = compileForConstructInternal(exec, scopeChainNode); 337 ASSERT(!error == !!m_codeBlockForConstruct); 338 return error; 336 339 } 337 340 … … 355 358 void recompile(ExecState*); 356 359 void markAggregate(MarkStack& markStack); 357 static PassRefPtr<FunctionExecutable> fromGlobalCode(const Identifier&, ExecState*, Debugger*, const SourceCode&, int* errLine = 0, UString* errMsg = 0);360 static PassRefPtr<FunctionExecutable> fromGlobalCode(const Identifier&, ExecState*, Debugger*, const SourceCode&, JSObject** exception); 358 361 359 362 private: … … 386 389 } 387 390 388 bool compileForCall(ExecState*, ScopeChainNode*);389 bool compileForConstruct(ExecState*, ScopeChainNode*);391 JSObject* compileForCallInternal(ExecState*, ScopeChainNode*); 392 JSObject* compileForConstructInternal(ExecState*, ScopeChainNode*); 390 393 391 394 virtual PassOwnPtr<ExceptionInfo> reparseExceptionInfo(JSGlobalData*, ScopeChainNode*, CodeBlock*); … … 402 405 #if ENABLE(JIT) 403 406 public: 404 JITCode& jitCodeForCall(ExecState* exec, ScopeChainNode* scopeChainNode)405 {406 if (!m_jitCodeForCall)407 generateJITCodeForCall(exec, scopeChainNode);408 return m_jitCodeForCall;409 }410 411 JITCode& jitCodeForConstruct(ExecState* exec, ScopeChainNode* scopeChainNode)412 {413 if (!m_jitCodeForConstruct)414 generateJITCodeForConstruct(exec, scopeChainNode);415 return m_jitCodeForConstruct;416 }417 418 bool tryJitCodeForCall(ExecState* exec, ScopeChainNode* scopeChainNode)419 {420 FunctionCodeBlock* codeBlock = bytecodeForCall(exec, scopeChainNode);421 if (!codeBlock)422 return false;423 if (!m_jitCodeForCall)424 generateJITCodeForCall(exec, scopeChainNode);425 return true;426 }427 428 bool tryJitCodeForConstruct(ExecState* exec, ScopeChainNode* scopeChainNode)429 {430 FunctionCodeBlock* codeBlock = bytecodeForConstruct(exec, scopeChainNode);431 if (!codeBlock)432 return false;433 if (!m_jitCodeForConstruct)434 generateJITCodeForConstruct(exec, scopeChainNode);435 return true;436 }437 438 407 MacroAssemblerCodePtr generatedJITCodeForCallWithArityCheck() 439 408 { … … 449 418 return m_jitCodeForConstructWithArityCheck; 450 419 } 451 452 private:453 void generateJITCodeForCall(ExecState*, ScopeChainNode*);454 void generateJITCodeForConstruct(ExecState*, ScopeChainNode*);455 420 #endif 456 421 };
Note:
See TracChangeset
for help on using the changeset viewer.