28 #include "interpreter.h"
35 #include "collector.h"
36 #include "operations.h"
37 #include "error_object.h"
48 return rep->scopeChain();
53 return rep->variableObject();
58 return rep->thisValue();
63 return rep->callingContext();
68 return rep->codeType();
88 return Object(rep->function());
93 return rep->functionName;
103 return (c1.imp() == c2.imp());
108 return (c1.imp() != c2.imp());
115 rep =
new InterpreterImp(
this,global);
120 Object global(
new ObjectImp());
121 rep =
new InterpreterImp(
this,global);
124 Interpreter::~Interpreter()
131 return rep->globalObject();
134 void Interpreter::initGlobalObject()
136 rep->initGlobalObject();
139 void Interpreter::lock()
141 InterpreterImp::lock();
144 void Interpreter::unlock()
146 InterpreterImp::unlock();
151 return rep->globalExec();
156 return rep->checkSyntax(code,errLine,errMsg);
161 return rep->checkSyntax(code);
166 return rep->evaluate(code,thisV);
169 InterpreterImp *Interpreter::imp()
176 return rep->builtinObject();
181 return rep->builtinFunction();
186 return rep->builtinArray();
191 return rep->builtinBoolean();
196 return rep->builtinString();
201 return rep->builtinNumber();
206 return rep->builtinDate();
211 return rep->builtinRegExp();
216 return rep->builtinError();
221 return rep->builtinObjectPrototype();
226 return rep->builtinFunctionPrototype();
231 return rep->builtinArrayPrototype();
236 return rep->builtinBooleanPrototype();
241 return rep->builtinStringPrototype();
246 return rep->builtinNumberPrototype();
251 return rep->builtinDatePrototype();
256 return rep->builtinRegExpPrototype();
261 return rep->builtinErrorPrototype();
266 return rep->builtinEvalError();
269 Object Interpreter::builtinRangeError()
const
271 return rep->builtinRangeError();
274 Object Interpreter::builtinReferenceError()
const
276 return rep->builtinReferenceError();
279 Object Interpreter::builtinSyntaxError()
const
281 return rep->builtinSyntaxError();
284 Object Interpreter::builtinTypeError()
const
286 return rep->builtinTypeError();
289 Object Interpreter::builtinURIError()
const
291 return rep->builtinURIError();
294 Object Interpreter::builtinEvalErrorPrototype()
const
296 return rep->builtinEvalErrorPrototype();
299 Object Interpreter::builtinRangeErrorPrototype()
const
301 return rep->builtinRangeErrorPrototype();
304 Object Interpreter::builtinReferenceErrorPrototype()
const
306 return rep->builtinReferenceErrorPrototype();
309 Object Interpreter::builtinSyntaxErrorPrototype()
const
311 return rep->builtinSyntaxErrorPrototype();
314 Object Interpreter::builtinTypeErrorPrototype()
const
316 return rep->builtinTypeErrorPrototype();
319 Object Interpreter::builtinURIErrorPrototype()
const
321 return rep->builtinURIErrorPrototype();
326 rep->setCompatMode(mode);
329 Interpreter::CompatMode Interpreter::compatMode()
const
331 return rep->compatMode();
341 void Interpreter::finalCheck()
343 fprintf(stderr,
"Interpreter::finalCheck()\n");
351 Collector::finalCheck();
352 Lexer::globalClear();
353 UString::globalClear();
359 void ExecState::setException(
const Value &e)
362 Debugger *dbg = _interpreter->imp()->debugger();
364 dbg->exception(
this,e,_context->inTryCatch());
369 void ExecState::clearException()
371 terminate_request =
false;
372 _exception =
Value();
375 bool ExecState::terminate_request =
false;
377 static bool defaultConfirm() {
return true; }
379 bool (*ExecState::confirmTerminate)() = defaultConfirm;
381 bool ExecState::hadException()
383 if (terminate_request) {
384 terminate_request =
false;
385 if (confirmTerminate())
391 void Interpreter::virtual_hook(
int,
void* )
405 InterpreterImp *result = InterpreterImp::interpreterWithGlobalObject(_context->scopeChain().bottom());
411 return result->interpreter();