Changeset 41168 in webkit for trunk/JavaScriptCore/interpreter/Interpreter.cpp
- Timestamp:
- Feb 23, 2009, 7:58:09 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/interpreter/Interpreter.cpp
r41126 r41168 348 348 Interpreter::Interpreter() 349 349 : m_sampler(0) 350 #if ENABLE(JIT)351 , m_ctiArrayLengthTrampoline(0)352 , m_ctiStringLengthTrampoline(0)353 , m_ctiVirtualCallPreLink(0)354 , m_ctiVirtualCallLink(0)355 , m_ctiVirtualCall(0)356 #endif357 350 , m_reentryDepth(0) 358 351 { 359 352 privateExecute(InitializeAndReturn, 0, 0, 0); 360 361 // Bizarrely, calling fastMalloc here is faster than allocating space on the stack.362 void* storage = fastMalloc(sizeof(CollectorBlock));363 364 JSCell* jsArray = new (storage) JSArray(JSArray::createStructure(jsNull()));365 m_jsArrayVptr = jsArray->vptr();366 jsArray->~JSCell();367 368 JSCell* jsByteArray = new (storage) JSByteArray(JSByteArray::VPtrStealingHack);369 m_jsByteArrayVptr = jsByteArray->vptr();370 jsByteArray->~JSCell();371 372 JSCell* jsString = new (storage) JSString(JSString::VPtrStealingHack);373 m_jsStringVptr = jsString->vptr();374 jsString->~JSCell();375 376 JSCell* jsFunction = new (storage) JSFunction(JSFunction::createStructure(jsNull()));377 m_jsFunctionVptr = jsFunction->vptr();378 jsFunction->~JSCell();379 380 fastFree(storage);381 }382 383 void Interpreter::initialize(JSGlobalData* globalData)384 {385 #if ENABLE(JIT)386 JIT::compileCTIMachineTrampolines(globalData);387 #else388 UNUSED_PARAM(globalData);389 #endif390 }391 392 Interpreter::~Interpreter()393 {394 353 } 395 354 … … 963 922 } 964 923 965 if (isJSArray(baseValue) && propertyName == callFrame->propertyNames().length) { 924 JSGlobalData* globalData = &callFrame->globalData(); 925 if (isJSArray(globalData, baseValue) && propertyName == callFrame->propertyNames().length) { 966 926 vPC[0] = getOpcode(op_get_array_length); 967 927 return; 968 928 } 969 929 970 if (isJSString( baseValue) && propertyName == callFrame->propertyNames().length) {930 if (isJSString(globalData, baseValue) && propertyName == callFrame->propertyNames().length) { 971 931 vPC[0] = getOpcode(op_get_string_length); 972 932 return; … … 2274 2234 int base = vPC[2].u.operand; 2275 2235 JSValuePtr baseValue = callFrame[base].jsValue(callFrame); 2276 if (LIKELY(isJSArray( baseValue))) {2236 if (LIKELY(isJSArray(globalData, baseValue))) { 2277 2237 int dst = vPC[1].u.operand; 2278 2238 callFrame[dst] = JSValuePtr(jsNumber(callFrame, asArray(baseValue)->length())); … … 2294 2254 int base = vPC[2].u.operand; 2295 2255 JSValuePtr baseValue = callFrame[base].jsValue(callFrame); 2296 if (LIKELY(isJSString( baseValue))) {2256 if (LIKELY(isJSString(globalData, baseValue))) { 2297 2257 int dst = vPC[1].u.operand; 2298 2258 callFrame[dst] = JSValuePtr(jsNumber(callFrame, asString(baseValue)->value().size())); … … 2476 2436 if (LIKELY(subscript.isUInt32Fast())) { 2477 2437 uint32_t i = subscript.getUInt32Fast(); 2478 if (isJSArray( baseValue)) {2438 if (isJSArray(globalData, baseValue)) { 2479 2439 JSArray* jsArray = asArray(baseValue); 2480 2440 if (jsArray->canGetIndex(i)) … … 2482 2442 else 2483 2443 result = jsArray->JSArray::get(callFrame, i); 2484 } else if (isJSString( baseValue) && asString(baseValue)->canGetIndex(i))2444 } else if (isJSString(globalData, baseValue) && asString(baseValue)->canGetIndex(i)) 2485 2445 result = asString(baseValue)->getIndex(&callFrame->globalData(), i); 2486 else if (isJSByteArray( baseValue) && asByteArray(baseValue)->canAccessIndex(i))2446 else if (isJSByteArray(globalData, baseValue) && asByteArray(baseValue)->canAccessIndex(i)) 2487 2447 result = asByteArray(baseValue)->getIndex(callFrame, i); 2488 2448 else … … 2518 2478 if (LIKELY(subscript.isUInt32Fast())) { 2519 2479 uint32_t i = subscript.getUInt32Fast(); 2520 if (isJSArray( baseValue)) {2480 if (isJSArray(globalData, baseValue)) { 2521 2481 JSArray* jsArray = asArray(baseValue); 2522 2482 if (jsArray->canSetIndex(i)) … … 2524 2484 else 2525 2485 jsArray->JSArray::put(callFrame, i, callFrame[value].jsValue(callFrame)); 2526 } else if (isJSByteArray( baseValue) && asByteArray(baseValue)->canAccessIndex(i)) {2486 } else if (isJSByteArray(globalData, baseValue) && asByteArray(baseValue)->canAccessIndex(i)) { 2527 2487 JSByteArray* jsByteArray = asByteArray(baseValue); 2528 2488 double dValue = 0;
Note:
See TracChangeset
for help on using the changeset viewer.