Changeset 68347 in webkit for trunk/JavaScriptCore/runtime/DateConstructor.cpp
- Timestamp:
- Sep 26, 2010, 2:26:24 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/runtime/DateConstructor.cpp
r60708 r68347 91 91 } 92 92 } else { 93 if (isnan(args.at(0).toNumber(exec)) 94 || isnan(args.at(1).toNumber(exec)) 95 || (numArgs >= 3 && isnan(args.at(2).toNumber(exec))) 96 || (numArgs >= 4 && isnan(args.at(3).toNumber(exec))) 97 || (numArgs >= 5 && isnan(args.at(4).toNumber(exec))) 98 || (numArgs >= 6 && isnan(args.at(5).toNumber(exec))) 99 || (numArgs >= 7 && isnan(args.at(6).toNumber(exec)))) 93 double doubleArguments[7] = { 94 args.at(0).toNumber(exec), 95 args.at(1).toNumber(exec), 96 args.at(2).toNumber(exec), 97 args.at(3).toNumber(exec), 98 args.at(4).toNumber(exec), 99 args.at(5).toNumber(exec), 100 args.at(6).toNumber(exec) 101 }; 102 if (isnan(doubleArguments[0]) 103 || isnan(doubleArguments[1]) 104 || (numArgs >= 3 && isnan(doubleArguments[2])) 105 || (numArgs >= 4 && isnan(doubleArguments[3])) 106 || (numArgs >= 5 && isnan(doubleArguments[4])) 107 || (numArgs >= 6 && isnan(doubleArguments[5])) 108 || (numArgs >= 7 && isnan(doubleArguments[6]))) 100 109 value = NaN; 101 110 else { 102 111 GregorianDateTime t; 103 int year = args.at(0).toInt32(exec);112 int year = JSC::toInt32(doubleArguments[0]); 104 113 t.year = (year >= 0 && year <= 99) ? year : year - 1900; 105 t.month = args.at(1).toInt32(exec);106 t.monthDay = (numArgs >= 3) ? args.at(2).toInt32(exec) : 1;107 t.hour = args.at(3).toInt32(exec);108 t.minute = args.at(4).toInt32(exec);109 t.second = args.at(5).toInt32(exec);114 t.month = JSC::toInt32(doubleArguments[1]); 115 t.monthDay = (numArgs >= 3) ? JSC::toInt32(doubleArguments[2]) : 1; 116 t.hour = JSC::toInt32(doubleArguments[3]); 117 t.minute = JSC::toInt32(doubleArguments[4]); 118 t.second = JSC::toInt32(doubleArguments[5]); 110 119 t.isDST = -1; 111 double ms = (numArgs >= 7) ? args.at(6).toNumber(exec): 0;120 double ms = (numArgs >= 7) ? doubleArguments[6] : 0; 112 121 value = gregorianDateTimeToMS(exec, t, ms, false); 113 122 } … … 161 170 static EncodedJSValue JSC_HOST_CALL dateUTC(ExecState* exec) 162 171 { 172 double doubleArguments[7] = { 173 exec->argument(0).toNumber(exec), 174 exec->argument(1).toNumber(exec), 175 exec->argument(2).toNumber(exec), 176 exec->argument(3).toNumber(exec), 177 exec->argument(4).toNumber(exec), 178 exec->argument(5).toNumber(exec), 179 exec->argument(6).toNumber(exec) 180 }; 163 181 int n = exec->argumentCount(); 164 if (isnan( exec->argument(0).toNumber(exec))165 || isnan( exec->argument(1).toNumber(exec))166 || (n >= 3 && isnan( exec->argument(2).toNumber(exec)))167 || (n >= 4 && isnan( exec->argument(3).toNumber(exec)))168 || (n >= 5 && isnan( exec->argument(4).toNumber(exec)))169 || (n >= 6 && isnan( exec->argument(5).toNumber(exec)))170 || (n >= 7 && isnan( exec->argument(6).toNumber(exec))))182 if (isnan(doubleArguments[0]) 183 || isnan(doubleArguments[1]) 184 || (n >= 3 && isnan(doubleArguments[2])) 185 || (n >= 4 && isnan(doubleArguments[3])) 186 || (n >= 5 && isnan(doubleArguments[4])) 187 || (n >= 6 && isnan(doubleArguments[5])) 188 || (n >= 7 && isnan(doubleArguments[6]))) 171 189 return JSValue::encode(jsNaN(exec)); 172 190 173 191 GregorianDateTime t; 174 int year = exec->argument(0).toInt32(exec);192 int year = JSC::toInt32(doubleArguments[0]); 175 193 t.year = (year >= 0 && year <= 99) ? year : year - 1900; 176 t.month = exec->argument(1).toInt32(exec);177 t.monthDay = (n >= 3) ? exec->argument(2).toInt32(exec) : 1;178 t.hour = exec->argument(3).toInt32(exec);179 t.minute = exec->argument(4).toInt32(exec);180 t.second = exec->argument(5).toInt32(exec);181 double ms = (n >= 7) ? exec->argument(6).toNumber(exec): 0;194 t.month = JSC::toInt32(doubleArguments[1]); 195 t.monthDay = (n >= 3) ? JSC::toInt32(doubleArguments[2]) : 1; 196 t.hour = JSC::toInt32(doubleArguments[3]); 197 t.minute = JSC::toInt32(doubleArguments[4]); 198 t.second = JSC::toInt32(doubleArguments[5]); 199 double ms = (n >= 7) ? doubleArguments[6] : 0; 182 200 return JSValue::encode(jsNumber(exec, timeClip(gregorianDateTimeToMS(exec, t, ms, true)))); 183 201 }
Note:
See TracChangeset
for help on using the changeset viewer.