Index: src/code-stubs-hydrogen.cc |
diff --git a/src/code-stubs-hydrogen.cc b/src/code-stubs-hydrogen.cc |
index 76f1cbf5d1892808e8ba23f69e13c7cf6b3566f6..65bf423ea200c1fea83444ecd65ccd3adaf11364 100644 |
--- a/src/code-stubs-hydrogen.cc |
+++ b/src/code-stubs-hydrogen.cc |
@@ -343,114 +343,6 @@ Handle<Code> NumberToStringStub::GenerateCode() { |
} |
-// Returns the type string of a value; see ECMA-262, 11.4.3 (p 47). |
-template <> |
-HValue* CodeStubGraphBuilder<TypeofStub>::BuildCodeStub() { |
- Factory* factory = isolate()->factory(); |
- HConstant* number_string = Add<HConstant>(factory->number_string()); |
- HValue* object = GetParameter(Descriptor::kObject); |
- |
- IfBuilder is_smi(this); |
- HValue* smi_check = is_smi.If<HIsSmiAndBranch>(object); |
- is_smi.Then(); |
- { Push(number_string); } |
- is_smi.Else(); |
- { |
- IfBuilder is_number(this); |
- is_number.If<HCompareMap>(object, isolate()->factory()->heap_number_map()); |
- is_number.Then(); |
- { Push(number_string); } |
- is_number.Else(); |
- { |
- HValue* map = AddLoadMap(object, smi_check); |
- HValue* instance_type = Add<HLoadNamedField>( |
- map, nullptr, HObjectAccess::ForMapInstanceType()); |
- IfBuilder is_string(this); |
- is_string.If<HCompareNumericAndBranch>( |
- instance_type, Add<HConstant>(FIRST_NONSTRING_TYPE), Token::LT); |
- is_string.Then(); |
- { Push(Add<HConstant>(factory->string_string())); } |
- is_string.Else(); |
- { |
- HConstant* object_string = Add<HConstant>(factory->object_string()); |
- IfBuilder is_oddball(this); |
- is_oddball.If<HCompareNumericAndBranch>( |
- instance_type, Add<HConstant>(ODDBALL_TYPE), Token::EQ); |
- is_oddball.Then(); |
- { |
- Push(Add<HLoadNamedField>(object, nullptr, |
- HObjectAccess::ForOddballTypeOf())); |
- } |
- is_oddball.Else(); |
- { |
- IfBuilder is_symbol(this); |
- is_symbol.If<HCompareNumericAndBranch>( |
- instance_type, Add<HConstant>(SYMBOL_TYPE), Token::EQ); |
- is_symbol.Then(); |
- { Push(Add<HConstant>(factory->symbol_string())); } |
- is_symbol.Else(); |
- { |
- HValue* bit_field = Add<HLoadNamedField>( |
- map, nullptr, HObjectAccess::ForMapBitField()); |
- HValue* bit_field_masked = AddUncasted<HBitwise>( |
- Token::BIT_AND, bit_field, |
- Add<HConstant>((1 << Map::kIsCallable) | |
- (1 << Map::kIsUndetectable))); |
- IfBuilder is_function(this); |
- is_function.If<HCompareNumericAndBranch>( |
- bit_field_masked, Add<HConstant>(1 << Map::kIsCallable), |
- Token::EQ); |
- is_function.Then(); |
- { Push(Add<HConstant>(factory->function_string())); } |
- is_function.Else(); |
- { |
-#define SIMD128_BUILDER_OPEN(TYPE, Type, type, lane_count, lane_type) \ |
- IfBuilder is_##type(this); \ |
- is_##type.If<HCompareObjectEqAndBranch>( \ |
- map, Add<HConstant>(factory->type##_map())); \ |
- is_##type.Then(); \ |
- { Push(Add<HConstant>(factory->type##_string())); } \ |
- is_##type.Else(); { |
- SIMD128_TYPES(SIMD128_BUILDER_OPEN) |
-#undef SIMD128_BUILDER_OPEN |
- // Is it an undetectable object? |
- IfBuilder is_undetectable(this); |
- is_undetectable.If<HCompareNumericAndBranch>( |
- bit_field_masked, graph()->GetConstant0(), Token::NE); |
- is_undetectable.Then(); |
- { |
- // typeof an undetectable object is 'undefined'. |
- Push(Add<HConstant>(factory->undefined_string())); |
- } |
- is_undetectable.Else(); |
- { |
- // For any kind of object not handled above, the spec rule for |
- // host objects gives that it is okay to return "object". |
- Push(object_string); |
- } |
-#define SIMD128_BUILDER_CLOSE(TYPE, Type, type, lane_count, lane_type) } |
- SIMD128_TYPES(SIMD128_BUILDER_CLOSE) |
-#undef SIMD128_BUILDER_CLOSE |
- } |
- is_function.End(); |
- } |
- is_symbol.End(); |
- } |
- is_oddball.End(); |
- } |
- is_string.End(); |
- } |
- is_number.End(); |
- } |
- is_smi.End(); |
- |
- return environment()->Pop(); |
-} |
- |
- |
-Handle<Code> TypeofStub::GenerateCode() { return DoGenerateCode(this); } |
- |
- |
template <> |
HValue* CodeStubGraphBuilder<FastCloneRegExpStub>::BuildCodeStub() { |
HValue* closure = GetParameter(Descriptor::kClosure); |