OLD | NEW |
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 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/code-stub-assembler.h" | 5 #include "src/code-stub-assembler.h" |
6 #include "src/code-factory.h" | 6 #include "src/code-factory.h" |
7 #include "src/frames-inl.h" | 7 #include "src/frames-inl.h" |
8 #include "src/frames.h" | 8 #include "src/frames.h" |
9 #include "src/ic/stub-cache.h" | 9 #include "src/ic/stub-cache.h" |
10 | 10 |
(...skipping 2400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2411 // Ensure receiver is JSReceiver, otherwise bailout. | 2411 // Ensure receiver is JSReceiver, otherwise bailout. |
2412 Label if_objectisnotsmi(this); | 2412 Label if_objectisnotsmi(this); |
2413 Branch(WordIsSmi(receiver), if_bailout, &if_objectisnotsmi); | 2413 Branch(WordIsSmi(receiver), if_bailout, &if_objectisnotsmi); |
2414 Bind(&if_objectisnotsmi); | 2414 Bind(&if_objectisnotsmi); |
2415 | 2415 |
2416 Node* map = LoadMap(receiver); | 2416 Node* map = LoadMap(receiver); |
2417 Node* instance_type = LoadMapInstanceType(map); | 2417 Node* instance_type = LoadMapInstanceType(map); |
2418 { | 2418 { |
2419 Label if_objectisreceiver(this); | 2419 Label if_objectisreceiver(this); |
2420 STATIC_ASSERT(LAST_JS_RECEIVER_TYPE == LAST_TYPE); | 2420 STATIC_ASSERT(LAST_JS_RECEIVER_TYPE == LAST_TYPE); |
2421 Branch(Int32GreaterThanOrEqual(instance_type, | 2421 STATIC_ASSERT(FIRST_JS_RECEIVER_TYPE == JS_PROXY_TYPE); |
2422 Int32Constant(FIRST_JS_RECEIVER_TYPE)), | 2422 Branch( |
2423 &if_objectisreceiver, if_bailout); | 2423 Int32GreaterThan(instance_type, Int32Constant(FIRST_JS_RECEIVER_TYPE)), |
| 2424 &if_objectisreceiver, if_bailout); |
2424 Bind(&if_objectisreceiver); | 2425 Bind(&if_objectisreceiver); |
2425 } | 2426 } |
2426 | 2427 |
2427 Variable var_index(this, MachineRepresentation::kWord32); | 2428 Variable var_index(this, MachineRepresentation::kWord32); |
2428 | 2429 |
2429 Label if_keyisindex(this), if_iskeyunique(this); | 2430 Label if_keyisindex(this), if_iskeyunique(this); |
2430 TryToName(key, &if_keyisindex, &var_index, &if_iskeyunique, if_bailout); | 2431 TryToName(key, &if_keyisindex, &var_index, &if_iskeyunique, if_bailout); |
2431 | 2432 |
2432 Bind(&if_iskeyunique); | 2433 Bind(&if_iskeyunique); |
2433 { | 2434 { |
(...skipping 625 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3059 } | 3060 } |
3060 Bind(&miss); | 3061 Bind(&miss); |
3061 { | 3062 { |
3062 TailCallRuntime(Runtime::kLoadGlobalIC_Miss, p->context, p->slot, | 3063 TailCallRuntime(Runtime::kLoadGlobalIC_Miss, p->context, p->slot, |
3063 p->vector); | 3064 p->vector); |
3064 } | 3065 } |
3065 } | 3066 } |
3066 | 3067 |
3067 } // namespace internal | 3068 } // namespace internal |
3068 } // namespace v8 | 3069 } // namespace v8 |
OLD | NEW |