OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/interpreter/interpreter.h" | 5 #include "src/interpreter/interpreter.h" |
6 | 6 |
7 #include "src/code-factory.h" | 7 #include "src/code-factory.h" |
8 #include "src/compiler.h" | 8 #include "src/compiler.h" |
9 #include "src/compiler/interpreter-assembler.h" | 9 #include "src/compiler/interpreter-assembler.h" |
10 #include "src/factory.h" | 10 #include "src/factory.h" |
(...skipping 1164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1175 | 1175 |
1176 // Jump <imm8> | 1176 // Jump <imm8> |
1177 // | 1177 // |
1178 // Jump by number of bytes represented by the immediate operand |imm8|. | 1178 // Jump by number of bytes represented by the immediate operand |imm8|. |
1179 void Interpreter::DoJump(compiler::InterpreterAssembler* assembler) { | 1179 void Interpreter::DoJump(compiler::InterpreterAssembler* assembler) { |
1180 Node* relative_jump = __ BytecodeOperandImm(0); | 1180 Node* relative_jump = __ BytecodeOperandImm(0); |
1181 __ Jump(relative_jump); | 1181 __ Jump(relative_jump); |
1182 } | 1182 } |
1183 | 1183 |
1184 | 1184 |
1185 // JumpConstant <idx> | 1185 // JumpConstant <idx8> |
1186 // | 1186 // |
1187 // Jump by number of bytes in the Smi in the |idx| entry in the constant pool. | 1187 // Jump by number of bytes in the Smi in the |idx8| entry in the constant pool. |
1188 void Interpreter::DoJumpConstant(compiler::InterpreterAssembler* assembler) { | 1188 void Interpreter::DoJumpConstant(compiler::InterpreterAssembler* assembler) { |
1189 Node* index = __ BytecodeOperandIdx(0); | 1189 Node* index = __ BytecodeOperandIdx(0); |
1190 Node* constant = __ LoadConstantPoolEntry(index); | 1190 Node* constant = __ LoadConstantPoolEntry(index); |
1191 Node* relative_jump = __ SmiUntag(constant); | 1191 Node* relative_jump = __ SmiUntag(constant); |
1192 __ Jump(relative_jump); | 1192 __ Jump(relative_jump); |
1193 } | 1193 } |
1194 | 1194 |
1195 | 1195 |
| 1196 // JumpConstantWide <idx16> |
| 1197 // |
| 1198 // Jump by number of bytes in the Smi in the |idx16| entry in the |
| 1199 // constant pool. |
| 1200 void Interpreter::DoJumpConstantWide( |
| 1201 compiler::InterpreterAssembler* assembler) { |
| 1202 DoJumpConstant(assembler); |
| 1203 } |
| 1204 |
| 1205 |
1196 // JumpIfTrue <imm8> | 1206 // JumpIfTrue <imm8> |
1197 // | 1207 // |
1198 // Jump by number of bytes represented by an immediate operand if the | 1208 // Jump by number of bytes represented by an immediate operand if the |
1199 // accumulator contains true. | 1209 // accumulator contains true. |
1200 void Interpreter::DoJumpIfTrue(compiler::InterpreterAssembler* assembler) { | 1210 void Interpreter::DoJumpIfTrue(compiler::InterpreterAssembler* assembler) { |
1201 Node* accumulator = __ GetAccumulator(); | 1211 Node* accumulator = __ GetAccumulator(); |
1202 Node* relative_jump = __ BytecodeOperandImm(0); | 1212 Node* relative_jump = __ BytecodeOperandImm(0); |
1203 Node* true_value = __ BooleanConstant(true); | 1213 Node* true_value = __ BooleanConstant(true); |
1204 __ JumpIfWordEqual(accumulator, true_value, relative_jump); | 1214 __ JumpIfWordEqual(accumulator, true_value, relative_jump); |
1205 } | 1215 } |
1206 | 1216 |
1207 | 1217 |
1208 // JumpIfTrueConstant <idx> | 1218 // JumpIfTrueConstant <idx8> |
1209 // | 1219 // |
1210 // Jump by number of bytes in the Smi in the |idx| entry in the constant pool | 1220 // Jump by number of bytes in the Smi in the |idx8| entry in the constant pool |
1211 // if the accumulator contains true. | 1221 // if the accumulator contains true. |
1212 void Interpreter::DoJumpIfTrueConstant( | 1222 void Interpreter::DoJumpIfTrueConstant( |
1213 compiler::InterpreterAssembler* assembler) { | 1223 compiler::InterpreterAssembler* assembler) { |
1214 Node* accumulator = __ GetAccumulator(); | 1224 Node* accumulator = __ GetAccumulator(); |
1215 Node* index = __ BytecodeOperandIdx(0); | 1225 Node* index = __ BytecodeOperandIdx(0); |
1216 Node* constant = __ LoadConstantPoolEntry(index); | 1226 Node* constant = __ LoadConstantPoolEntry(index); |
1217 Node* relative_jump = __ SmiUntag(constant); | 1227 Node* relative_jump = __ SmiUntag(constant); |
1218 Node* true_value = __ BooleanConstant(true); | 1228 Node* true_value = __ BooleanConstant(true); |
1219 __ JumpIfWordEqual(accumulator, true_value, relative_jump); | 1229 __ JumpIfWordEqual(accumulator, true_value, relative_jump); |
1220 } | 1230 } |
1221 | 1231 |
1222 | 1232 |
| 1233 // JumpIfTrueConstantWide <idx16> |
| 1234 // |
| 1235 // Jump by number of bytes in the Smi in the |idx16| entry in the constant pool |
| 1236 // if the accumulator contains true. |
| 1237 void Interpreter::DoJumpIfTrueConstantWide( |
| 1238 compiler::InterpreterAssembler* assembler) { |
| 1239 DoJumpIfTrueConstant(assembler); |
| 1240 } |
| 1241 |
| 1242 |
1223 // JumpIfFalse <imm8> | 1243 // JumpIfFalse <imm8> |
1224 // | 1244 // |
1225 // Jump by number of bytes represented by an immediate operand if the | 1245 // Jump by number of bytes represented by an immediate operand if the |
1226 // accumulator contains false. | 1246 // accumulator contains false. |
1227 void Interpreter::DoJumpIfFalse(compiler::InterpreterAssembler* assembler) { | 1247 void Interpreter::DoJumpIfFalse(compiler::InterpreterAssembler* assembler) { |
1228 Node* accumulator = __ GetAccumulator(); | 1248 Node* accumulator = __ GetAccumulator(); |
1229 Node* relative_jump = __ BytecodeOperandImm(0); | 1249 Node* relative_jump = __ BytecodeOperandImm(0); |
1230 Node* false_value = __ BooleanConstant(false); | 1250 Node* false_value = __ BooleanConstant(false); |
1231 __ JumpIfWordEqual(accumulator, false_value, relative_jump); | 1251 __ JumpIfWordEqual(accumulator, false_value, relative_jump); |
1232 } | 1252 } |
1233 | 1253 |
1234 | 1254 |
1235 // JumpIfFalseConstant <idx> | 1255 // JumpIfFalseConstant <idx8> |
1236 // | 1256 // |
1237 // Jump by number of bytes in the Smi in the |idx| entry in the constant pool | 1257 // Jump by number of bytes in the Smi in the |idx8| entry in the constant pool |
1238 // if the accumulator contains false. | 1258 // if the accumulator contains false. |
1239 void Interpreter::DoJumpIfFalseConstant( | 1259 void Interpreter::DoJumpIfFalseConstant( |
1240 compiler::InterpreterAssembler* assembler) { | 1260 compiler::InterpreterAssembler* assembler) { |
1241 Node* accumulator = __ GetAccumulator(); | 1261 Node* accumulator = __ GetAccumulator(); |
1242 Node* index = __ BytecodeOperandIdx(0); | 1262 Node* index = __ BytecodeOperandIdx(0); |
1243 Node* constant = __ LoadConstantPoolEntry(index); | 1263 Node* constant = __ LoadConstantPoolEntry(index); |
1244 Node* relative_jump = __ SmiUntag(constant); | 1264 Node* relative_jump = __ SmiUntag(constant); |
1245 Node* false_value = __ BooleanConstant(false); | 1265 Node* false_value = __ BooleanConstant(false); |
1246 __ JumpIfWordEqual(accumulator, false_value, relative_jump); | 1266 __ JumpIfWordEqual(accumulator, false_value, relative_jump); |
1247 } | 1267 } |
1248 | 1268 |
1249 | 1269 |
| 1270 // JumpIfFalseConstant <idx16> |
| 1271 // |
| 1272 // Jump by number of bytes in the Smi in the |idx16| entry in the constant pool |
| 1273 // if the accumulator contains false. |
| 1274 void Interpreter::DoJumpIfFalseConstantWide( |
| 1275 compiler::InterpreterAssembler* assembler) { |
| 1276 DoJumpIfFalseConstant(assembler); |
| 1277 } |
| 1278 |
| 1279 |
1250 // JumpIfToBooleanTrue <imm8> | 1280 // JumpIfToBooleanTrue <imm8> |
1251 // | 1281 // |
1252 // Jump by number of bytes represented by an immediate operand if the object | 1282 // Jump by number of bytes represented by an immediate operand if the object |
1253 // referenced by the accumulator is true when the object is cast to boolean. | 1283 // referenced by the accumulator is true when the object is cast to boolean. |
1254 void Interpreter::DoJumpIfToBooleanTrue( | 1284 void Interpreter::DoJumpIfToBooleanTrue( |
1255 compiler::InterpreterAssembler* assembler) { | 1285 compiler::InterpreterAssembler* assembler) { |
1256 Node* accumulator = __ GetAccumulator(); | 1286 Node* accumulator = __ GetAccumulator(); |
1257 Node* to_boolean_value = | 1287 Node* to_boolean_value = |
1258 __ CallRuntime(Runtime::kInterpreterToBoolean, accumulator); | 1288 __ CallRuntime(Runtime::kInterpreterToBoolean, accumulator); |
1259 Node* relative_jump = __ BytecodeOperandImm(0); | 1289 Node* relative_jump = __ BytecodeOperandImm(0); |
1260 Node* true_value = __ BooleanConstant(true); | 1290 Node* true_value = __ BooleanConstant(true); |
1261 __ JumpIfWordEqual(to_boolean_value, true_value, relative_jump); | 1291 __ JumpIfWordEqual(to_boolean_value, true_value, relative_jump); |
1262 } | 1292 } |
1263 | 1293 |
1264 | 1294 |
1265 // JumpIfToBooleanTrueConstant <idx> | 1295 // JumpIfToBooleanTrueConstant <idx8> |
1266 // | 1296 // |
1267 // Jump by number of bytes in the Smi in the |idx| entry in the constant pool | 1297 // Jump by number of bytes in the Smi in the |idx8| entry in the constant pool |
1268 // if the object referenced by the accumulator is true when the object is cast | 1298 // if the object referenced by the accumulator is true when the object is cast |
1269 // to boolean. | 1299 // to boolean. |
1270 void Interpreter::DoJumpIfToBooleanTrueConstant( | 1300 void Interpreter::DoJumpIfToBooleanTrueConstant( |
1271 compiler::InterpreterAssembler* assembler) { | 1301 compiler::InterpreterAssembler* assembler) { |
1272 Node* accumulator = __ GetAccumulator(); | 1302 Node* accumulator = __ GetAccumulator(); |
1273 Node* to_boolean_value = | 1303 Node* to_boolean_value = |
1274 __ CallRuntime(Runtime::kInterpreterToBoolean, accumulator); | 1304 __ CallRuntime(Runtime::kInterpreterToBoolean, accumulator); |
1275 Node* index = __ BytecodeOperandIdx(0); | 1305 Node* index = __ BytecodeOperandIdx(0); |
1276 Node* constant = __ LoadConstantPoolEntry(index); | 1306 Node* constant = __ LoadConstantPoolEntry(index); |
1277 Node* relative_jump = __ SmiUntag(constant); | 1307 Node* relative_jump = __ SmiUntag(constant); |
1278 Node* true_value = __ BooleanConstant(true); | 1308 Node* true_value = __ BooleanConstant(true); |
1279 __ JumpIfWordEqual(to_boolean_value, true_value, relative_jump); | 1309 __ JumpIfWordEqual(to_boolean_value, true_value, relative_jump); |
1280 } | 1310 } |
1281 | 1311 |
1282 | 1312 |
| 1313 // JumpIfToBooleanTrueConstantWide <idx16> |
| 1314 // |
| 1315 // Jump by number of bytes in the Smi in the |idx16| entry in the constant pool |
| 1316 // if the object referenced by the accumulator is true when the object is cast |
| 1317 // to boolean. |
| 1318 void Interpreter::DoJumpIfToBooleanTrueConstantWide( |
| 1319 compiler::InterpreterAssembler* assembler) { |
| 1320 DoJumpIfToBooleanTrueConstant(assembler); |
| 1321 } |
| 1322 |
| 1323 |
1283 // JumpIfToBooleanFalse <imm8> | 1324 // JumpIfToBooleanFalse <imm8> |
1284 // | 1325 // |
1285 // Jump by number of bytes represented by an immediate operand if the object | 1326 // Jump by number of bytes represented by an immediate operand if the object |
1286 // referenced by the accumulator is false when the object is cast to boolean. | 1327 // referenced by the accumulator is false when the object is cast to boolean. |
1287 void Interpreter::DoJumpIfToBooleanFalse( | 1328 void Interpreter::DoJumpIfToBooleanFalse( |
1288 compiler::InterpreterAssembler* assembler) { | 1329 compiler::InterpreterAssembler* assembler) { |
1289 Node* accumulator = __ GetAccumulator(); | 1330 Node* accumulator = __ GetAccumulator(); |
1290 Node* to_boolean_value = | 1331 Node* to_boolean_value = |
1291 __ CallRuntime(Runtime::kInterpreterToBoolean, accumulator); | 1332 __ CallRuntime(Runtime::kInterpreterToBoolean, accumulator); |
1292 Node* relative_jump = __ BytecodeOperandImm(0); | 1333 Node* relative_jump = __ BytecodeOperandImm(0); |
1293 Node* false_value = __ BooleanConstant(false); | 1334 Node* false_value = __ BooleanConstant(false); |
1294 __ JumpIfWordEqual(to_boolean_value, false_value, relative_jump); | 1335 __ JumpIfWordEqual(to_boolean_value, false_value, relative_jump); |
1295 } | 1336 } |
1296 | 1337 |
1297 | 1338 |
1298 // JumpIfToBooleanFalseConstant <idx> | 1339 // JumpIfToBooleanFalseConstant <idx8> |
1299 // | 1340 // |
1300 // Jump by number of bytes in the Smi in the |idx| entry in the constant pool | 1341 // Jump by number of bytes in the Smi in the |idx8| entry in the constant pool |
1301 // if the object referenced by the accumulator is false when the object is cast | 1342 // if the object referenced by the accumulator is false when the object is cast |
1302 // to boolean. | 1343 // to boolean. |
1303 void Interpreter::DoJumpIfToBooleanFalseConstant( | 1344 void Interpreter::DoJumpIfToBooleanFalseConstant( |
1304 compiler::InterpreterAssembler* assembler) { | 1345 compiler::InterpreterAssembler* assembler) { |
1305 Node* accumulator = __ GetAccumulator(); | 1346 Node* accumulator = __ GetAccumulator(); |
1306 Node* to_boolean_value = | 1347 Node* to_boolean_value = |
1307 __ CallRuntime(Runtime::kInterpreterToBoolean, accumulator); | 1348 __ CallRuntime(Runtime::kInterpreterToBoolean, accumulator); |
1308 Node* index = __ BytecodeOperandIdx(0); | 1349 Node* index = __ BytecodeOperandIdx(0); |
1309 Node* constant = __ LoadConstantPoolEntry(index); | 1350 Node* constant = __ LoadConstantPoolEntry(index); |
1310 Node* relative_jump = __ SmiUntag(constant); | 1351 Node* relative_jump = __ SmiUntag(constant); |
1311 Node* false_value = __ BooleanConstant(false); | 1352 Node* false_value = __ BooleanConstant(false); |
1312 __ JumpIfWordEqual(to_boolean_value, false_value, relative_jump); | 1353 __ JumpIfWordEqual(to_boolean_value, false_value, relative_jump); |
1313 } | 1354 } |
1314 | 1355 |
1315 | 1356 |
| 1357 // JumpIfToBooleanFalseConstantWide <idx16> |
| 1358 // |
| 1359 // Jump by number of bytes in the Smi in the |idx16| entry in the constant pool |
| 1360 // if the object referenced by the accumulator is false when the object is cast |
| 1361 // to boolean. |
| 1362 void Interpreter::DoJumpIfToBooleanFalseConstantWide( |
| 1363 compiler::InterpreterAssembler* assembler) { |
| 1364 DoJumpIfToBooleanFalseConstant(assembler); |
| 1365 } |
| 1366 |
| 1367 |
1316 // JumpIfNull <imm8> | 1368 // JumpIfNull <imm8> |
1317 // | 1369 // |
1318 // Jump by number of bytes represented by an immediate operand if the object | 1370 // Jump by number of bytes represented by an immediate operand if the object |
1319 // referenced by the accumulator is the null constant. | 1371 // referenced by the accumulator is the null constant. |
1320 void Interpreter::DoJumpIfNull(compiler::InterpreterAssembler* assembler) { | 1372 void Interpreter::DoJumpIfNull(compiler::InterpreterAssembler* assembler) { |
1321 Node* accumulator = __ GetAccumulator(); | 1373 Node* accumulator = __ GetAccumulator(); |
1322 Node* null_value = __ HeapConstant(isolate_->factory()->null_value()); | 1374 Node* null_value = __ HeapConstant(isolate_->factory()->null_value()); |
1323 Node* relative_jump = __ BytecodeOperandImm(0); | 1375 Node* relative_jump = __ BytecodeOperandImm(0); |
1324 __ JumpIfWordEqual(accumulator, null_value, relative_jump); | 1376 __ JumpIfWordEqual(accumulator, null_value, relative_jump); |
1325 } | 1377 } |
1326 | 1378 |
1327 | 1379 |
1328 // JumpIfNullConstant <idx> | 1380 // JumpIfNullConstant <idx8> |
1329 // | 1381 // |
1330 // Jump by number of bytes in the Smi in the |idx| entry in the constant pool | 1382 // Jump by number of bytes in the Smi in the |idx8| entry in the constant pool |
1331 // if the object referenced by the accumulator is the null constant. | 1383 // if the object referenced by the accumulator is the null constant. |
1332 void Interpreter::DoJumpIfNullConstant( | 1384 void Interpreter::DoJumpIfNullConstant( |
1333 compiler::InterpreterAssembler* assembler) { | 1385 compiler::InterpreterAssembler* assembler) { |
1334 Node* accumulator = __ GetAccumulator(); | 1386 Node* accumulator = __ GetAccumulator(); |
1335 Node* null_value = __ HeapConstant(isolate_->factory()->null_value()); | 1387 Node* null_value = __ HeapConstant(isolate_->factory()->null_value()); |
1336 Node* index = __ BytecodeOperandIdx(0); | 1388 Node* index = __ BytecodeOperandIdx(0); |
1337 Node* constant = __ LoadConstantPoolEntry(index); | 1389 Node* constant = __ LoadConstantPoolEntry(index); |
1338 Node* relative_jump = __ SmiUntag(constant); | 1390 Node* relative_jump = __ SmiUntag(constant); |
1339 __ JumpIfWordEqual(accumulator, null_value, relative_jump); | 1391 __ JumpIfWordEqual(accumulator, null_value, relative_jump); |
1340 } | 1392 } |
1341 | 1393 |
1342 | 1394 |
1343 // JumpIfUndefined <imm8> | 1395 // JumpIfNullConstantWide <idx16> |
| 1396 // |
| 1397 // Jump by number of bytes in the Smi in the |idx16| entry in the constant pool |
| 1398 // if the object referenced by the accumulator is the null constant. |
| 1399 void Interpreter::DoJumpIfNullConstantWide( |
| 1400 compiler::InterpreterAssembler* assembler) { |
| 1401 DoJumpIfNullConstant(assembler); |
| 1402 } |
| 1403 |
| 1404 |
| 1405 // jumpifundefined <imm8> |
1344 // | 1406 // |
1345 // Jump by number of bytes represented by an immediate operand if the object | 1407 // Jump by number of bytes represented by an immediate operand if the object |
1346 // referenced by the accumulator is the undefined constant. | 1408 // referenced by the accumulator is the undefined constant. |
1347 void Interpreter::DoJumpIfUndefined(compiler::InterpreterAssembler* assembler) { | 1409 void Interpreter::DoJumpIfUndefined(compiler::InterpreterAssembler* assembler) { |
1348 Node* accumulator = __ GetAccumulator(); | 1410 Node* accumulator = __ GetAccumulator(); |
1349 Node* undefined_value = | 1411 Node* undefined_value = |
1350 __ HeapConstant(isolate_->factory()->undefined_value()); | 1412 __ HeapConstant(isolate_->factory()->undefined_value()); |
1351 Node* relative_jump = __ BytecodeOperandImm(0); | 1413 Node* relative_jump = __ BytecodeOperandImm(0); |
1352 __ JumpIfWordEqual(accumulator, undefined_value, relative_jump); | 1414 __ JumpIfWordEqual(accumulator, undefined_value, relative_jump); |
1353 } | 1415 } |
1354 | 1416 |
1355 | 1417 |
1356 // JumpIfUndefinedConstant <idx> | 1418 // JumpIfUndefinedConstant <idx8> |
1357 // | 1419 // |
1358 // Jump by number of bytes in the Smi in the |idx| entry in the constant pool | 1420 // Jump by number of bytes in the Smi in the |idx8| entry in the constant pool |
1359 // if the object referenced by the accumulator is the undefined constant. | 1421 // if the object referenced by the accumulator is the undefined constant. |
1360 void Interpreter::DoJumpIfUndefinedConstant( | 1422 void Interpreter::DoJumpIfUndefinedConstant( |
1361 compiler::InterpreterAssembler* assembler) { | 1423 compiler::InterpreterAssembler* assembler) { |
1362 Node* accumulator = __ GetAccumulator(); | 1424 Node* accumulator = __ GetAccumulator(); |
1363 Node* undefined_value = | 1425 Node* undefined_value = |
1364 __ HeapConstant(isolate_->factory()->undefined_value()); | 1426 __ HeapConstant(isolate_->factory()->undefined_value()); |
1365 Node* index = __ BytecodeOperandIdx(0); | 1427 Node* index = __ BytecodeOperandIdx(0); |
1366 Node* constant = __ LoadConstantPoolEntry(index); | 1428 Node* constant = __ LoadConstantPoolEntry(index); |
1367 Node* relative_jump = __ SmiUntag(constant); | 1429 Node* relative_jump = __ SmiUntag(constant); |
1368 __ JumpIfWordEqual(accumulator, undefined_value, relative_jump); | 1430 __ JumpIfWordEqual(accumulator, undefined_value, relative_jump); |
1369 } | 1431 } |
1370 | 1432 |
1371 | 1433 |
| 1434 // JumpIfUndefinedConstantWide <idx16> |
| 1435 // |
| 1436 // Jump by number of bytes in the Smi in the |idx16| entry in the constant pool |
| 1437 // if the object referenced by the accumulator is the undefined constant. |
| 1438 void Interpreter::DoJumpIfUndefinedConstantWide( |
| 1439 compiler::InterpreterAssembler* assembler) { |
| 1440 DoJumpIfUndefinedConstant(assembler); |
| 1441 } |
| 1442 |
| 1443 |
1372 void Interpreter::DoCreateLiteral(Runtime::FunctionId function_id, | 1444 void Interpreter::DoCreateLiteral(Runtime::FunctionId function_id, |
1373 compiler::InterpreterAssembler* assembler) { | 1445 compiler::InterpreterAssembler* assembler) { |
1374 Node* index = __ BytecodeOperandIdx(0); | 1446 Node* index = __ BytecodeOperandIdx(0); |
1375 Node* constant_elements = __ LoadConstantPoolEntry(index); | 1447 Node* constant_elements = __ LoadConstantPoolEntry(index); |
1376 Node* literal_index_raw = __ BytecodeOperandIdx(1); | 1448 Node* literal_index_raw = __ BytecodeOperandIdx(1); |
1377 Node* literal_index = __ SmiTag(literal_index_raw); | 1449 Node* literal_index = __ SmiTag(literal_index_raw); |
1378 Node* flags_raw = __ BytecodeOperandImm(2); | 1450 Node* flags_raw = __ BytecodeOperandImm(2); |
1379 Node* flags = __ SmiTag(flags_raw); | 1451 Node* flags = __ SmiTag(flags_raw); |
1380 Node* closure = __ LoadRegister(Register::function_closure()); | 1452 Node* closure = __ LoadRegister(Register::function_closure()); |
1381 Node* result = __ CallRuntime(function_id, closure, literal_index, | 1453 Node* result = __ CallRuntime(function_id, closure, literal_index, |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1578 Node* index_reg = __ BytecodeOperandReg(0); | 1650 Node* index_reg = __ BytecodeOperandReg(0); |
1579 Node* index = __ LoadRegister(index_reg); | 1651 Node* index = __ LoadRegister(index_reg); |
1580 Node* result = __ CallRuntime(Runtime::kForInStep, index); | 1652 Node* result = __ CallRuntime(Runtime::kForInStep, index); |
1581 __ SetAccumulator(result); | 1653 __ SetAccumulator(result); |
1582 __ Dispatch(); | 1654 __ Dispatch(); |
1583 } | 1655 } |
1584 | 1656 |
1585 } // namespace interpreter | 1657 } // namespace interpreter |
1586 } // namespace internal | 1658 } // namespace internal |
1587 } // namespace v8 | 1659 } // namespace v8 |
OLD | NEW |