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

Side by Side Diff: src/interpreter/bytecodes.cc

Issue 1378523005: [Interpreter] Add support for global declarations and load/store of global variables (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@int_toplevel
Patch Set: Fix test Created 5 years, 2 months 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 | « src/interpreter/bytecodes.h ('k') | src/interpreter/interpreter.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 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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/interpreter/bytecodes.h" 5 #include "src/interpreter/bytecodes.h"
6 6
7 #include "src/frames.h" 7 #include "src/frames.h"
8 #include "src/interpreter/bytecode-traits.h" 8 #include "src/interpreter/bytecode-traits.h"
9 9
10 namespace v8 { 10 namespace v8 {
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 } 259 }
260 260
261 261
262 std::ostream& operator<<(std::ostream& os, const OperandSize& operand_size) { 262 std::ostream& operator<<(std::ostream& os, const OperandSize& operand_size) {
263 return os << Bytecodes::OperandSizeToString(operand_size); 263 return os << Bytecodes::OperandSizeToString(operand_size);
264 } 264 }
265 265
266 266
267 static const int kLastParamRegisterIndex = 267 static const int kLastParamRegisterIndex =
268 -InterpreterFrameConstants::kLastParamFromRegisterPointer / kPointerSize; 268 -InterpreterFrameConstants::kLastParamFromRegisterPointer / kPointerSize;
269 static const int kFunctionContextRegisterIndex =
270 -InterpreterFrameConstants::kContextFromRegisterPointer / kPointerSize;
269 271
270 272
271 // Registers occupy range 0-127 in 8-bit value leaving 128 unused values. 273 // Registers occupy range 0-127 in 8-bit value leaving 128 unused values.
272 // Parameter indices are biased with the negative value kLastParamRegisterIndex 274 // Parameter indices are biased with the negative value kLastParamRegisterIndex
273 // for ease of access in the interpreter. 275 // for ease of access in the interpreter.
274 static const int kMaxParameterIndex = 128 + kLastParamRegisterIndex; 276 static const int kMaxParameterIndex = 128 + kLastParamRegisterIndex;
275 277
276 278
277 Register Register::FromParameterIndex(int index, int parameter_count) { 279 Register Register::FromParameterIndex(int index, int parameter_count) {
278 DCHECK_GE(index, 0); 280 DCHECK_GE(index, 0);
279 DCHECK_LT(index, parameter_count); 281 DCHECK_LT(index, parameter_count);
280 DCHECK_LE(parameter_count, kMaxParameterIndex + 1); 282 DCHECK_LE(parameter_count, kMaxParameterIndex + 1);
281 int register_index = kLastParamRegisterIndex - parameter_count + index + 1; 283 int register_index = kLastParamRegisterIndex - parameter_count + index + 1;
282 DCHECK_LT(register_index, 0); 284 DCHECK_LT(register_index, 0);
283 DCHECK_GE(register_index, Register::kMinRegisterIndex); 285 DCHECK_GE(register_index, Register::kMinRegisterIndex);
284 return Register(register_index); 286 return Register(register_index);
285 } 287 }
286 288
287 289
288 int Register::ToParameterIndex(int parameter_count) const { 290 int Register::ToParameterIndex(int parameter_count) const {
289 DCHECK(is_parameter()); 291 DCHECK(is_parameter());
290 return index() - kLastParamRegisterIndex + parameter_count - 1; 292 return index() - kLastParamRegisterIndex + parameter_count - 1;
291 } 293 }
292 294
293 295
296 Register Register::function_context() {
297 return Register(kFunctionContextRegisterIndex);
298 }
299
300
301 bool Register::is_function_context() const {
302 return index() == kFunctionContextRegisterIndex;
303 }
304
305
294 int Register::MaxParameterIndex() { return kMaxParameterIndex; } 306 int Register::MaxParameterIndex() { return kMaxParameterIndex; }
295 307
296 308
297 uint8_t Register::ToOperand() const { return static_cast<uint8_t>(-index_); } 309 uint8_t Register::ToOperand() const { return static_cast<uint8_t>(-index_); }
298 310
299 311
300 Register Register::FromOperand(uint8_t operand) { 312 Register Register::FromOperand(uint8_t operand) {
301 return Register(-static_cast<int8_t>(operand)); 313 return Register(-static_cast<int8_t>(operand));
302 } 314 }
303 315
304 } // namespace interpreter 316 } // namespace interpreter
305 } // namespace internal 317 } // namespace internal
306 } // namespace v8 318 } // namespace v8
OLDNEW
« no previous file with comments | « src/interpreter/bytecodes.h ('k') | src/interpreter/interpreter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698