Index: src/builtins/builtins-string.cc |
diff --git a/src/builtins/builtins-string.cc b/src/builtins/builtins-string.cc |
index 8a94c20a3087eb3f89c11fce48dada1dad22cda1..58e3ea4d650a081d4b798190c24e26d97337d1c4 100644 |
--- a/src/builtins/builtins-string.cc |
+++ b/src/builtins/builtins-string.cc |
@@ -434,11 +434,12 @@ void Builtins::Generate_StringFromCharCode( |
typedef CodeStubAssembler::Variable Variable; |
CodeStubAssembler assembler(state); |
- Node* argc = assembler.ChangeInt32ToIntPtr( |
- assembler.Parameter(BuiltinDescriptor::kArgumentsCount)); |
+ Node* argc = assembler.Parameter(BuiltinDescriptor::kArgumentsCount); |
Node* context = assembler.Parameter(BuiltinDescriptor::kContext); |
CodeStubArguments arguments(&assembler, argc); |
+ // From now on use word-size argc value. |
+ argc = arguments.GetLength(); |
// Check if we have exactly one argument (plus the implicit receiver), i.e. |
// if the parent frame is not an arguments adaptor frame. |
@@ -1312,7 +1313,7 @@ compiler::Node* LoadSurrogatePairInternal(CodeStubAssembler* assembler, |
typedef CodeStubAssembler::Variable Variable; |
Label handle_surrogate_pair(assembler), return_result(assembler); |
Variable var_result(assembler, MachineRepresentation::kWord32); |
- Variable var_trail(assembler, MachineRepresentation::kWord16); |
+ Variable var_trail(assembler, MachineRepresentation::kWord32); |
var_result.Bind(assembler->StringCharCodeAt(string, index)); |
var_trail.Bind(assembler->Int32Constant(0)); |
@@ -1350,12 +1351,12 @@ compiler::Node* LoadSurrogatePairInternal(CodeStubAssembler* assembler, |
switch (encoding) { |
case UnicodeEncoding::UTF16: |
- var_result.Bind(assembler->WordOr( |
+ var_result.Bind(assembler->Word32Or( |
// Need to swap the order for big-endian platforms |
#if V8_TARGET_BIG_ENDIAN |
- assembler->WordShl(lead, assembler->Int32Constant(16)), trail)); |
+ assembler->Word32Shl(lead, assembler->Int32Constant(16)), trail)); |
#else |
- assembler->WordShl(trail, assembler->Int32Constant(16)), lead)); |
+ assembler->Word32Shl(trail, assembler->Int32Constant(16)), lead)); |
#endif |
break; |
@@ -1410,8 +1411,8 @@ void Builtins::Generate_StringIteratorPrototypeNext( |
assembler.GotoIf(assembler.TaggedIsSmi(iterator), &throw_bad_receiver); |
assembler.GotoUnless( |
- assembler.WordEqual(assembler.LoadInstanceType(iterator), |
- assembler.Int32Constant(JS_STRING_ITERATOR_TYPE)), |
+ assembler.Word32Equal(assembler.LoadInstanceType(iterator), |
+ assembler.Int32Constant(JS_STRING_ITERATOR_TYPE)), |
&throw_bad_receiver); |
Node* string = |