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 1200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1211 | 1211 |
1212 // Jump <imm8> | 1212 // Jump <imm8> |
1213 // | 1213 // |
1214 // Jump by number of bytes represented by the immediate operand |imm8|. | 1214 // Jump by number of bytes represented by the immediate operand |imm8|. |
1215 void Interpreter::DoJump(compiler::InterpreterAssembler* assembler) { | 1215 void Interpreter::DoJump(compiler::InterpreterAssembler* assembler) { |
1216 Node* relative_jump = __ BytecodeOperandImm(0); | 1216 Node* relative_jump = __ BytecodeOperandImm(0); |
1217 __ Jump(relative_jump); | 1217 __ Jump(relative_jump); |
1218 } | 1218 } |
1219 | 1219 |
1220 | 1220 |
1221 // JumpConstant <idx> | 1221 // JumpConstant <idx8> |
1222 // | 1222 // |
1223 // Jump by number of bytes in the Smi in the |idx| entry in the constant pool. | 1223 // Jump by number of bytes in the Smi in the |idx8| entry in the constant pool. |
1224 void Interpreter::DoJumpConstant(compiler::InterpreterAssembler* assembler) { | 1224 void Interpreter::DoJumpConstant(compiler::InterpreterAssembler* assembler) { |
1225 Node* index = __ BytecodeOperandIdx(0); | 1225 Node* index = __ BytecodeOperandIdx(0); |
1226 Node* constant = __ LoadConstantPoolEntry(index); | 1226 Node* constant = __ LoadConstantPoolEntry(index); |
1227 Node* relative_jump = __ SmiUntag(constant); | 1227 Node* relative_jump = __ SmiUntag(constant); |
1228 __ Jump(relative_jump); | 1228 __ Jump(relative_jump); |
1229 } | 1229 } |
1230 | 1230 |
1231 | 1231 |
| 1232 // JumpConstantWide <idx16> |
| 1233 // |
| 1234 // Jump by number of bytes in the Smi in the |idx16| entry in the |
| 1235 // constant pool. |
| 1236 void Interpreter::DoJumpConstantWide( |
| 1237 compiler::InterpreterAssembler* assembler) { |
| 1238 DoJumpConstant(assembler); |
| 1239 } |
| 1240 |
| 1241 |
1232 // JumpIfTrue <imm8> | 1242 // JumpIfTrue <imm8> |
1233 // | 1243 // |
1234 // Jump by number of bytes represented by an immediate operand if the | 1244 // Jump by number of bytes represented by an immediate operand if the |
1235 // accumulator contains true. | 1245 // accumulator contains true. |
1236 void Interpreter::DoJumpIfTrue(compiler::InterpreterAssembler* assembler) { | 1246 void Interpreter::DoJumpIfTrue(compiler::InterpreterAssembler* assembler) { |
1237 Node* accumulator = __ GetAccumulator(); | 1247 Node* accumulator = __ GetAccumulator(); |
1238 Node* relative_jump = __ BytecodeOperandImm(0); | 1248 Node* relative_jump = __ BytecodeOperandImm(0); |
1239 Node* true_value = __ BooleanConstant(true); | 1249 Node* true_value = __ BooleanConstant(true); |
1240 __ JumpIfWordEqual(accumulator, true_value, relative_jump); | 1250 __ JumpIfWordEqual(accumulator, true_value, relative_jump); |
1241 } | 1251 } |
1242 | 1252 |
1243 | 1253 |
1244 // JumpIfTrueConstant <idx> | 1254 // JumpIfTrueConstant <idx8> |
1245 // | 1255 // |
1246 // Jump by number of bytes in the Smi in the |idx| entry in the constant pool | 1256 // Jump by number of bytes in the Smi in the |idx8| entry in the constant pool |
1247 // if the accumulator contains true. | 1257 // if the accumulator contains true. |
1248 void Interpreter::DoJumpIfTrueConstant( | 1258 void Interpreter::DoJumpIfTrueConstant( |
1249 compiler::InterpreterAssembler* assembler) { | 1259 compiler::InterpreterAssembler* assembler) { |
1250 Node* accumulator = __ GetAccumulator(); | 1260 Node* accumulator = __ GetAccumulator(); |
1251 Node* index = __ BytecodeOperandIdx(0); | 1261 Node* index = __ BytecodeOperandIdx(0); |
1252 Node* constant = __ LoadConstantPoolEntry(index); | 1262 Node* constant = __ LoadConstantPoolEntry(index); |
1253 Node* relative_jump = __ SmiUntag(constant); | 1263 Node* relative_jump = __ SmiUntag(constant); |
1254 Node* true_value = __ BooleanConstant(true); | 1264 Node* true_value = __ BooleanConstant(true); |
1255 __ JumpIfWordEqual(accumulator, true_value, relative_jump); | 1265 __ JumpIfWordEqual(accumulator, true_value, relative_jump); |
1256 } | 1266 } |
1257 | 1267 |
1258 | 1268 |
| 1269 // JumpIfTrueConstantWide <idx16> |
| 1270 // |
| 1271 // Jump by number of bytes in the Smi in the |idx16| entry in the constant pool |
| 1272 // if the accumulator contains true. |
| 1273 void Interpreter::DoJumpIfTrueConstantWide( |
| 1274 compiler::InterpreterAssembler* assembler) { |
| 1275 DoJumpIfTrueConstant(assembler); |
| 1276 } |
| 1277 |
| 1278 |
1259 // JumpIfFalse <imm8> | 1279 // JumpIfFalse <imm8> |
1260 // | 1280 // |
1261 // Jump by number of bytes represented by an immediate operand if the | 1281 // Jump by number of bytes represented by an immediate operand if the |
1262 // accumulator contains false. | 1282 // accumulator contains false. |
1263 void Interpreter::DoJumpIfFalse(compiler::InterpreterAssembler* assembler) { | 1283 void Interpreter::DoJumpIfFalse(compiler::InterpreterAssembler* assembler) { |
1264 Node* accumulator = __ GetAccumulator(); | 1284 Node* accumulator = __ GetAccumulator(); |
1265 Node* relative_jump = __ BytecodeOperandImm(0); | 1285 Node* relative_jump = __ BytecodeOperandImm(0); |
1266 Node* false_value = __ BooleanConstant(false); | 1286 Node* false_value = __ BooleanConstant(false); |
1267 __ JumpIfWordEqual(accumulator, false_value, relative_jump); | 1287 __ JumpIfWordEqual(accumulator, false_value, relative_jump); |
1268 } | 1288 } |
1269 | 1289 |
1270 | 1290 |
1271 // JumpIfFalseConstant <idx> | 1291 // JumpIfFalseConstant <idx8> |
1272 // | 1292 // |
1273 // Jump by number of bytes in the Smi in the |idx| entry in the constant pool | 1293 // Jump by number of bytes in the Smi in the |idx8| entry in the constant pool |
1274 // if the accumulator contains false. | 1294 // if the accumulator contains false. |
1275 void Interpreter::DoJumpIfFalseConstant( | 1295 void Interpreter::DoJumpIfFalseConstant( |
1276 compiler::InterpreterAssembler* assembler) { | 1296 compiler::InterpreterAssembler* assembler) { |
1277 Node* accumulator = __ GetAccumulator(); | 1297 Node* accumulator = __ GetAccumulator(); |
1278 Node* index = __ BytecodeOperandIdx(0); | 1298 Node* index = __ BytecodeOperandIdx(0); |
1279 Node* constant = __ LoadConstantPoolEntry(index); | 1299 Node* constant = __ LoadConstantPoolEntry(index); |
1280 Node* relative_jump = __ SmiUntag(constant); | 1300 Node* relative_jump = __ SmiUntag(constant); |
1281 Node* false_value = __ BooleanConstant(false); | 1301 Node* false_value = __ BooleanConstant(false); |
1282 __ JumpIfWordEqual(accumulator, false_value, relative_jump); | 1302 __ JumpIfWordEqual(accumulator, false_value, relative_jump); |
1283 } | 1303 } |
1284 | 1304 |
1285 | 1305 |
| 1306 // JumpIfFalseConstant <idx16> |
| 1307 // |
| 1308 // Jump by number of bytes in the Smi in the |idx16| entry in the constant pool |
| 1309 // if the accumulator contains false. |
| 1310 void Interpreter::DoJumpIfFalseConstantWide( |
| 1311 compiler::InterpreterAssembler* assembler) { |
| 1312 DoJumpIfFalseConstant(assembler); |
| 1313 } |
| 1314 |
| 1315 |
1286 // JumpIfToBooleanTrue <imm8> | 1316 // JumpIfToBooleanTrue <imm8> |
1287 // | 1317 // |
1288 // Jump by number of bytes represented by an immediate operand if the object | 1318 // Jump by number of bytes represented by an immediate operand if the object |
1289 // referenced by the accumulator is true when the object is cast to boolean. | 1319 // referenced by the accumulator is true when the object is cast to boolean. |
1290 void Interpreter::DoJumpIfToBooleanTrue( | 1320 void Interpreter::DoJumpIfToBooleanTrue( |
1291 compiler::InterpreterAssembler* assembler) { | 1321 compiler::InterpreterAssembler* assembler) { |
1292 Node* accumulator = __ GetAccumulator(); | 1322 Node* accumulator = __ GetAccumulator(); |
1293 Node* to_boolean_value = | 1323 Node* to_boolean_value = |
1294 __ CallRuntime(Runtime::kInterpreterToBoolean, accumulator); | 1324 __ CallRuntime(Runtime::kInterpreterToBoolean, accumulator); |
1295 Node* relative_jump = __ BytecodeOperandImm(0); | 1325 Node* relative_jump = __ BytecodeOperandImm(0); |
1296 Node* true_value = __ BooleanConstant(true); | 1326 Node* true_value = __ BooleanConstant(true); |
1297 __ JumpIfWordEqual(to_boolean_value, true_value, relative_jump); | 1327 __ JumpIfWordEqual(to_boolean_value, true_value, relative_jump); |
1298 } | 1328 } |
1299 | 1329 |
1300 | 1330 |
1301 // JumpIfToBooleanTrueConstant <idx> | 1331 // JumpIfToBooleanTrueConstant <idx8> |
1302 // | 1332 // |
1303 // Jump by number of bytes in the Smi in the |idx| entry in the constant pool | 1333 // Jump by number of bytes in the Smi in the |idx8| entry in the constant pool |
1304 // if the object referenced by the accumulator is true when the object is cast | 1334 // if the object referenced by the accumulator is true when the object is cast |
1305 // to boolean. | 1335 // to boolean. |
1306 void Interpreter::DoJumpIfToBooleanTrueConstant( | 1336 void Interpreter::DoJumpIfToBooleanTrueConstant( |
1307 compiler::InterpreterAssembler* assembler) { | 1337 compiler::InterpreterAssembler* assembler) { |
1308 Node* accumulator = __ GetAccumulator(); | 1338 Node* accumulator = __ GetAccumulator(); |
1309 Node* to_boolean_value = | 1339 Node* to_boolean_value = |
1310 __ CallRuntime(Runtime::kInterpreterToBoolean, accumulator); | 1340 __ CallRuntime(Runtime::kInterpreterToBoolean, accumulator); |
1311 Node* index = __ BytecodeOperandIdx(0); | 1341 Node* index = __ BytecodeOperandIdx(0); |
1312 Node* constant = __ LoadConstantPoolEntry(index); | 1342 Node* constant = __ LoadConstantPoolEntry(index); |
1313 Node* relative_jump = __ SmiUntag(constant); | 1343 Node* relative_jump = __ SmiUntag(constant); |
1314 Node* true_value = __ BooleanConstant(true); | 1344 Node* true_value = __ BooleanConstant(true); |
1315 __ JumpIfWordEqual(to_boolean_value, true_value, relative_jump); | 1345 __ JumpIfWordEqual(to_boolean_value, true_value, relative_jump); |
1316 } | 1346 } |
1317 | 1347 |
1318 | 1348 |
| 1349 // JumpIfToBooleanTrueConstantWide <idx16> |
| 1350 // |
| 1351 // Jump by number of bytes in the Smi in the |idx16| entry in the constant pool |
| 1352 // if the object referenced by the accumulator is true when the object is cast |
| 1353 // to boolean. |
| 1354 void Interpreter::DoJumpIfToBooleanTrueConstantWide( |
| 1355 compiler::InterpreterAssembler* assembler) { |
| 1356 DoJumpIfToBooleanTrueConstant(assembler); |
| 1357 } |
| 1358 |
| 1359 |
1319 // JumpIfToBooleanFalse <imm8> | 1360 // JumpIfToBooleanFalse <imm8> |
1320 // | 1361 // |
1321 // Jump by number of bytes represented by an immediate operand if the object | 1362 // Jump by number of bytes represented by an immediate operand if the object |
1322 // referenced by the accumulator is false when the object is cast to boolean. | 1363 // referenced by the accumulator is false when the object is cast to boolean. |
1323 void Interpreter::DoJumpIfToBooleanFalse( | 1364 void Interpreter::DoJumpIfToBooleanFalse( |
1324 compiler::InterpreterAssembler* assembler) { | 1365 compiler::InterpreterAssembler* assembler) { |
1325 Node* accumulator = __ GetAccumulator(); | 1366 Node* accumulator = __ GetAccumulator(); |
1326 Node* to_boolean_value = | 1367 Node* to_boolean_value = |
1327 __ CallRuntime(Runtime::kInterpreterToBoolean, accumulator); | 1368 __ CallRuntime(Runtime::kInterpreterToBoolean, accumulator); |
1328 Node* relative_jump = __ BytecodeOperandImm(0); | 1369 Node* relative_jump = __ BytecodeOperandImm(0); |
1329 Node* false_value = __ BooleanConstant(false); | 1370 Node* false_value = __ BooleanConstant(false); |
1330 __ JumpIfWordEqual(to_boolean_value, false_value, relative_jump); | 1371 __ JumpIfWordEqual(to_boolean_value, false_value, relative_jump); |
1331 } | 1372 } |
1332 | 1373 |
1333 | 1374 |
1334 // JumpIfToBooleanFalseConstant <idx> | 1375 // JumpIfToBooleanFalseConstant <idx8> |
1335 // | 1376 // |
1336 // Jump by number of bytes in the Smi in the |idx| entry in the constant pool | 1377 // Jump by number of bytes in the Smi in the |idx8| entry in the constant pool |
1337 // if the object referenced by the accumulator is false when the object is cast | 1378 // if the object referenced by the accumulator is false when the object is cast |
1338 // to boolean. | 1379 // to boolean. |
1339 void Interpreter::DoJumpIfToBooleanFalseConstant( | 1380 void Interpreter::DoJumpIfToBooleanFalseConstant( |
1340 compiler::InterpreterAssembler* assembler) { | 1381 compiler::InterpreterAssembler* assembler) { |
1341 Node* accumulator = __ GetAccumulator(); | 1382 Node* accumulator = __ GetAccumulator(); |
1342 Node* to_boolean_value = | 1383 Node* to_boolean_value = |
1343 __ CallRuntime(Runtime::kInterpreterToBoolean, accumulator); | 1384 __ CallRuntime(Runtime::kInterpreterToBoolean, accumulator); |
1344 Node* index = __ BytecodeOperandIdx(0); | 1385 Node* index = __ BytecodeOperandIdx(0); |
1345 Node* constant = __ LoadConstantPoolEntry(index); | 1386 Node* constant = __ LoadConstantPoolEntry(index); |
1346 Node* relative_jump = __ SmiUntag(constant); | 1387 Node* relative_jump = __ SmiUntag(constant); |
1347 Node* false_value = __ BooleanConstant(false); | 1388 Node* false_value = __ BooleanConstant(false); |
1348 __ JumpIfWordEqual(to_boolean_value, false_value, relative_jump); | 1389 __ JumpIfWordEqual(to_boolean_value, false_value, relative_jump); |
1349 } | 1390 } |
1350 | 1391 |
1351 | 1392 |
| 1393 // JumpIfToBooleanFalseConstantWide <idx16> |
| 1394 // |
| 1395 // Jump by number of bytes in the Smi in the |idx16| entry in the constant pool |
| 1396 // if the object referenced by the accumulator is false when the object is cast |
| 1397 // to boolean. |
| 1398 void Interpreter::DoJumpIfToBooleanFalseConstantWide( |
| 1399 compiler::InterpreterAssembler* assembler) { |
| 1400 DoJumpIfToBooleanFalseConstant(assembler); |
| 1401 } |
| 1402 |
| 1403 |
1352 // JumpIfNull <imm8> | 1404 // JumpIfNull <imm8> |
1353 // | 1405 // |
1354 // Jump by number of bytes represented by an immediate operand if the object | 1406 // Jump by number of bytes represented by an immediate operand if the object |
1355 // referenced by the accumulator is the null constant. | 1407 // referenced by the accumulator is the null constant. |
1356 void Interpreter::DoJumpIfNull(compiler::InterpreterAssembler* assembler) { | 1408 void Interpreter::DoJumpIfNull(compiler::InterpreterAssembler* assembler) { |
1357 Node* accumulator = __ GetAccumulator(); | 1409 Node* accumulator = __ GetAccumulator(); |
1358 Node* null_value = __ HeapConstant(isolate_->factory()->null_value()); | 1410 Node* null_value = __ HeapConstant(isolate_->factory()->null_value()); |
1359 Node* relative_jump = __ BytecodeOperandImm(0); | 1411 Node* relative_jump = __ BytecodeOperandImm(0); |
1360 __ JumpIfWordEqual(accumulator, null_value, relative_jump); | 1412 __ JumpIfWordEqual(accumulator, null_value, relative_jump); |
1361 } | 1413 } |
1362 | 1414 |
1363 | 1415 |
1364 // JumpIfNullConstant <idx> | 1416 // JumpIfNullConstant <idx8> |
1365 // | 1417 // |
1366 // Jump by number of bytes in the Smi in the |idx| entry in the constant pool | 1418 // Jump by number of bytes in the Smi in the |idx8| entry in the constant pool |
1367 // if the object referenced by the accumulator is the null constant. | 1419 // if the object referenced by the accumulator is the null constant. |
1368 void Interpreter::DoJumpIfNullConstant( | 1420 void Interpreter::DoJumpIfNullConstant( |
1369 compiler::InterpreterAssembler* assembler) { | 1421 compiler::InterpreterAssembler* assembler) { |
1370 Node* accumulator = __ GetAccumulator(); | 1422 Node* accumulator = __ GetAccumulator(); |
1371 Node* null_value = __ HeapConstant(isolate_->factory()->null_value()); | 1423 Node* null_value = __ HeapConstant(isolate_->factory()->null_value()); |
1372 Node* index = __ BytecodeOperandIdx(0); | 1424 Node* index = __ BytecodeOperandIdx(0); |
1373 Node* constant = __ LoadConstantPoolEntry(index); | 1425 Node* constant = __ LoadConstantPoolEntry(index); |
1374 Node* relative_jump = __ SmiUntag(constant); | 1426 Node* relative_jump = __ SmiUntag(constant); |
1375 __ JumpIfWordEqual(accumulator, null_value, relative_jump); | 1427 __ JumpIfWordEqual(accumulator, null_value, relative_jump); |
1376 } | 1428 } |
1377 | 1429 |
1378 | 1430 |
1379 // JumpIfUndefined <imm8> | 1431 // JumpIfNullConstantWide <idx16> |
| 1432 // |
| 1433 // Jump by number of bytes in the Smi in the |idx16| entry in the constant pool |
| 1434 // if the object referenced by the accumulator is the null constant. |
| 1435 void Interpreter::DoJumpIfNullConstantWide( |
| 1436 compiler::InterpreterAssembler* assembler) { |
| 1437 DoJumpIfNullConstant(assembler); |
| 1438 } |
| 1439 |
| 1440 |
| 1441 // jumpifundefined <imm8> |
1380 // | 1442 // |
1381 // Jump by number of bytes represented by an immediate operand if the object | 1443 // Jump by number of bytes represented by an immediate operand if the object |
1382 // referenced by the accumulator is the undefined constant. | 1444 // referenced by the accumulator is the undefined constant. |
1383 void Interpreter::DoJumpIfUndefined(compiler::InterpreterAssembler* assembler) { | 1445 void Interpreter::DoJumpIfUndefined(compiler::InterpreterAssembler* assembler) { |
1384 Node* accumulator = __ GetAccumulator(); | 1446 Node* accumulator = __ GetAccumulator(); |
1385 Node* undefined_value = | 1447 Node* undefined_value = |
1386 __ HeapConstant(isolate_->factory()->undefined_value()); | 1448 __ HeapConstant(isolate_->factory()->undefined_value()); |
1387 Node* relative_jump = __ BytecodeOperandImm(0); | 1449 Node* relative_jump = __ BytecodeOperandImm(0); |
1388 __ JumpIfWordEqual(accumulator, undefined_value, relative_jump); | 1450 __ JumpIfWordEqual(accumulator, undefined_value, relative_jump); |
1389 } | 1451 } |
1390 | 1452 |
1391 | 1453 |
1392 // JumpIfUndefinedConstant <idx> | 1454 // JumpIfUndefinedConstant <idx8> |
1393 // | 1455 // |
1394 // Jump by number of bytes in the Smi in the |idx| entry in the constant pool | 1456 // Jump by number of bytes in the Smi in the |idx8| entry in the constant pool |
1395 // if the object referenced by the accumulator is the undefined constant. | 1457 // if the object referenced by the accumulator is the undefined constant. |
1396 void Interpreter::DoJumpIfUndefinedConstant( | 1458 void Interpreter::DoJumpIfUndefinedConstant( |
1397 compiler::InterpreterAssembler* assembler) { | 1459 compiler::InterpreterAssembler* assembler) { |
1398 Node* accumulator = __ GetAccumulator(); | 1460 Node* accumulator = __ GetAccumulator(); |
1399 Node* undefined_value = | 1461 Node* undefined_value = |
1400 __ HeapConstant(isolate_->factory()->undefined_value()); | 1462 __ HeapConstant(isolate_->factory()->undefined_value()); |
1401 Node* index = __ BytecodeOperandIdx(0); | 1463 Node* index = __ BytecodeOperandIdx(0); |
1402 Node* constant = __ LoadConstantPoolEntry(index); | 1464 Node* constant = __ LoadConstantPoolEntry(index); |
1403 Node* relative_jump = __ SmiUntag(constant); | 1465 Node* relative_jump = __ SmiUntag(constant); |
1404 __ JumpIfWordEqual(accumulator, undefined_value, relative_jump); | 1466 __ JumpIfWordEqual(accumulator, undefined_value, relative_jump); |
1405 } | 1467 } |
1406 | 1468 |
1407 | 1469 |
| 1470 // JumpIfUndefinedConstantWide <idx16> |
| 1471 // |
| 1472 // Jump by number of bytes in the Smi in the |idx16| entry in the constant pool |
| 1473 // if the object referenced by the accumulator is the undefined constant. |
| 1474 void Interpreter::DoJumpIfUndefinedConstantWide( |
| 1475 compiler::InterpreterAssembler* assembler) { |
| 1476 DoJumpIfUndefinedConstant(assembler); |
| 1477 } |
| 1478 |
| 1479 |
1408 void Interpreter::DoCreateLiteral(Runtime::FunctionId function_id, | 1480 void Interpreter::DoCreateLiteral(Runtime::FunctionId function_id, |
1409 compiler::InterpreterAssembler* assembler) { | 1481 compiler::InterpreterAssembler* assembler) { |
1410 Node* index = __ BytecodeOperandIdx(0); | 1482 Node* index = __ BytecodeOperandIdx(0); |
1411 Node* constant_elements = __ LoadConstantPoolEntry(index); | 1483 Node* constant_elements = __ LoadConstantPoolEntry(index); |
1412 Node* literal_index_raw = __ BytecodeOperandIdx(1); | 1484 Node* literal_index_raw = __ BytecodeOperandIdx(1); |
1413 Node* literal_index = __ SmiTag(literal_index_raw); | 1485 Node* literal_index = __ SmiTag(literal_index_raw); |
1414 Node* flags_raw = __ BytecodeOperandImm(2); | 1486 Node* flags_raw = __ BytecodeOperandImm(2); |
1415 Node* flags = __ SmiTag(flags_raw); | 1487 Node* flags = __ SmiTag(flags_raw); |
1416 Node* closure = __ LoadRegister(Register::function_closure()); | 1488 Node* closure = __ LoadRegister(Register::function_closure()); |
1417 Node* result = __ CallRuntime(function_id, closure, literal_index, | 1489 Node* result = __ CallRuntime(function_id, closure, literal_index, |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1614 Node* index_reg = __ BytecodeOperandReg(0); | 1686 Node* index_reg = __ BytecodeOperandReg(0); |
1615 Node* index = __ LoadRegister(index_reg); | 1687 Node* index = __ LoadRegister(index_reg); |
1616 Node* result = __ CallRuntime(Runtime::kForInStep, index); | 1688 Node* result = __ CallRuntime(Runtime::kForInStep, index); |
1617 __ SetAccumulator(result); | 1689 __ SetAccumulator(result); |
1618 __ Dispatch(); | 1690 __ Dispatch(); |
1619 } | 1691 } |
1620 | 1692 |
1621 } // namespace interpreter | 1693 } // namespace interpreter |
1622 } // namespace internal | 1694 } // namespace internal |
1623 } // namespace v8 | 1695 } // namespace v8 |
OLD | NEW |