Changeset 37684 in webkit for trunk/JavaScriptCore/VM/Machine.h
- Timestamp:
- Oct 18, 2008, 6:52:42 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/VM/Machine.h
r37681 r37684 125 125 bool isOpcode(Opcode opcode); 126 126 127 JSValue * execute(ProgramNode*, CallFrame*, ScopeChainNode*, JSObject* thisObj, JSValue** exception);128 JSValue * execute(FunctionBodyNode*, CallFrame*, JSFunction*, JSObject* thisObj, const ArgList& args, ScopeChainNode*, JSValue** exception);129 JSValue * execute(EvalNode* evalNode, CallFrame* exec, JSObject* thisObj, ScopeChainNode* scopeChain, JSValue** exception);130 131 JSValue *retrieveArguments(CallFrame*, JSFunction*) const;132 JSValue *retrieveCaller(CallFrame*, InternalFunction*) const;133 void retrieveLastCaller(CallFrame*, int& lineNumber, intptr_t& sourceID, UString& sourceURL, JSValue *& function) const;127 JSValuePtr execute(ProgramNode*, CallFrame*, ScopeChainNode*, JSObject* thisObj, JSValuePtr* exception); 128 JSValuePtr execute(FunctionBodyNode*, CallFrame*, JSFunction*, JSObject* thisObj, const ArgList& args, ScopeChainNode*, JSValuePtr* exception); 129 JSValuePtr execute(EvalNode* evalNode, CallFrame* exec, JSObject* thisObj, ScopeChainNode* scopeChain, JSValuePtr* exception); 130 131 JSValuePtr retrieveArguments(CallFrame*, JSFunction*) const; 132 JSValuePtr retrieveCaller(CallFrame*, InternalFunction*) const; 133 void retrieveLastCaller(CallFrame*, int& lineNumber, intptr_t& sourceID, UString& sourceURL, JSValuePtr& function) const; 134 134 135 135 void getArgumentsData(CallFrame*, JSFunction*&, ptrdiff_t& firstParameterIndex, Register*& argv, int& argc); … … 165 165 static void SFX_CALL cti_register_file_check(CTI_ARGS); 166 166 167 static JSValue *SFX_CALL cti_op_convert_this(CTI_ARGS);167 static JSValuePtr SFX_CALL cti_op_convert_this(CTI_ARGS); 168 168 static void SFX_CALL cti_op_end(CTI_ARGS); 169 static JSValue *SFX_CALL cti_op_add(CTI_ARGS);170 static JSValue *SFX_CALL cti_op_pre_inc(CTI_ARGS);169 static JSValuePtr SFX_CALL cti_op_add(CTI_ARGS); 170 static JSValuePtr SFX_CALL cti_op_pre_inc(CTI_ARGS); 171 171 static int SFX_CALL cti_op_loop_if_less(CTI_ARGS); 172 172 static int SFX_CALL cti_op_loop_if_lesseq(CTI_ARGS); 173 static JSValue *SFX_CALL cti_op_new_object(CTI_ARGS);173 static JSValuePtr SFX_CALL cti_op_new_object(CTI_ARGS); 174 174 static void SFX_CALL cti_op_put_by_id(CTI_ARGS); 175 175 static void SFX_CALL cti_op_put_by_id_second(CTI_ARGS); 176 176 static void SFX_CALL cti_op_put_by_id_generic(CTI_ARGS); 177 177 static void SFX_CALL cti_op_put_by_id_fail(CTI_ARGS); 178 static JSValue *SFX_CALL cti_op_get_by_id(CTI_ARGS);179 static JSValue *SFX_CALL cti_op_get_by_id_second(CTI_ARGS);180 static JSValue *SFX_CALL cti_op_get_by_id_generic(CTI_ARGS);181 static JSValue *SFX_CALL cti_op_get_by_id_fail(CTI_ARGS);182 static JSValue *SFX_CALL cti_op_del_by_id(CTI_ARGS);183 static JSValue *SFX_CALL cti_op_instanceof(CTI_ARGS);184 static JSValue *SFX_CALL cti_op_mul(CTI_ARGS);185 static JSValue *SFX_CALL cti_op_new_func(CTI_ARGS);178 static JSValuePtr SFX_CALL cti_op_get_by_id(CTI_ARGS); 179 static JSValuePtr SFX_CALL cti_op_get_by_id_second(CTI_ARGS); 180 static JSValuePtr SFX_CALL cti_op_get_by_id_generic(CTI_ARGS); 181 static JSValuePtr SFX_CALL cti_op_get_by_id_fail(CTI_ARGS); 182 static JSValuePtr SFX_CALL cti_op_del_by_id(CTI_ARGS); 183 static JSValuePtr SFX_CALL cti_op_instanceof(CTI_ARGS); 184 static JSValuePtr SFX_CALL cti_op_mul(CTI_ARGS); 185 static JSValuePtr SFX_CALL cti_op_new_func(CTI_ARGS); 186 186 static VoidPtrPair SFX_CALL cti_op_call_JSFunction(CTI_ARGS); 187 static JSValue *SFX_CALL cti_op_call_NotJSFunction(CTI_ARGS);187 static JSValuePtr SFX_CALL cti_op_call_NotJSFunction(CTI_ARGS); 188 188 static void SFX_CALL cti_op_create_arguments(CTI_ARGS); 189 189 static void SFX_CALL cti_op_create_arguments_no_params(CTI_ARGS); … … 191 191 static void SFX_CALL cti_op_tear_off_arguments(CTI_ARGS); 192 192 static void SFX_CALL cti_op_ret_scopeChain(CTI_ARGS); 193 static JSValue *SFX_CALL cti_op_new_array(CTI_ARGS);194 static JSValue *SFX_CALL cti_op_resolve(CTI_ARGS);195 static JSValue *SFX_CALL cti_op_resolve_global(CTI_ARGS);196 static JSValue *SFX_CALL cti_op_construct_JSConstructFast(CTI_ARGS);193 static JSValuePtr SFX_CALL cti_op_new_array(CTI_ARGS); 194 static JSValuePtr SFX_CALL cti_op_resolve(CTI_ARGS); 195 static JSValuePtr SFX_CALL cti_op_resolve_global(CTI_ARGS); 196 static JSValuePtr SFX_CALL cti_op_construct_JSConstructFast(CTI_ARGS); 197 197 static VoidPtrPair SFX_CALL cti_op_construct_JSConstruct(CTI_ARGS); 198 static JSValue *SFX_CALL cti_op_construct_NotJSConstruct(CTI_ARGS);199 static JSValue *SFX_CALL cti_op_get_by_val(CTI_ARGS);198 static JSValuePtr SFX_CALL cti_op_construct_NotJSConstruct(CTI_ARGS); 199 static JSValuePtr SFX_CALL cti_op_get_by_val(CTI_ARGS); 200 200 static VoidPtrPair SFX_CALL cti_op_resolve_func(CTI_ARGS); 201 static JSValue *SFX_CALL cti_op_sub(CTI_ARGS);201 static JSValuePtr SFX_CALL cti_op_sub(CTI_ARGS); 202 202 static void SFX_CALL cti_op_put_by_val(CTI_ARGS); 203 203 static void SFX_CALL cti_op_put_by_val_array(CTI_ARGS); 204 static JSValue *SFX_CALL cti_op_lesseq(CTI_ARGS);204 static JSValuePtr SFX_CALL cti_op_lesseq(CTI_ARGS); 205 205 static int SFX_CALL cti_op_loop_if_true(CTI_ARGS); 206 static JSValue *SFX_CALL cti_op_resolve_base(CTI_ARGS);207 static JSValue *SFX_CALL cti_op_negate(CTI_ARGS);208 static JSValue *SFX_CALL cti_op_resolve_skip(CTI_ARGS);209 static JSValue *SFX_CALL cti_op_div(CTI_ARGS);210 static JSValue *SFX_CALL cti_op_pre_dec(CTI_ARGS);206 static JSValuePtr SFX_CALL cti_op_resolve_base(CTI_ARGS); 207 static JSValuePtr SFX_CALL cti_op_negate(CTI_ARGS); 208 static JSValuePtr SFX_CALL cti_op_resolve_skip(CTI_ARGS); 209 static JSValuePtr SFX_CALL cti_op_div(CTI_ARGS); 210 static JSValuePtr SFX_CALL cti_op_pre_dec(CTI_ARGS); 211 211 static int SFX_CALL cti_op_jless(CTI_ARGS); 212 static JSValue *SFX_CALL cti_op_not(CTI_ARGS);212 static JSValuePtr SFX_CALL cti_op_not(CTI_ARGS); 213 213 static int SFX_CALL cti_op_jtrue(CTI_ARGS); 214 214 static VoidPtrPair SFX_CALL cti_op_post_inc(CTI_ARGS); 215 static JSValue *SFX_CALL cti_op_eq(CTI_ARGS);216 static JSValue *SFX_CALL cti_op_lshift(CTI_ARGS);217 static JSValue *SFX_CALL cti_op_bitand(CTI_ARGS);218 static JSValue *SFX_CALL cti_op_rshift(CTI_ARGS);219 static JSValue *SFX_CALL cti_op_bitnot(CTI_ARGS);215 static JSValuePtr SFX_CALL cti_op_eq(CTI_ARGS); 216 static JSValuePtr SFX_CALL cti_op_lshift(CTI_ARGS); 217 static JSValuePtr SFX_CALL cti_op_bitand(CTI_ARGS); 218 static JSValuePtr SFX_CALL cti_op_rshift(CTI_ARGS); 219 static JSValuePtr SFX_CALL cti_op_bitnot(CTI_ARGS); 220 220 static VoidPtrPair SFX_CALL cti_op_resolve_with_base(CTI_ARGS); 221 static JSValue *SFX_CALL cti_op_new_func_exp(CTI_ARGS);222 static JSValue *SFX_CALL cti_op_mod(CTI_ARGS);223 static JSValue *SFX_CALL cti_op_less(CTI_ARGS);224 static JSValue *SFX_CALL cti_op_neq(CTI_ARGS);221 static JSValuePtr SFX_CALL cti_op_new_func_exp(CTI_ARGS); 222 static JSValuePtr SFX_CALL cti_op_mod(CTI_ARGS); 223 static JSValuePtr SFX_CALL cti_op_less(CTI_ARGS); 224 static JSValuePtr SFX_CALL cti_op_neq(CTI_ARGS); 225 225 static VoidPtrPair SFX_CALL cti_op_post_dec(CTI_ARGS); 226 static JSValue *SFX_CALL cti_op_urshift(CTI_ARGS);227 static JSValue *SFX_CALL cti_op_bitxor(CTI_ARGS);228 static JSValue *SFX_CALL cti_op_new_regexp(CTI_ARGS);229 static JSValue *SFX_CALL cti_op_bitor(CTI_ARGS);230 static JSValue *SFX_CALL cti_op_call_eval(CTI_ARGS);231 static JSValue *SFX_CALL cti_op_throw(CTI_ARGS);226 static JSValuePtr SFX_CALL cti_op_urshift(CTI_ARGS); 227 static JSValuePtr SFX_CALL cti_op_bitxor(CTI_ARGS); 228 static JSValuePtr SFX_CALL cti_op_new_regexp(CTI_ARGS); 229 static JSValuePtr SFX_CALL cti_op_bitor(CTI_ARGS); 230 static JSValuePtr SFX_CALL cti_op_call_eval(CTI_ARGS); 231 static JSValuePtr SFX_CALL cti_op_throw(CTI_ARGS); 232 232 static JSPropertyNameIterator* SFX_CALL cti_op_get_pnames(CTI_ARGS); 233 static JSValue *SFX_CALL cti_op_next_pname(CTI_ARGS);233 static JSValuePtr SFX_CALL cti_op_next_pname(CTI_ARGS); 234 234 static void SFX_CALL cti_op_push_scope(CTI_ARGS); 235 235 static void SFX_CALL cti_op_pop_scope(CTI_ARGS); 236 static JSValue *SFX_CALL cti_op_typeof(CTI_ARGS);237 static JSValue *SFX_CALL cti_op_is_undefined(CTI_ARGS);238 static JSValue *SFX_CALL cti_op_is_boolean(CTI_ARGS);239 static JSValue *SFX_CALL cti_op_is_number(CTI_ARGS);240 static JSValue *SFX_CALL cti_op_is_string(CTI_ARGS);241 static JSValue *SFX_CALL cti_op_is_object(CTI_ARGS);242 static JSValue *SFX_CALL cti_op_is_function(CTI_ARGS);243 static JSValue *SFX_CALL cti_op_stricteq(CTI_ARGS);244 static JSValue *SFX_CALL cti_op_nstricteq(CTI_ARGS);245 static JSValue *SFX_CALL cti_op_to_jsnumber(CTI_ARGS);246 static JSValue *SFX_CALL cti_op_in(CTI_ARGS);247 static JSValue *SFX_CALL cti_op_push_new_scope(CTI_ARGS);236 static JSValuePtr SFX_CALL cti_op_typeof(CTI_ARGS); 237 static JSValuePtr SFX_CALL cti_op_is_undefined(CTI_ARGS); 238 static JSValuePtr SFX_CALL cti_op_is_boolean(CTI_ARGS); 239 static JSValuePtr SFX_CALL cti_op_is_number(CTI_ARGS); 240 static JSValuePtr SFX_CALL cti_op_is_string(CTI_ARGS); 241 static JSValuePtr SFX_CALL cti_op_is_object(CTI_ARGS); 242 static JSValuePtr SFX_CALL cti_op_is_function(CTI_ARGS); 243 static JSValuePtr SFX_CALL cti_op_stricteq(CTI_ARGS); 244 static JSValuePtr SFX_CALL cti_op_nstricteq(CTI_ARGS); 245 static JSValuePtr SFX_CALL cti_op_to_jsnumber(CTI_ARGS); 246 static JSValuePtr SFX_CALL cti_op_in(CTI_ARGS); 247 static JSValuePtr SFX_CALL cti_op_push_new_scope(CTI_ARGS); 248 248 static void SFX_CALL cti_op_jmp_scopes(CTI_ARGS); 249 249 static void SFX_CALL cti_op_put_by_index(CTI_ARGS); … … 251 251 static void* SFX_CALL cti_op_switch_char(CTI_ARGS); 252 252 static void* SFX_CALL cti_op_switch_string(CTI_ARGS); 253 static JSValue *SFX_CALL cti_op_del_by_val(CTI_ARGS);253 static JSValuePtr SFX_CALL cti_op_del_by_val(CTI_ARGS); 254 254 static void SFX_CALL cti_op_put_getter(CTI_ARGS); 255 255 static void SFX_CALL cti_op_put_setter(CTI_ARGS); 256 static JSValue *SFX_CALL cti_op_new_error(CTI_ARGS);256 static JSValuePtr SFX_CALL cti_op_new_error(CTI_ARGS); 257 257 static void SFX_CALL cti_op_debug(CTI_ARGS); 258 258 … … 260 260 static void SFX_CALL cti_op_ret_profiler(CTI_ARGS); 261 261 262 static JSValue *SFX_CALL cti_vm_throw(CTI_ARGS);262 static JSValuePtr SFX_CALL cti_vm_throw(CTI_ARGS); 263 263 static void* SFX_CALL cti_vm_compile(CTI_ARGS); 264 264 static void* SFX_CALL cti_vm_lazyLinkCall(CTI_ARGS); 265 static JSValue *SFX_CALL cti_op_push_activation(CTI_ARGS);265 static JSValuePtr SFX_CALL cti_op_push_activation(CTI_ARGS); 266 266 267 267 #endif // ENABLE(CTI) … … 270 270 static const int initialTickCountThreshold = 1024; 271 271 272 bool isJSArray(JSValue *v) { return !JSImmediate::isImmediate(v) && v->asCell()->vptr() == m_jsArrayVptr; }273 bool isJSString(JSValue *v) { return !JSImmediate::isImmediate(v) && v->asCell()->vptr() == m_jsStringVptr; }272 bool isJSArray(JSValuePtr v) { return !JSImmediate::isImmediate(v) && v->asCell()->vptr() == m_jsArrayVptr; } 273 bool isJSString(JSValuePtr v) { return !JSImmediate::isImmediate(v) && v->asCell()->vptr() == m_jsStringVptr; } 274 274 275 275 private: 276 276 enum ExecutionFlag { Normal, InitializeAndReturn }; 277 277 278 NEVER_INLINE JSValue * callEval(CallFrame*, JSObject* thisObject, ScopeChainNode*, RegisterFile*, int argv, int argc, JSValue*& exceptionValue);279 JSValue * execute(EvalNode*, CallFrame*, JSObject* thisObject, int registerOffset, ScopeChainNode*, JSValue** exception);278 NEVER_INLINE JSValuePtr callEval(CallFrame*, JSObject* thisObject, ScopeChainNode*, RegisterFile*, int argv, int argc, JSValuePtr& exceptionValue); 279 JSValuePtr execute(EvalNode*, CallFrame*, JSObject* thisObject, int registerOffset, ScopeChainNode*, JSValuePtr* exception); 280 280 281 281 NEVER_INLINE void debug(CallFrame*, DebugHookID, int firstLine, int lastLine); 282 282 283 NEVER_INLINE bool resolve(CallFrame*, Instruction*, JSValue *& exceptionValue);284 NEVER_INLINE bool resolveSkip(CallFrame*, Instruction*, JSValue *& exceptionValue);285 NEVER_INLINE bool resolveGlobal(CallFrame*, Instruction*, JSValue *& exceptionValue);283 NEVER_INLINE bool resolve(CallFrame*, Instruction*, JSValuePtr& exceptionValue); 284 NEVER_INLINE bool resolveSkip(CallFrame*, Instruction*, JSValuePtr& exceptionValue); 285 NEVER_INLINE bool resolveGlobal(CallFrame*, Instruction*, JSValuePtr& exceptionValue); 286 286 NEVER_INLINE void resolveBase(CallFrame*, Instruction* vPC); 287 NEVER_INLINE bool resolveBaseAndProperty(CallFrame*, Instruction*, JSValue *& exceptionValue);287 NEVER_INLINE bool resolveBaseAndProperty(CallFrame*, Instruction*, JSValuePtr& exceptionValue); 288 288 NEVER_INLINE ScopeChainNode* createExceptionScope(CallFrame*, const Instruction* vPC); 289 289 290 NEVER_INLINE bool unwindCallFrame(CallFrame*&, JSValue *, const Instruction*&, CodeBlock*&);291 NEVER_INLINE Instruction* throwException(CallFrame*&, JSValue *&, const Instruction*, bool);292 NEVER_INLINE bool resolveBaseAndFunc(CallFrame*, Instruction*, JSValue *& exceptionValue);290 NEVER_INLINE bool unwindCallFrame(CallFrame*&, JSValuePtr, const Instruction*&, CodeBlock*&); 291 NEVER_INLINE Instruction* throwException(CallFrame*&, JSValuePtr&, const Instruction*, bool); 292 NEVER_INLINE bool resolveBaseAndFunc(CallFrame*, Instruction*, JSValuePtr& exceptionValue); 293 293 294 294 static ALWAYS_INLINE CallFrame* slideRegisterWindowForCall(CodeBlock*, RegisterFile*, CallFrame*, size_t registerOffset, int argc); … … 296 296 static CallFrame* findFunctionCallFrame(CallFrame*, InternalFunction*); 297 297 298 JSValue * privateExecute(ExecutionFlag, RegisterFile*, CallFrame*, JSValue** exception);298 JSValuePtr privateExecute(ExecutionFlag, RegisterFile*, CallFrame*, JSValuePtr* exception); 299 299 300 300 void dumpCallFrame(const RegisterFile*, CallFrame*); 301 301 void dumpRegisters(const RegisterFile*, CallFrame*); 302 302 303 JSValue *checkTimeout(JSGlobalObject*);303 JSValuePtr checkTimeout(JSGlobalObject*); 304 304 void resetTimeoutCheck(); 305 305 306 void tryCacheGetByID(CallFrame*, CodeBlock*, Instruction*, JSValue *baseValue, const Identifier& propertyName, const PropertySlot&);306 void tryCacheGetByID(CallFrame*, CodeBlock*, Instruction*, JSValuePtr baseValue, const Identifier& propertyName, const PropertySlot&); 307 307 void uncacheGetByID(CodeBlock*, Instruction* vPC); 308 void tryCachePutByID(CallFrame*, CodeBlock*, Instruction*, JSValue *baseValue, const PutPropertySlot&);308 void tryCachePutByID(CallFrame*, CodeBlock*, Instruction*, JSValuePtr baseValue, const PutPropertySlot&); 309 309 void uncachePutByID(CodeBlock*, Instruction* vPC); 310 310 … … 312 312 static void throwStackOverflowPreviousFrame(CallFrame*, JSGlobalData*, void*& returnAddress); 313 313 314 void tryCTICacheGetByID(CallFrame*, CodeBlock*, void* returnAddress, JSValue *baseValue, const Identifier& propertyName, const PropertySlot&);315 void tryCTICachePutByID(CallFrame*, CodeBlock*, void* returnAddress, JSValue *baseValue, const PutPropertySlot&);314 void tryCTICacheGetByID(CallFrame*, CodeBlock*, void* returnAddress, JSValuePtr baseValue, const Identifier& propertyName, const PropertySlot&); 315 void tryCTICachePutByID(CallFrame*, CodeBlock*, void* returnAddress, JSValuePtr baseValue, const PutPropertySlot&); 316 316 317 317 void* getCTIArrayLengthTrampoline(CallFrame*, CodeBlock*);
Note:
See TracChangeset
for help on using the changeset viewer.