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 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
236 // | 236 // |
237 // Load the global with name in constant pool entry <name_index> into the | 237 // Load the global with name in constant pool entry <name_index> into the |
238 // accumulator using FeedBackVector slot <slot> in strict mode. | 238 // accumulator using FeedBackVector slot <slot> in strict mode. |
239 void Interpreter::DoLdaGlobalStrict(compiler::InterpreterAssembler* assembler) { | 239 void Interpreter::DoLdaGlobalStrict(compiler::InterpreterAssembler* assembler) { |
240 Callable ic = CodeFactory::LoadICInOptimizedCode(isolate_, NOT_INSIDE_TYPEOF, | 240 Callable ic = CodeFactory::LoadICInOptimizedCode(isolate_, NOT_INSIDE_TYPEOF, |
241 STRICT, UNINITIALIZED); | 241 STRICT, UNINITIALIZED); |
242 DoLoadGlobal(ic, assembler); | 242 DoLoadGlobal(ic, assembler); |
243 } | 243 } |
244 | 244 |
245 | 245 |
| 246 // LdaGlobalInsideTypeofSloppy <name_index> <slot> |
| 247 // |
| 248 // Load the global with name in constant pool entry <name_index> into the |
| 249 // accumulator using FeedBackVector slot <slot> in sloppy mode. |
| 250 void Interpreter::DoLdaGlobalInsideTypeofSloppy( |
| 251 compiler::InterpreterAssembler* assembler) { |
| 252 Callable ic = CodeFactory::LoadICInOptimizedCode(isolate_, INSIDE_TYPEOF, |
| 253 SLOPPY, UNINITIALIZED); |
| 254 DoLoadGlobal(ic, assembler); |
| 255 } |
| 256 |
| 257 |
| 258 // LdaGlobalInsideTypeofStrict <name_index> <slot> |
| 259 // |
| 260 // Load the global with name in constant pool entry <name_index> into the |
| 261 // accumulator using FeedBackVector slot <slot> in strict mode. |
| 262 void Interpreter::DoLdaGlobalInsideTypeofStrict( |
| 263 compiler::InterpreterAssembler* assembler) { |
| 264 Callable ic = CodeFactory::LoadICInOptimizedCode(isolate_, INSIDE_TYPEOF, |
| 265 STRICT, UNINITIALIZED); |
| 266 DoLoadGlobal(ic, assembler); |
| 267 } |
| 268 |
| 269 |
246 // LdaGlobalSloppyWide <name_index> <slot> | 270 // LdaGlobalSloppyWide <name_index> <slot> |
247 // | 271 // |
248 // Load the global with name in constant pool entry <name_index> into the | 272 // Load the global with name in constant pool entry <name_index> into the |
249 // accumulator using FeedBackVector slot <slot> in sloppy mode. | 273 // accumulator using FeedBackVector slot <slot> in sloppy mode. |
250 void Interpreter::DoLdaGlobalSloppyWide( | 274 void Interpreter::DoLdaGlobalSloppyWide( |
251 compiler::InterpreterAssembler* assembler) { | 275 compiler::InterpreterAssembler* assembler) { |
252 Callable ic = CodeFactory::LoadICInOptimizedCode(isolate_, NOT_INSIDE_TYPEOF, | 276 Callable ic = CodeFactory::LoadICInOptimizedCode(isolate_, NOT_INSIDE_TYPEOF, |
253 SLOPPY, UNINITIALIZED); | 277 SLOPPY, UNINITIALIZED); |
254 DoLoadGlobal(ic, assembler); | 278 DoLoadGlobal(ic, assembler); |
255 } | 279 } |
256 | 280 |
257 | 281 |
258 // LdaGlobalSloppyWide <name_index> <slot> | 282 // LdaGlobalSloppyWide <name_index> <slot> |
259 // | 283 // |
260 // Load the global with name in constant pool entry <name_index> into the | 284 // Load the global with name in constant pool entry <name_index> into the |
261 // accumulator using FeedBackVector slot <slot> in strict mode. | 285 // accumulator using FeedBackVector slot <slot> in strict mode. |
262 void Interpreter::DoLdaGlobalStrictWide( | 286 void Interpreter::DoLdaGlobalStrictWide( |
263 compiler::InterpreterAssembler* assembler) { | 287 compiler::InterpreterAssembler* assembler) { |
264 Callable ic = CodeFactory::LoadICInOptimizedCode(isolate_, NOT_INSIDE_TYPEOF, | 288 Callable ic = CodeFactory::LoadICInOptimizedCode(isolate_, NOT_INSIDE_TYPEOF, |
265 STRICT, UNINITIALIZED); | 289 STRICT, UNINITIALIZED); |
266 DoLoadGlobal(ic, assembler); | 290 DoLoadGlobal(ic, assembler); |
267 } | 291 } |
268 | 292 |
269 | 293 |
| 294 // LdaGlobalInsideTypeofSloppyWide <name_index> <slot> |
| 295 // |
| 296 // Load the global with name in constant pool entry <name_index> into the |
| 297 // accumulator using FeedBackVector slot <slot> in sloppy mode. |
| 298 void Interpreter::DoLdaGlobalInsideTypeofSloppyWide( |
| 299 compiler::InterpreterAssembler* assembler) { |
| 300 Callable ic = CodeFactory::LoadICInOptimizedCode(isolate_, INSIDE_TYPEOF, |
| 301 SLOPPY, UNINITIALIZED); |
| 302 DoLoadGlobal(ic, assembler); |
| 303 } |
| 304 |
| 305 |
| 306 // LdaGlobalInsideTypeofSloppyWide <name_index> <slot> |
| 307 // |
| 308 // Load the global with name in constant pool entry <name_index> into the |
| 309 // accumulator using FeedBackVector slot <slot> in strict mode. |
| 310 void Interpreter::DoLdaGlobalInsideTypeofStrictWide( |
| 311 compiler::InterpreterAssembler* assembler) { |
| 312 Callable ic = CodeFactory::LoadICInOptimizedCode(isolate_, INSIDE_TYPEOF, |
| 313 STRICT, UNINITIALIZED); |
| 314 DoLoadGlobal(ic, assembler); |
| 315 } |
| 316 |
| 317 |
270 void Interpreter::DoStoreGlobal(Callable ic, | 318 void Interpreter::DoStoreGlobal(Callable ic, |
271 compiler::InterpreterAssembler* assembler) { | 319 compiler::InterpreterAssembler* assembler) { |
272 // Get the global object. | 320 // Get the global object. |
273 Node* context = __ GetContext(); | 321 Node* context = __ GetContext(); |
274 Node* global = __ LoadContextSlot(context, Context::GLOBAL_OBJECT_INDEX); | 322 Node* global = __ LoadContextSlot(context, Context::GLOBAL_OBJECT_INDEX); |
275 | 323 |
276 // Store the global via the StoreIC. | 324 // Store the global via the StoreIC. |
277 Node* code_target = __ HeapConstant(ic.code()); | 325 Node* code_target = __ HeapConstant(ic.code()); |
278 Node* constant_index = __ BytecodeOperandIdx(0); | 326 Node* constant_index = __ BytecodeOperandIdx(0); |
279 Node* name = __ LoadConstantPoolEntry(constant_index); | 327 Node* name = __ LoadConstantPoolEntry(constant_index); |
(...skipping 1098 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1378 Node* cache_length = __ LoadFixedArrayElement(for_in_state, 3); | 1426 Node* cache_length = __ LoadFixedArrayElement(for_in_state, 3); |
1379 Node* result = __ CallRuntime(Runtime::kForInDone, index, cache_length); | 1427 Node* result = __ CallRuntime(Runtime::kForInDone, index, cache_length); |
1380 __ SetAccumulator(result); | 1428 __ SetAccumulator(result); |
1381 __ Dispatch(); | 1429 __ Dispatch(); |
1382 } | 1430 } |
1383 | 1431 |
1384 | 1432 |
1385 } // namespace interpreter | 1433 } // namespace interpreter |
1386 } // namespace internal | 1434 } // namespace internal |
1387 } // namespace v8 | 1435 } // namespace v8 |
OLD | NEW |