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