27 #include "interpreter.h"
34 #include "collector.h"
35 #include "operations.h"
36 #include "error_object.h"
47 return rep->scopeChain();
52 return rep->variableObject();
57 return rep->thisValue();
62 return rep->callingContext();
67 return rep->codeType();
87 return Object(rep->function());
92 return rep->functionName;
102 return (c1.imp() == c2.imp());
107 return (c1.imp() != c2.imp());
114 rep =
new InterpreterImp(
this,global);
119 Object global(
new ObjectImp());
120 rep =
new InterpreterImp(
this,global);
123 Interpreter::~Interpreter()
130 return rep->globalObject();
133 void Interpreter::initGlobalObject()
135 rep->initGlobalObject();
138 void Interpreter::lock()
140 InterpreterImp::lock();
143 void Interpreter::unlock()
145 InterpreterImp::unlock();
150 return rep->globalExec();
155 return rep->checkSyntax(code,errLine,errMsg);
160 return rep->checkSyntax(code);
165 return rep->evaluate(code,thisV);
168 InterpreterImp *Interpreter::imp()
175 return rep->builtinObject();
180 return rep->builtinFunction();
185 return rep->builtinArray();
190 return rep->builtinBoolean();
195 return rep->builtinString();
200 return rep->builtinNumber();
205 return rep->builtinDate();
210 return rep->builtinRegExp();
215 return rep->builtinError();
220 return rep->builtinObjectPrototype();
225 return rep->builtinFunctionPrototype();
230 return rep->builtinArrayPrototype();
235 return rep->builtinBooleanPrototype();
240 return rep->builtinStringPrototype();
245 return rep->builtinNumberPrototype();
250 return rep->builtinDatePrototype();
255 return rep->builtinRegExpPrototype();
260 return rep->builtinErrorPrototype();
265 return rep->builtinEvalError();
268 Object Interpreter::builtinRangeError()
const
270 return rep->builtinRangeError();
273 Object Interpreter::builtinReferenceError()
const
275 return rep->builtinReferenceError();
278 Object Interpreter::builtinSyntaxError()
const
280 return rep->builtinSyntaxError();
283 Object Interpreter::builtinTypeError()
const
285 return rep->builtinTypeError();
288 Object Interpreter::builtinURIError()
const
290 return rep->builtinURIError();
293 Object Interpreter::builtinEvalErrorPrototype()
const
295 return rep->builtinEvalErrorPrototype();
298 Object Interpreter::builtinRangeErrorPrototype()
const
300 return rep->builtinRangeErrorPrototype();
303 Object Interpreter::builtinReferenceErrorPrototype()
const
305 return rep->builtinReferenceErrorPrototype();
308 Object Interpreter::builtinSyntaxErrorPrototype()
const
310 return rep->builtinSyntaxErrorPrototype();
313 Object Interpreter::builtinTypeErrorPrototype()
const
315 return rep->builtinTypeErrorPrototype();
318 Object Interpreter::builtinURIErrorPrototype()
const
320 return rep->builtinURIErrorPrototype();
325 rep->setCompatMode(mode);
328 Interpreter::CompatMode Interpreter::compatMode()
const
330 return rep->compatMode();
340 void Interpreter::finalCheck()
342 fprintf(stderr,
"Interpreter::finalCheck()\n");
350 Collector::finalCheck();
351 Lexer::globalClear();
352 UString::globalClear();
358 void ExecState::setException(
const Value &e)
361 Debugger *dbg = _interpreter->imp()->debugger();
363 dbg->exception(
this,e,_context->inTryCatch());
368 void ExecState::clearException()
370 terminate_request =
false;
371 _exception =
Value();
374 bool ExecState::terminate_request =
false;
376 static bool defaultConfirm() {
return true; }
378 bool (*ExecState::confirmTerminate)() = defaultConfirm;
380 bool ExecState::hadException()
382 if (terminate_request) {
383 terminate_request =
false;
384 if (confirmTerminate())
390 void Interpreter::virtual_hook(
int,
void* )
404 InterpreterImp *result = InterpreterImp::interpreterWithGlobalObject(_context->scopeChain().bottom());
410 return result->interpreter();