OLD | NEW |
1 // Copyright 2009 the V8 project authors. All rights reserved. | 1 // Copyright 2009 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 964 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
975 receiver.Unuse(); | 975 receiver.Unuse(); |
976 return RawCallCodeObject(ic, RelocInfo::CODE_TARGET); | 976 return RawCallCodeObject(ic, RelocInfo::CODE_TARGET); |
977 } | 977 } |
978 | 978 |
979 | 979 |
980 Result VirtualFrame::CallKeyedStoreIC() { | 980 Result VirtualFrame::CallKeyedStoreIC() { |
981 // Value, key, and receiver are on the top of the frame. The IC | 981 // Value, key, and receiver are on the top of the frame. The IC |
982 // expects value in eax and key and receiver on the stack. It does | 982 // expects value in eax and key and receiver on the stack. It does |
983 // not drop the key and receiver. | 983 // not drop the key and receiver. |
984 Handle<Code> ic(Builtins::builtin(Builtins::KeyedStoreIC_Initialize)); | 984 Handle<Code> ic(Builtins::builtin(Builtins::KeyedStoreIC_Initialize)); |
985 // TODO(1222589): Make the IC grab the values from the stack. | |
986 Result value = Pop(); | 985 Result value = Pop(); |
987 PrepareForCall(2, 0); // Two stack args, neither callee-dropped. | 986 PrepareForCall(2, 0); // Two stack args, neither callee-dropped. |
988 value.ToRegister(eax); | 987 value.ToRegister(eax); |
989 value.Unuse(); | 988 value.Unuse(); |
990 return RawCallCodeObject(ic, RelocInfo::CODE_TARGET); | 989 return RawCallCodeObject(ic, RelocInfo::CODE_TARGET); |
991 } | 990 } |
992 | 991 |
993 | 992 |
994 Result VirtualFrame::CallCallIC(RelocInfo::Mode mode, | 993 Result VirtualFrame::CallCallIC(RelocInfo::Mode mode, |
995 int arg_count, | 994 int arg_count, |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1156 ASSERT(stack_pointer_ == element_count() - 1); | 1155 ASSERT(stack_pointer_ == element_count() - 1); |
1157 elements_.Add(FrameElement::MemoryElement(info)); | 1156 elements_.Add(FrameElement::MemoryElement(info)); |
1158 stack_pointer_++; | 1157 stack_pointer_++; |
1159 __ push(immediate); | 1158 __ push(immediate); |
1160 } | 1159 } |
1161 | 1160 |
1162 | 1161 |
1163 #undef __ | 1162 #undef __ |
1164 | 1163 |
1165 } } // namespace v8::internal | 1164 } } // namespace v8::internal |
OLD | NEW |