Changeset 37257 in webkit for trunk/JavaScriptCore/VM/Machine.cpp
- Timestamp:
- Oct 3, 2008, 2:39:16 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/VM/Machine.cpp
r37213 r37257 905 905 scopeChain = scopeChain->copy(); 906 906 907 ExecState newExec( exec,r);907 ExecState newExec(r); 908 908 909 909 Profiler** profiler = Profiler::enabledProfilerReference(); … … 915 915 if (!codeBlock->ctiCode) 916 916 CTI::compile(this, exec, codeBlock); 917 JSValue* result = CTI::execute(codeBlock->ctiCode, &newExec, &m_registerFile, r, exception);917 JSValue* result = CTI::execute(codeBlock->ctiCode, &newExec, &m_registerFile, r, &newExec.globalData(), exception); 918 918 #else 919 919 JSValue* result = privateExecute(Normal, &newExec, &m_registerFile, r, exception); … … 967 967 initializeCallFrame(r, codeBlock, 0, scopeChain, makeHostCallFramePointer(exec->m_callFrame), 0, argc, function); 968 968 969 ExecState newExec( exec,r);969 ExecState newExec(r); 970 970 971 971 Profiler** profiler = Profiler::enabledProfilerReference(); … … 977 977 if (!codeBlock->ctiCode) 978 978 CTI::compile(this, exec, codeBlock); 979 JSValue* result = CTI::execute(codeBlock->ctiCode, &newExec, &m_registerFile, r, exception);979 JSValue* result = CTI::execute(codeBlock->ctiCode, &newExec, &m_registerFile, r, &newExec.globalData(), exception); 980 980 #else 981 981 JSValue* result = privateExecute(Normal, &newExec, &m_registerFile, r, exception); … … 1053 1053 scopeChain = scopeChain->copy(); 1054 1054 1055 ExecState newExec( exec,r);1055 ExecState newExec(r); 1056 1056 1057 1057 Profiler** profiler = Profiler::enabledProfilerReference(); … … 1063 1063 if (!codeBlock->ctiCode) 1064 1064 CTI::compile(this, exec, codeBlock); 1065 JSValue* result = CTI::execute(codeBlock->ctiCode, &newExec, &m_registerFile, r, exception);1065 JSValue* result = CTI::execute(codeBlock->ctiCode, &newExec, &m_registerFile, r, &newExec.globalData(), exception); 1066 1066 #else 1067 1067 JSValue* result = privateExecute(Normal, &newExec, &m_registerFile, r, exception); … … 2817 2817 result = jsArray->JSArray::get(exec, i); 2818 2818 } else if (isJSString(baseValue) && static_cast<JSString*>(baseValue)->canGetIndex(i)) 2819 result = static_cast<JSString*>(baseValue)->getIndex( exec, i);2819 result = static_cast<JSString*>(baseValue)->getIndex(&exec->globalData(), i); 2820 2820 else 2821 2821 result = baseValue->get(exec, i); … … 3911 3911 3912 3912 function = caller; 3913 } 3914 3915 const Register* Machine::firstCallFrame(const Register* callFrame) 3916 { 3917 const Register* first = 0; 3918 for (const Register* frame = callFrame; frame; frame = stripHostCallFrameBit(frame[RegisterFile::CallerRegisters].r())) 3919 first = frame; 3920 return first; 3913 3921 } 3914 3922 … … 4206 4214 JSValue* v2 = ARG_src2; 4207 4215 4208 ExecState* exec = ARG_exec;4209 4216 double left; 4210 4217 double right = 0.0; … … 4212 4219 bool rightIsNumber = fastIsNumber(v2, right); 4213 4220 if (rightIsNumber && fastIsNumber(v1, left)) 4214 return jsNumber( exec, left + right);4221 return jsNumber(ARG_globalData, left + right); 4215 4222 4223 ExecState* exec = ARG_exec; 4224 4216 4225 bool leftIsString = v1->isString(); 4217 4226 if (leftIsString && v2->isString()) { … … 4223 4232 } 4224 4233 4225 return jsString( exec, value.release());4234 return jsString(ARG_globalData, value.release()); 4226 4235 } 4227 4236 … … 4236 4245 return result; 4237 4246 } 4238 return jsString( exec, value.release());4247 return jsString(ARG_globalData, value.release()); 4239 4248 } 4240 4249 … … 4259 4268 ExecState* exec = ARG_exec; 4260 4269 4261 if ( exec->machine()->checkTimeout(exec->dynamicGlobalObject()))4270 if (ARG_globalData->machine->checkTimeout(exec->dynamicGlobalObject())) 4262 4271 exec->setException(createInterruptedExecutionException(exec)); 4263 4272 4264 4273 VM_CHECK_EXCEPTION_AT_END(); 4265 4274 } 4266 4267 4275 4268 4276 int Machine::cti_op_loop_if_less(CTI_ARGS) … … 4316 4324 4317 4325 Register* r = ARG_r; 4318 exec->machine()->tryCTICachePutByID(exec, codeBlock(r), CTI_RETURN_ADDRESS, baseValue, slot);4326 ARG_globalData->machine->tryCTICachePutByID(exec, codeBlock(r), CTI_RETURN_ADDRESS, baseValue, slot); 4319 4327 4320 4328 VM_CHECK_EXCEPTION_AT_END(); … … 4371 4379 4372 4380 Register* r = ARG_r; 4373 exec->machine()->tryCTICacheGetByID(exec, codeBlock(r), CTI_RETURN_ADDRESS, baseValue, ident, slot);4381 ARG_globalData->machine->tryCTICacheGetByID(exec, codeBlock(r), CTI_RETURN_ADDRESS, baseValue, ident, slot); 4374 4382 4375 4383 VM_CHECK_EXCEPTION_AT_END(); … … 4461 4469 JSValue* Machine::cti_op_mul(CTI_ARGS) 4462 4470 { 4463 ExecState* exec = ARG_exec;4464 4471 JSValue* src1 = ARG_src1; 4465 4472 JSValue* src2 = ARG_src2; … … 4468 4475 double right; 4469 4476 if (fastIsNumber(src1, left) && fastIsNumber(src2, right)) 4470 return jsNumber( exec, left * right);4471 else { 4472 JSValue* result = jsNumber(exec, src1->toNumber(exec) * src2->toNumber(exec));4473 VM_CHECK_EXCEPTION_AT_END();4474 return result;4475 }4477 return jsNumber(ARG_globalData, left * right); 4478 4479 ExecState* exec = ARG_exec; 4480 JSValue* result = jsNumber(ARG_globalData, src1->toNumber(exec) * src2->toNumber(exec)); 4481 VM_CHECK_EXCEPTION_AT_END(); 4482 return result; 4476 4483 } 4477 4484 … … 4535 4542 4536 4543 if (!codeBlock->ctiCode) 4537 CTI::compile( exec->machine(), exec, codeBlock);4544 CTI::compile(ARG_globalData->machine, exec, codeBlock); 4538 4545 4539 4546 return codeBlock->ctiCode; … … 4780 4787 { 4781 4788 ExecState* exec = ARG_exec; 4782 Machine* machine = exec->machine();4789 Machine* machine = ARG_globalData->machine; 4783 4790 4784 4791 JSValue* baseValue = ARG_src1; … … 4797 4804 result = jsArray->JSArray::get(exec, i); 4798 4805 } else if (machine->isJSString(baseValue) && static_cast<JSString*>(baseValue)->canGetIndex(i)) 4799 result = static_cast<JSString*>(baseValue)->getIndex( exec, i);4806 result = static_cast<JSString*>(baseValue)->getIndex(ARG_globalData, i); 4800 4807 else 4801 4808 result = baseValue->get(exec, i); … … 4862 4869 double right; 4863 4870 if (fastIsNumber(src1, left) && fastIsNumber(src2, right)) 4864 return jsNumber(ARG_exec, left - right); 4865 else { 4866 ExecState* exec = ARG_exec; 4867 JSValue* result = jsNumber(exec, src1->toNumber(exec) - src2->toNumber(exec)); 4868 VM_CHECK_EXCEPTION_AT_END(); 4869 return result; 4870 } 4871 return jsNumber(ARG_globalData, left - right); 4872 4873 ExecState* exec = ARG_exec; 4874 JSValue* result = jsNumber(ARG_globalData, src1->toNumber(exec) - src2->toNumber(exec)); 4875 VM_CHECK_EXCEPTION_AT_END(); 4876 return result; 4871 4877 } 4872 4878 … … 4874 4880 { 4875 4881 ExecState* exec = ARG_exec; 4876 Machine* machine = exec->machine();4882 Machine* machine = ARG_globalData->machine; 4877 4883 4878 4884 JSValue* baseValue = ARG_src1; … … 4911 4917 JSValue* value = ARG_src3; 4912 4918 4913 ASSERT( exec->machine()->isJSArray(baseValue));4919 ASSERT(ARG_globalData->machine->isJSArray(baseValue)); 4914 4920 4915 4921 if (LIKELY(i >= 0)) … … 4950 4956 JSValue* src = ARG_src1; 4951 4957 4952 ExecState* exec = ARG_exec;4953 4954 4958 double v; 4955 4959 if (fastIsNumber(src, v)) 4956 return jsNumber( exec, -v);4957 else { 4958 JSValue* result = jsNumber(exec, -src->toNumber(exec));4959 VM_CHECK_EXCEPTION_AT_END();4960 return result;4961 }4960 return jsNumber(ARG_globalData, -v); 4961 4962 ExecState* exec = ARG_exec; 4963 JSValue* result = jsNumber(ARG_globalData, -src->toNumber(exec)); 4964 VM_CHECK_EXCEPTION_AT_END(); 4965 return result; 4962 4966 } 4963 4967 … … 5035 5039 JSValue* Machine::cti_op_div(CTI_ARGS) 5036 5040 { 5037 ExecState* exec = ARG_exec;5038 5041 JSValue* src1 = ARG_src1; 5039 5042 JSValue* src2 = ARG_src2; … … 5042 5045 double right; 5043 5046 if (fastIsNumber(src1, left) && fastIsNumber(src2, right)) 5044 return jsNumber( exec, left / right);5045 else { 5046 JSValue* result = jsNumber(exec, src1->toNumber(exec) / src2->toNumber(exec));5047 VM_CHECK_EXCEPTION_AT_END();5048 return result;5049 }5047 return jsNumber(ARG_globalData, left / right); 5048 5049 ExecState* exec = ARG_exec; 5050 JSValue* result = jsNumber(ARG_globalData, src1->toNumber(exec) / src2->toNumber(exec)); 5051 VM_CHECK_EXCEPTION_AT_END(); 5052 return result; 5050 5053 } 5051 5054 … … 5055 5058 5056 5059 ExecState* exec = ARG_exec; 5057 JSValue* result = jsNumber( exec, v->toNumber(exec) - 1);5060 JSValue* result = jsNumber(ARG_globalData, v->toNumber(exec) - 1); 5058 5061 VM_CHECK_EXCEPTION_AT_END(); 5059 5062 return result; … … 5101 5104 JSValue* number = v->toJSNumber(exec); 5102 5105 VM_CHECK_EXCEPTION(JSValue*); 5103 ARG_set2ndResult(jsNumber( exec, number->uncheckedGetNumber() + 1));5106 ARG_set2ndResult(jsNumber(ARG_globalData, number->uncheckedGetNumber() + 1)); 5104 5107 return number; 5105 5108 } … … 5123 5126 JSValue* shift = ARG_src2; 5124 5127 5125 ExecState* exec = ARG_exec;5126 5127 5128 int32_t left; 5128 5129 uint32_t right; 5129 5130 if (JSImmediate::areBothImmediateNumbers(val, shift)) 5130 return jsNumber( exec, JSImmediate::getTruncatedInt32(val) << (JSImmediate::getTruncatedUInt32(shift) & 0x1f));5131 elseif (fastToInt32(val, left) && fastToUInt32(shift, right))5132 return jsNumber( exec, left << (right & 0x1f));5133 else { 5134 JSValue* result = jsNumber(exec, (val->toInt32(exec)) << (shift->toUInt32(exec) & 0x1f));5135 VM_CHECK_EXCEPTION_AT_END();5136 return result;5137 }5131 return jsNumber(ARG_globalData, JSImmediate::getTruncatedInt32(val) << (JSImmediate::getTruncatedUInt32(shift) & 0x1f)); 5132 if (fastToInt32(val, left) && fastToUInt32(shift, right)) 5133 return jsNumber(ARG_globalData, left << (right & 0x1f)); 5134 5135 ExecState* exec = ARG_exec; 5136 JSValue* result = jsNumber(ARG_globalData, (val->toInt32(exec)) << (shift->toUInt32(exec) & 0x1f)); 5137 VM_CHECK_EXCEPTION_AT_END(); 5138 return result; 5138 5139 } 5139 5140 … … 5142 5143 JSValue* src1 = ARG_src1; 5143 5144 JSValue* src2 = ARG_src2; 5144 5145 ExecState* exec = ARG_exec;5146 5145 5147 5146 int32_t left; 5148 5147 int32_t right; 5149 5148 if (fastToInt32(src1, left) && fastToInt32(src2, right)) 5150 return jsNumber( exec, left & right);5151 else { 5152 JSValue* result = jsNumber(exec, src1->toInt32(exec) & src2->toInt32(exec));5153 VM_CHECK_EXCEPTION_AT_END();5154 return result;5155 }5149 return jsNumber(ARG_globalData, left & right); 5150 5151 ExecState* exec = ARG_exec; 5152 JSValue* result = jsNumber(ARG_globalData, src1->toInt32(exec) & src2->toInt32(exec)); 5153 VM_CHECK_EXCEPTION_AT_END(); 5154 return result; 5156 5155 } 5157 5156 … … 5160 5159 JSValue* val = ARG_src1; 5161 5160 JSValue* shift = ARG_src2; 5162 5163 ExecState* exec = ARG_exec;5164 5161 5165 5162 int32_t left; … … 5167 5164 if (JSImmediate::areBothImmediateNumbers(val, shift)) 5168 5165 return JSImmediate::rightShiftImmediateNumbers(val, shift); 5169 elseif (fastToInt32(val, left) && fastToUInt32(shift, right))5170 return jsNumber( exec, left >> (right & 0x1f));5171 else { 5172 JSValue* result = jsNumber(exec, (val->toInt32(exec)) >> (shift->toUInt32(exec) & 0x1f));5173 VM_CHECK_EXCEPTION_AT_END();5174 return result;5175 }5166 if (fastToInt32(val, left) && fastToUInt32(shift, right)) 5167 return jsNumber(ARG_globalData, left >> (right & 0x1f)); 5168 5169 ExecState* exec = ARG_exec; 5170 JSValue* result = jsNumber(ARG_globalData, (val->toInt32(exec)) >> (shift->toUInt32(exec) & 0x1f)); 5171 VM_CHECK_EXCEPTION_AT_END(); 5172 return result; 5176 5173 } 5177 5174 … … 5179 5176 { 5180 5177 JSValue* src = ARG_src1; 5181 5182 ExecState* exec = ARG_exec;5183 5178 5184 5179 int value; 5185 5180 if (fastToInt32(src, value)) 5186 return jsNumber( exec, ~value);5181 return jsNumber(ARG_globalData, ~value); 5187 5182 5188 JSValue* result = jsNumber(exec, ~src->toInt32(exec)); 5183 ExecState* exec = ARG_exec; 5184 JSValue* result = jsNumber(ARG_globalData, ~src->toInt32(exec)); 5189 5185 VM_CHECK_EXCEPTION_AT_END(); 5190 5186 return result; … … 5239 5235 ExecState* exec = ARG_exec; 5240 5236 double d = dividendValue->toNumber(exec); 5241 JSValue* result = jsNumber( exec, fmod(d, divisorValue->toNumber(exec)));5237 JSValue* result = jsNumber(ARG_globalData, fmod(d, divisorValue->toNumber(exec))); 5242 5238 VM_CHECK_EXCEPTION_AT_END(); 5243 5239 return result; … … 5274 5270 VM_CHECK_EXCEPTION(JSValue*); 5275 5271 5276 ARG_set2ndResult(jsNumber( exec, number->uncheckedGetNumber() - 1));5272 ARG_set2ndResult(jsNumber(ARG_globalData, number->uncheckedGetNumber() - 1)); 5277 5273 return number; 5278 5274 } … … 5288 5284 return JSImmediate::rightShiftImmediateNumbers(val, shift); 5289 5285 else { 5290 JSValue* result = jsNumber( exec, (val->toUInt32(exec)) >> (shift->toUInt32(exec) & 0x1f));5286 JSValue* result = jsNumber(ARG_globalData, (val->toUInt32(exec)) >> (shift->toUInt32(exec) & 0x1f)); 5291 5287 VM_CHECK_EXCEPTION_AT_END(); 5292 5288 return result; … … 5301 5297 ExecState* exec = ARG_exec; 5302 5298 5303 JSValue* result = jsNumber( exec, src1->toInt32(exec) ^ src2->toInt32(exec));5299 JSValue* result = jsNumber(ARG_globalData, src1->toInt32(exec) ^ src2->toInt32(exec)); 5304 5300 VM_CHECK_EXCEPTION_AT_END(); 5305 5301 return result; … … 5318 5314 ExecState* exec = ARG_exec; 5319 5315 5320 JSValue* result = jsNumber( exec, src1->toInt32(exec) | src2->toInt32(exec));5316 JSValue* result = jsNumber(ARG_globalData, src1->toInt32(exec) | src2->toInt32(exec)); 5321 5317 VM_CHECK_EXCEPTION_AT_END(); 5322 5318 return result; … … 5331 5327 ScopeChainNode* scopeChain = Machine::scopeChain(r); 5332 5328 5333 Machine* machine = exec->machine();5329 Machine* machine = ARG_globalData->machine; 5334 5330 5335 5331 JSValue* funcVal = ARG_src1; … … 5359 5355 5360 5356 JSValue* exceptionValue = ARG_src1; 5361 Instruction* handlerVPC = ARG_ exec->machine()->throwException(exec, exceptionValue, codeBlock->instructions.begin() + vPCIndex, r, true);5357 Instruction* handlerVPC = ARG_globalData->machine->throwException(exec, exceptionValue, codeBlock->instructions.begin() + vPCIndex, r, true); 5362 5358 5363 5359 if (handlerVPC) { … … 5431 5427 JSValue* Machine::cti_op_is_string(CTI_ARGS) 5432 5428 { 5433 return jsBoolean(ARG_ exec->machine()->isJSString(ARG_src1));5429 return jsBoolean(ARG_globalData->machine->isJSString(ARG_src1)); 5434 5430 } 5435 5431 … … 5649 5645 int lastLine = ARG_int3; 5650 5646 5651 exec->machine()->debug(exec, r, static_cast<DebugHookID>(debugHookID), firstLine, lastLine);5647 ARG_globalData->machine->debug(exec, r, static_cast<DebugHookID>(debugHookID), firstLine, lastLine); 5652 5648 } 5653 5649 … … 5665 5661 JSValue* exceptionValue = exec->exception(); 5666 5662 5667 Instruction* handlerVPC = ARG_ exec->machine()->throwException(exec, exceptionValue, codeBlock->instructions.begin() + vPCIndex, r, false);5663 Instruction* handlerVPC = ARG_globalData->machine->throwException(exec, exceptionValue, codeBlock->instructions.begin() + vPCIndex, r, false); 5668 5664 5669 5665 if (handlerVPC) {
Note:
See TracChangeset
for help on using the changeset viewer.