Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(118)

Side by Side Diff: src/code-stubs-hydrogen.cc

Issue 1527863003: [stubs] Fix TypeOfStub to properly return "undefined" for undetectable. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | test/cctest/test-api.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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-stubs.h" 5 #include "src/code-stubs.h"
6 6
7 #include "src/bailout-reason.h" 7 #include "src/bailout-reason.h"
8 #include "src/crankshaft/hydrogen.h" 8 #include "src/crankshaft/hydrogen.h"
9 #include "src/crankshaft/lithium.h" 9 #include "src/crankshaft/lithium.h"
10 #include "src/field-index.h" 10 #include "src/field-index.h"
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 is_##type.If<HCompareObjectEqAndBranch>( \ 389 is_##type.If<HCompareObjectEqAndBranch>( \
390 map, Add<HConstant>(factory->type##_map())); \ 390 map, Add<HConstant>(factory->type##_map())); \
391 is_##type.Then(); \ 391 is_##type.Then(); \
392 { Push(Add<HConstant>(factory->type##_string())); } \ 392 { Push(Add<HConstant>(factory->type##_string())); } \
393 is_##type.Else(); { 393 is_##type.Else(); {
394 SIMD128_TYPES(SIMD128_BUILDER_OPEN) 394 SIMD128_TYPES(SIMD128_BUILDER_OPEN)
395 #undef SIMD128_BUILDER_OPEN 395 #undef SIMD128_BUILDER_OPEN
396 // Is it an undetectable object? 396 // Is it an undetectable object?
397 IfBuilder is_undetectable(this); 397 IfBuilder is_undetectable(this);
398 is_undetectable.If<HCompareNumericAndBranch>( 398 is_undetectable.If<HCompareNumericAndBranch>(
399 bit_field_masked, Add<HConstant>(1 << Map::kIsUndetectable), 399 bit_field_masked, graph()->GetConstant0(), Token::NE);
400 Token::EQ);
401 is_undetectable.Then(); 400 is_undetectable.Then();
402 { 401 {
403 // typeof an undetectable object is 'undefined'. 402 // typeof an undetectable object is 'undefined'.
404 Push(Add<HConstant>(factory->undefined_string())); 403 Push(Add<HConstant>(factory->undefined_string()));
405 } 404 }
406 is_undetectable.Else(); 405 is_undetectable.Else();
407 { 406 {
408 // For any kind of object not handled above, the spec rule for 407 // For any kind of object not handled above, the spec rule for
409 // host objects gives that it is okay to return "object". 408 // host objects gives that it is okay to return "object".
410 Push(object_string); 409 Push(object_string);
(...skipping 2016 matching lines...) Expand 10 before | Expand all | Expand 10 after
2427 return Pop(); 2426 return Pop();
2428 } 2427 }
2429 2428
2430 2429
2431 Handle<Code> KeyedLoadGenericStub::GenerateCode() { 2430 Handle<Code> KeyedLoadGenericStub::GenerateCode() {
2432 return DoGenerateCode(this); 2431 return DoGenerateCode(this);
2433 } 2432 }
2434 2433
2435 } // namespace internal 2434 } // namespace internal
2436 } // namespace v8 2435 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | test/cctest/test-api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698