| OLD | NEW |
| 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/v8.h" | 5 #include "src/v8.h" |
| 6 | 6 |
| 7 #include "src/bailout-reason.h" | 7 #include "src/bailout-reason.h" |
| 8 #include "src/code-stubs.h" | 8 #include "src/code-stubs.h" |
| 9 #include "src/field-index.h" | 9 #include "src/field-index.h" |
| 10 #include "src/hydrogen.h" | 10 #include "src/hydrogen.h" |
| (...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 372 HConstant* js_function_proxy = | 372 HConstant* js_function_proxy = |
| 373 Add<HConstant>(JS_FUNCTION_PROXY_TYPE); | 373 Add<HConstant>(JS_FUNCTION_PROXY_TYPE); |
| 374 is_function.If<HCompareNumericAndBranch>(instance_type, js_function, | 374 is_function.If<HCompareNumericAndBranch>(instance_type, js_function, |
| 375 Token::EQ); | 375 Token::EQ); |
| 376 is_function.OrIf<HCompareNumericAndBranch>( | 376 is_function.OrIf<HCompareNumericAndBranch>( |
| 377 instance_type, js_function_proxy, Token::EQ); | 377 instance_type, js_function_proxy, Token::EQ); |
| 378 is_function.Then(); | 378 is_function.Then(); |
| 379 { Push(Add<HConstant>(factory->function_string())); } | 379 { Push(Add<HConstant>(factory->function_string())); } |
| 380 is_function.Else(); | 380 is_function.Else(); |
| 381 { | 381 { |
| 382 // Is it an undetectable object? | 382 IfBuilder is_float32x4(this); |
| 383 IfBuilder is_undetectable(this); | 383 is_float32x4.If<HCompareNumericAndBranch>( |
| 384 is_undetectable.If<HIsUndetectableAndBranch>(object); | 384 instance_type, Add<HConstant>(FLOAT32X4_TYPE), Token::EQ); |
| 385 is_undetectable.Then(); | 385 is_float32x4.Then(); |
| 386 { Push(Add<HConstant>(factory->float32x4_string())); } |
| 387 is_float32x4.Else(); |
| 386 { | 388 { |
| 387 // typeof an undetectable object is 'undefined'. | 389 // Is it an undetectable object? |
| 388 Push(undefined_string); | 390 IfBuilder is_undetectable(this); |
| 389 } | 391 is_undetectable.If<HIsUndetectableAndBranch>(object); |
| 390 is_undetectable.Else(); | 392 is_undetectable.Then(); |
| 391 { | 393 { |
| 392 // For any kind of object not handled above, the spec rule for | 394 // typeof an undetectable object is 'undefined'. |
| 393 // host objects gives that it is okay to return "object". | 395 Push(undefined_string); |
| 394 Push(object_string); | 396 } |
| 397 is_undetectable.Else(); |
| 398 { |
| 399 // For any kind of object not handled above, the spec rule for |
| 400 // host objects gives that it is okay to return "object". |
| 401 Push(object_string); |
| 402 } |
| 395 } | 403 } |
| 396 } | 404 } |
| 397 is_function.End(); | 405 is_function.End(); |
| 398 } | 406 } |
| 399 is_symbol.End(); | 407 is_symbol.End(); |
| 400 } | 408 } |
| 401 is_oddball.End(); | 409 is_oddball.End(); |
| 402 } | 410 } |
| 403 is_string.End(); | 411 is_string.End(); |
| 404 } | 412 } |
| (...skipping 1821 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2226 return Pop(); | 2234 return Pop(); |
| 2227 } | 2235 } |
| 2228 | 2236 |
| 2229 | 2237 |
| 2230 Handle<Code> KeyedLoadGenericStub::GenerateCode() { | 2238 Handle<Code> KeyedLoadGenericStub::GenerateCode() { |
| 2231 return DoGenerateCode(this); | 2239 return DoGenerateCode(this); |
| 2232 } | 2240 } |
| 2233 | 2241 |
| 2234 } // namespace internal | 2242 } // namespace internal |
| 2235 } // namespace v8 | 2243 } // namespace v8 |
| OLD | NEW |