Index: src/interpreter/bytecode-array-builder.cc |
diff --git a/src/interpreter/bytecode-array-builder.cc b/src/interpreter/bytecode-array-builder.cc |
index 231a9a25af01946fce1a4374bf3b96b467c67e9c..3bef947888f9fec61768b1403dfad057fb3fed31 100644 |
--- a/src/interpreter/bytecode-array-builder.cc |
+++ b/src/interpreter/bytecode-array-builder.cc |
@@ -111,57 +111,37 @@ void BytecodeArrayBuilder::Output(Bytecode bytecode) { |
pipeline()->Write(&node); |
} |
-void BytecodeArrayBuilder::OutputScaled(Bytecode bytecode, |
- OperandScale operand_scale, |
- uint32_t operand0, uint32_t operand1, |
- uint32_t operand2, uint32_t operand3) { |
- DCHECK(OperandIsValid(bytecode, operand_scale, 0, operand0)); |
- DCHECK(OperandIsValid(bytecode, operand_scale, 1, operand1)); |
- DCHECK(OperandIsValid(bytecode, operand_scale, 2, operand2)); |
- DCHECK(OperandIsValid(bytecode, operand_scale, 3, operand3)); |
- BytecodeNode node(bytecode, operand0, operand1, operand2, operand3, |
- operand_scale); |
+void BytecodeArrayBuilder::Output(Bytecode bytecode, uint32_t operand0, |
+ uint32_t operand1, uint32_t operand2, |
+ uint32_t operand3) { |
+ BytecodeNode node(bytecode, operand0, operand1, operand2, operand3); |
AttachSourceInfo(&node); |
pipeline()->Write(&node); |
} |
-void BytecodeArrayBuilder::OutputScaled(Bytecode bytecode, |
- OperandScale operand_scale, |
- uint32_t operand0, uint32_t operand1, |
- uint32_t operand2) { |
- DCHECK(OperandIsValid(bytecode, operand_scale, 0, operand0)); |
- DCHECK(OperandIsValid(bytecode, operand_scale, 1, operand1)); |
- DCHECK(OperandIsValid(bytecode, operand_scale, 2, operand2)); |
- BytecodeNode node(bytecode, operand0, operand1, operand2, operand_scale); |
+void BytecodeArrayBuilder::Output(Bytecode bytecode, uint32_t operand0, |
+ uint32_t operand1, uint32_t operand2) { |
+ BytecodeNode node(bytecode, operand0, operand1, operand2); |
AttachSourceInfo(&node); |
pipeline()->Write(&node); |
} |
-void BytecodeArrayBuilder::OutputScaled(Bytecode bytecode, |
- OperandScale operand_scale, |
- uint32_t operand0, uint32_t operand1) { |
- DCHECK(OperandIsValid(bytecode, operand_scale, 0, operand0)); |
- DCHECK(OperandIsValid(bytecode, operand_scale, 1, operand1)); |
- BytecodeNode node(bytecode, operand0, operand1, operand_scale); |
+void BytecodeArrayBuilder::Output(Bytecode bytecode, uint32_t operand0, |
+ uint32_t operand1) { |
+ BytecodeNode node(bytecode, operand0, operand1); |
AttachSourceInfo(&node); |
pipeline()->Write(&node); |
} |
-void BytecodeArrayBuilder::OutputScaled(Bytecode bytecode, |
- OperandScale operand_scale, |
- uint32_t operand0) { |
- DCHECK(OperandIsValid(bytecode, operand_scale, 0, operand0)); |
- BytecodeNode node(bytecode, operand0, operand_scale); |
+void BytecodeArrayBuilder::Output(Bytecode bytecode, uint32_t operand0) { |
+ BytecodeNode node(bytecode, operand0); |
AttachSourceInfo(&node); |
pipeline()->Write(&node); |
} |
BytecodeArrayBuilder& BytecodeArrayBuilder::BinaryOperation(Token::Value op, |
Register reg) { |
- OperandScale operand_scale = |
- Bytecodes::OperandSizesToScale(reg.SizeOfOperand()); |
- OutputScaled(BytecodeForBinaryOperation(op), operand_scale, |
- RegisterOperand(reg)); |
+ Output(BytecodeForBinaryOperation(op), RegisterOperand(reg)); |
return *this; |
} |
@@ -183,10 +163,7 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::TypeOf() { |
BytecodeArrayBuilder& BytecodeArrayBuilder::CompareOperation(Token::Value op, |
Register reg) { |
- OperandScale operand_scale = |
- Bytecodes::OperandSizesToScale(reg.SizeOfOperand()); |
- OutputScaled(BytecodeForCompareOperation(op), operand_scale, |
- RegisterOperand(reg)); |
+ Output(BytecodeForCompareOperation(op), RegisterOperand(reg)); |
return *this; |
} |
@@ -196,19 +173,14 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::LoadLiteral( |
if (raw_smi == 0) { |
Output(Bytecode::kLdaZero); |
} else { |
- OperandSize operand_size = Bytecodes::SizeForSignedOperand(raw_smi); |
- OperandScale operand_scale = Bytecodes::OperandSizesToScale(operand_size); |
- OutputScaled(Bytecode::kLdaSmi, operand_scale, |
- SignedOperand(raw_smi, operand_size)); |
+ Output(Bytecode::kLdaSmi, SignedOperand(raw_smi)); |
} |
return *this; |
} |
BytecodeArrayBuilder& BytecodeArrayBuilder::LoadLiteral(Handle<Object> object) { |
size_t entry = GetConstantPoolEntry(object); |
- OperandScale operand_scale = |
- Bytecodes::OperandSizesToScale(Bytecodes::SizeForUnsignedOperand(entry)); |
- OutputScaled(Bytecode::kLdaConstant, operand_scale, UnsignedOperand(entry)); |
+ Output(Bytecode::kLdaConstant, UnsignedOperand(entry)); |
return *this; |
} |
@@ -239,27 +211,20 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::LoadFalse() { |
BytecodeArrayBuilder& BytecodeArrayBuilder::LoadAccumulatorWithRegister( |
Register reg) { |
- OperandScale operand_scale = |
- Bytecodes::OperandSizesToScale(reg.SizeOfOperand()); |
- OutputScaled(Bytecode::kLdar, operand_scale, RegisterOperand(reg)); |
+ Output(Bytecode::kLdar, RegisterOperand(reg)); |
return *this; |
} |
BytecodeArrayBuilder& BytecodeArrayBuilder::StoreAccumulatorInRegister( |
Register reg) { |
- OperandScale operand_scale = |
- Bytecodes::OperandSizesToScale(reg.SizeOfOperand()); |
- OutputScaled(Bytecode::kStar, operand_scale, RegisterOperand(reg)); |
+ Output(Bytecode::kStar, RegisterOperand(reg)); |
return *this; |
} |
BytecodeArrayBuilder& BytecodeArrayBuilder::MoveRegister(Register from, |
Register to) { |
DCHECK(from != to); |
- OperandScale operand_scale = |
- Bytecodes::OperandSizesToScale(from.SizeOfOperand(), to.SizeOfOperand()); |
- OutputScaled(Bytecode::kMov, operand_scale, RegisterOperand(from), |
- RegisterOperand(to)); |
+ Output(Bytecode::kMov, RegisterOperand(from), RegisterOperand(to)); |
return *this; |
} |
@@ -269,11 +234,7 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::LoadGlobal( |
// operand rather than having extra bytecodes. |
Bytecode bytecode = BytecodeForLoadGlobal(typeof_mode); |
size_t name_index = GetConstantPoolEntry(name); |
- OperandScale operand_scale = Bytecodes::OperandSizesToScale( |
- Bytecodes::SizeForUnsignedOperand(name_index), |
- Bytecodes::SizeForUnsignedOperand(feedback_slot)); |
- OutputScaled(bytecode, operand_scale, UnsignedOperand(name_index), |
- UnsignedOperand(feedback_slot)); |
+ Output(bytecode, UnsignedOperand(name_index), UnsignedOperand(feedback_slot)); |
return *this; |
} |
@@ -281,29 +242,21 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::StoreGlobal( |
const Handle<String> name, int feedback_slot, LanguageMode language_mode) { |
Bytecode bytecode = BytecodeForStoreGlobal(language_mode); |
size_t name_index = GetConstantPoolEntry(name); |
- OperandScale operand_scale = Bytecodes::OperandSizesToScale( |
- Bytecodes::SizeForUnsignedOperand(name_index), |
- Bytecodes::SizeForUnsignedOperand(feedback_slot)); |
- OutputScaled(bytecode, operand_scale, UnsignedOperand(name_index), |
- UnsignedOperand(feedback_slot)); |
+ Output(bytecode, UnsignedOperand(name_index), UnsignedOperand(feedback_slot)); |
return *this; |
} |
BytecodeArrayBuilder& BytecodeArrayBuilder::LoadContextSlot(Register context, |
int slot_index) { |
- OperandScale operand_scale = Bytecodes::OperandSizesToScale( |
- context.SizeOfOperand(), Bytecodes::SizeForUnsignedOperand(slot_index)); |
- OutputScaled(Bytecode::kLdaContextSlot, operand_scale, |
- RegisterOperand(context), UnsignedOperand(slot_index)); |
+ Output(Bytecode::kLdaContextSlot, RegisterOperand(context), |
+ UnsignedOperand(slot_index)); |
return *this; |
} |
BytecodeArrayBuilder& BytecodeArrayBuilder::StoreContextSlot(Register context, |
int slot_index) { |
- OperandScale operand_scale = Bytecodes::OperandSizesToScale( |
- context.SizeOfOperand(), Bytecodes::SizeForUnsignedOperand(slot_index)); |
- OutputScaled(Bytecode::kStaContextSlot, operand_scale, |
- RegisterOperand(context), UnsignedOperand(slot_index)); |
+ Output(Bytecode::kStaContextSlot, RegisterOperand(context), |
+ UnsignedOperand(slot_index)); |
return *this; |
} |
@@ -313,9 +266,7 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::LoadLookupSlot( |
? Bytecode::kLdaLookupSlotInsideTypeof |
: Bytecode::kLdaLookupSlot; |
size_t name_index = GetConstantPoolEntry(name); |
- OperandScale operand_scale = Bytecodes::OperandSizesToScale( |
- Bytecodes::SizeForUnsignedOperand(name_index)); |
- OutputScaled(bytecode, operand_scale, UnsignedOperand(name_index)); |
+ Output(bytecode, UnsignedOperand(name_index)); |
return *this; |
} |
@@ -323,30 +274,22 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::StoreLookupSlot( |
const Handle<String> name, LanguageMode language_mode) { |
Bytecode bytecode = BytecodeForStoreLookupSlot(language_mode); |
size_t name_index = GetConstantPoolEntry(name); |
- OperandScale operand_scale = Bytecodes::OperandSizesToScale( |
- Bytecodes::SizeForUnsignedOperand(name_index)); |
- OutputScaled(bytecode, operand_scale, UnsignedOperand(name_index)); |
+ Output(bytecode, UnsignedOperand(name_index)); |
return *this; |
} |
BytecodeArrayBuilder& BytecodeArrayBuilder::LoadNamedProperty( |
Register object, const Handle<Name> name, int feedback_slot) { |
size_t name_index = GetConstantPoolEntry(name); |
- OperandScale operand_scale = Bytecodes::OperandSizesToScale( |
- object.SizeOfOperand(), Bytecodes::SizeForUnsignedOperand(name_index), |
- Bytecodes::SizeForUnsignedOperand(feedback_slot)); |
- OutputScaled(Bytecode::kLdaNamedProperty, operand_scale, |
- RegisterOperand(object), UnsignedOperand(name_index), |
- UnsignedOperand(feedback_slot)); |
+ Output(Bytecode::kLdaNamedProperty, RegisterOperand(object), |
+ UnsignedOperand(name_index), UnsignedOperand(feedback_slot)); |
return *this; |
} |
BytecodeArrayBuilder& BytecodeArrayBuilder::LoadKeyedProperty( |
Register object, int feedback_slot) { |
- OperandScale operand_scale = Bytecodes::OperandSizesToScale( |
- object.SizeOfOperand(), Bytecodes::SizeForUnsignedOperand(feedback_slot)); |
- OutputScaled(Bytecode::kLdaKeyedProperty, operand_scale, |
- RegisterOperand(object), UnsignedOperand(feedback_slot)); |
+ Output(Bytecode::kLdaKeyedProperty, RegisterOperand(object), |
+ UnsignedOperand(feedback_slot)); |
return *this; |
} |
@@ -355,11 +298,8 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::StoreNamedProperty( |
LanguageMode language_mode) { |
Bytecode bytecode = BytecodeForStoreNamedProperty(language_mode); |
size_t name_index = GetConstantPoolEntry(name); |
- OperandScale operand_scale = Bytecodes::OperandSizesToScale( |
- object.SizeOfOperand(), Bytecodes::SizeForUnsignedOperand(name_index), |
- Bytecodes::SizeForUnsignedOperand(feedback_slot)); |
- OutputScaled(bytecode, operand_scale, RegisterOperand(object), |
- UnsignedOperand(name_index), UnsignedOperand(feedback_slot)); |
+ Output(bytecode, RegisterOperand(object), UnsignedOperand(name_index), |
+ UnsignedOperand(feedback_slot)); |
return *this; |
} |
@@ -367,21 +307,16 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::StoreKeyedProperty( |
Register object, Register key, int feedback_slot, |
LanguageMode language_mode) { |
Bytecode bytecode = BytecodeForStoreKeyedProperty(language_mode); |
- OperandScale operand_scale = Bytecodes::OperandSizesToScale( |
- object.SizeOfOperand(), key.SizeOfOperand(), |
- Bytecodes::SizeForUnsignedOperand(feedback_slot)); |
- OutputScaled(bytecode, operand_scale, RegisterOperand(object), |
- RegisterOperand(key), UnsignedOperand(feedback_slot)); |
+ Output(bytecode, RegisterOperand(object), RegisterOperand(key), |
+ UnsignedOperand(feedback_slot)); |
return *this; |
} |
BytecodeArrayBuilder& BytecodeArrayBuilder::CreateClosure( |
Handle<SharedFunctionInfo> shared_info, PretenureFlag tenured) { |
size_t entry = GetConstantPoolEntry(shared_info); |
- OperandScale operand_scale = |
- Bytecodes::OperandSizesToScale(Bytecodes::SizeForUnsignedOperand(entry)); |
- OutputScaled(Bytecode::kCreateClosure, operand_scale, UnsignedOperand(entry), |
- UnsignedOperand(static_cast<size_t>(tenured))); |
+ Output(Bytecode::kCreateClosure, UnsignedOperand(entry), |
+ UnsignedOperand(static_cast<size_t>(tenured))); |
return *this; |
} |
@@ -398,53 +333,36 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::CreateArguments( |
BytecodeArrayBuilder& BytecodeArrayBuilder::CreateRegExpLiteral( |
Handle<String> pattern, int literal_index, int flags) { |
size_t pattern_entry = GetConstantPoolEntry(pattern); |
- OperandScale operand_scale = Bytecodes::OperandSizesToScale( |
- Bytecodes::SizeForUnsignedOperand(pattern_entry), |
- Bytecodes::SizeForUnsignedOperand(literal_index), |
- Bytecodes::SizeForUnsignedOperand(flags)); |
- OutputScaled(Bytecode::kCreateRegExpLiteral, operand_scale, |
- UnsignedOperand(pattern_entry), UnsignedOperand(literal_index), |
- UnsignedOperand(flags)); |
+ Output(Bytecode::kCreateRegExpLiteral, UnsignedOperand(pattern_entry), |
+ UnsignedOperand(literal_index), UnsignedOperand(flags)); |
return *this; |
} |
BytecodeArrayBuilder& BytecodeArrayBuilder::CreateArrayLiteral( |
Handle<FixedArray> constant_elements, int literal_index, int flags) { |
size_t constant_elements_entry = GetConstantPoolEntry(constant_elements); |
- OperandScale operand_scale = Bytecodes::OperandSizesToScale( |
- Bytecodes::SizeForUnsignedOperand(constant_elements_entry), |
- Bytecodes::SizeForUnsignedOperand(literal_index), |
- Bytecodes::SizeForUnsignedOperand(flags)); |
- OutputScaled(Bytecode::kCreateArrayLiteral, operand_scale, |
- UnsignedOperand(constant_elements_entry), |
- UnsignedOperand(literal_index), UnsignedOperand(flags)); |
+ Output(Bytecode::kCreateArrayLiteral, |
+ UnsignedOperand(constant_elements_entry), |
+ UnsignedOperand(literal_index), UnsignedOperand(flags)); |
return *this; |
} |
BytecodeArrayBuilder& BytecodeArrayBuilder::CreateObjectLiteral( |
Handle<FixedArray> constant_properties, int literal_index, int flags) { |
size_t constant_properties_entry = GetConstantPoolEntry(constant_properties); |
- OperandScale operand_scale = Bytecodes::OperandSizesToScale( |
- Bytecodes::SizeForUnsignedOperand(constant_properties_entry), |
- Bytecodes::SizeForUnsignedOperand(literal_index), |
- Bytecodes::SizeForUnsignedOperand(flags)); |
- OutputScaled(Bytecode::kCreateObjectLiteral, operand_scale, |
- UnsignedOperand(constant_properties_entry), |
- UnsignedOperand(literal_index), UnsignedOperand(flags)); |
+ Output(Bytecode::kCreateObjectLiteral, |
+ UnsignedOperand(constant_properties_entry), |
+ UnsignedOperand(literal_index), UnsignedOperand(flags)); |
return *this; |
} |
BytecodeArrayBuilder& BytecodeArrayBuilder::PushContext(Register context) { |
- OperandScale operand_scale = |
- Bytecodes::OperandSizesToScale(context.SizeOfOperand()); |
- OutputScaled(Bytecode::kPushContext, operand_scale, RegisterOperand(context)); |
+ Output(Bytecode::kPushContext, RegisterOperand(context)); |
return *this; |
} |
BytecodeArrayBuilder& BytecodeArrayBuilder::PopContext(Register context) { |
- OperandScale operand_scale = |
- Bytecodes::OperandSizesToScale(context.SizeOfOperand()); |
- OutputScaled(Bytecode::kPopContext, operand_scale, RegisterOperand(context)); |
+ Output(Bytecode::kPopContext, RegisterOperand(context)); |
return *this; |
} |
@@ -478,7 +396,7 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::Bind(const BytecodeLabel& target, |
BytecodeArrayBuilder& BytecodeArrayBuilder::OutputJump(Bytecode jump_bytecode, |
BytecodeLabel* label) { |
- BytecodeNode node(jump_bytecode, 0, OperandScale::kSingle); |
+ BytecodeNode node(jump_bytecode, 0); |
AttachSourceInfo(&node); |
pipeline_->WriteJump(&node, label); |
LeaveBasicBlock(); |
@@ -548,57 +466,40 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::Debugger() { |
BytecodeArrayBuilder& BytecodeArrayBuilder::ForInPrepare( |
Register cache_info_triple) { |
- OperandScale operand_scale = |
- Bytecodes::OperandSizesToScale(cache_info_triple.SizeOfOperand()); |
- OutputScaled(Bytecode::kForInPrepare, operand_scale, |
- RegisterOperand(cache_info_triple)); |
+ Output(Bytecode::kForInPrepare, RegisterOperand(cache_info_triple)); |
return *this; |
} |
BytecodeArrayBuilder& BytecodeArrayBuilder::ForInDone(Register index, |
Register cache_length) { |
- OperandScale operand_scale = Bytecodes::OperandSizesToScale( |
- index.SizeOfOperand(), cache_length.SizeOfOperand()); |
- OutputScaled(Bytecode::kForInDone, operand_scale, RegisterOperand(index), |
- RegisterOperand(cache_length)); |
+ Output(Bytecode::kForInDone, RegisterOperand(index), |
+ RegisterOperand(cache_length)); |
return *this; |
} |
BytecodeArrayBuilder& BytecodeArrayBuilder::ForInNext( |
Register receiver, Register index, Register cache_type_array_pair, |
int feedback_slot) { |
- OperandScale operand_scale = Bytecodes::OperandSizesToScale( |
- receiver.SizeOfOperand(), index.SizeOfOperand(), |
- cache_type_array_pair.SizeOfOperand(), |
- Bytecodes::SizeForUnsignedOperand(feedback_slot)); |
- OutputScaled(Bytecode::kForInNext, operand_scale, RegisterOperand(receiver), |
- RegisterOperand(index), RegisterOperand(cache_type_array_pair), |
- UnsignedOperand(feedback_slot)); |
+ Output(Bytecode::kForInNext, RegisterOperand(receiver), |
+ RegisterOperand(index), RegisterOperand(cache_type_array_pair), |
+ UnsignedOperand(feedback_slot)); |
return *this; |
} |
BytecodeArrayBuilder& BytecodeArrayBuilder::ForInStep(Register index) { |
- OperandScale operand_scale = |
- Bytecodes::OperandSizesToScale(index.SizeOfOperand()); |
- OutputScaled(Bytecode::kForInStep, operand_scale, RegisterOperand(index)); |
+ Output(Bytecode::kForInStep, RegisterOperand(index)); |
return *this; |
} |
BytecodeArrayBuilder& BytecodeArrayBuilder::SuspendGenerator( |
Register generator) { |
- OperandScale operand_scale = |
- Bytecodes::OperandSizesToScale(generator.SizeOfOperand()); |
- OutputScaled(Bytecode::kSuspendGenerator, operand_scale, |
- RegisterOperand(generator)); |
+ Output(Bytecode::kSuspendGenerator, RegisterOperand(generator)); |
return *this; |
} |
BytecodeArrayBuilder& BytecodeArrayBuilder::ResumeGenerator( |
Register generator) { |
- OperandScale operand_scale = |
- Bytecodes::OperandSizesToScale(generator.SizeOfOperand()); |
- OutputScaled(Bytecode::kResumeGenerator, operand_scale, |
- RegisterOperand(generator)); |
+ Output(Bytecode::kResumeGenerator, RegisterOperand(generator)); |
return *this; |
} |
@@ -642,14 +543,8 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::Call(Register callable, |
int feedback_slot, |
TailCallMode tail_call_mode) { |
Bytecode bytecode = BytecodeForCall(tail_call_mode); |
- OperandScale operand_scale = Bytecodes::OperandSizesToScale( |
- callable.SizeOfOperand(), receiver_args.SizeOfOperand(), |
- Bytecodes::SizeForUnsignedOperand(receiver_args_count), |
- Bytecodes::SizeForUnsignedOperand(feedback_slot)); |
- OutputScaled(bytecode, operand_scale, RegisterOperand(callable), |
- RegisterOperand(receiver_args), |
- UnsignedOperand(receiver_args_count), |
- UnsignedOperand(feedback_slot)); |
+ Output(bytecode, RegisterOperand(callable), RegisterOperand(receiver_args), |
+ UnsignedOperand(receiver_args_count), UnsignedOperand(feedback_slot)); |
return *this; |
} |
@@ -660,11 +555,8 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::New(Register constructor, |
DCHECK_EQ(0u, arg_count); |
first_arg = Register(0); |
} |
- OperandScale operand_scale = Bytecodes::OperandSizesToScale( |
- constructor.SizeOfOperand(), first_arg.SizeOfOperand(), |
- Bytecodes::SizeForUnsignedOperand(arg_count)); |
- OutputScaled(Bytecode::kNew, operand_scale, RegisterOperand(constructor), |
- RegisterOperand(first_arg), UnsignedOperand(arg_count)); |
+ Output(Bytecode::kNew, RegisterOperand(constructor), |
+ RegisterOperand(first_arg), UnsignedOperand(arg_count)); |
return *this; |
} |
@@ -679,10 +571,8 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::CallRuntime( |
Bytecode bytecode = IntrinsicsHelper::IsSupported(function_id) |
? Bytecode::kInvokeIntrinsic |
: Bytecode::kCallRuntime; |
- OperandScale operand_scale = Bytecodes::OperandSizesToScale( |
- first_arg.SizeOfOperand(), Bytecodes::SizeForUnsignedOperand(arg_count)); |
- OutputScaled(bytecode, operand_scale, static_cast<uint16_t>(function_id), |
- RegisterOperand(first_arg), UnsignedOperand(arg_count)); |
+ Output(bytecode, static_cast<uint16_t>(function_id), |
+ RegisterOperand(first_arg), UnsignedOperand(arg_count)); |
return *this; |
} |
@@ -695,33 +585,22 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::CallRuntimeForPair( |
DCHECK_EQ(0u, arg_count); |
first_arg = Register(0); |
} |
- OperandScale operand_scale = Bytecodes::OperandSizesToScale( |
- first_arg.SizeOfOperand(), Bytecodes::SizeForUnsignedOperand(arg_count), |
- first_return.SizeOfOperand()); |
- OutputScaled(Bytecode::kCallRuntimeForPair, operand_scale, |
- static_cast<uint16_t>(function_id), RegisterOperand(first_arg), |
- UnsignedOperand(arg_count), RegisterOperand(first_return)); |
+ Output(Bytecode::kCallRuntimeForPair, static_cast<uint16_t>(function_id), |
+ RegisterOperand(first_arg), UnsignedOperand(arg_count), |
+ RegisterOperand(first_return)); |
return *this; |
} |
BytecodeArrayBuilder& BytecodeArrayBuilder::CallJSRuntime( |
int context_index, Register receiver_args, size_t receiver_args_count) { |
- OperandScale operand_scale = Bytecodes::OperandSizesToScale( |
- Bytecodes::SizeForUnsignedOperand(context_index), |
- receiver_args.SizeOfOperand(), |
- Bytecodes::SizeForUnsignedOperand(receiver_args_count)); |
- OutputScaled(Bytecode::kCallJSRuntime, operand_scale, |
- UnsignedOperand(context_index), RegisterOperand(receiver_args), |
- UnsignedOperand(receiver_args_count)); |
+ Output(Bytecode::kCallJSRuntime, UnsignedOperand(context_index), |
+ RegisterOperand(receiver_args), UnsignedOperand(receiver_args_count)); |
return *this; |
} |
BytecodeArrayBuilder& BytecodeArrayBuilder::Delete(Register object, |
LanguageMode language_mode) { |
- OperandScale operand_scale = |
- Bytecodes::OperandSizesToScale(object.SizeOfOperand()); |
- OutputScaled(BytecodeForDelete(language_mode), operand_scale, |
- RegisterOperand(object)); |
+ Output(BytecodeForDelete(language_mode), RegisterOperand(object)); |
return *this; |
} |
@@ -762,88 +641,6 @@ bool BytecodeArrayBuilder::TemporaryRegisterIsLive(Register reg) const { |
return temporary_register_allocator()->RegisterIsLive(reg); |
} |
-bool BytecodeArrayBuilder::OperandIsValid(Bytecode bytecode, |
- OperandScale operand_scale, |
- int operand_index, |
- uint32_t operand_value) const { |
- OperandSize operand_size = |
- Bytecodes::GetOperandSize(bytecode, operand_index, operand_scale); |
- OperandType operand_type = Bytecodes::GetOperandType(bytecode, operand_index); |
- switch (operand_type) { |
- case OperandType::kNone: |
- return false; |
- case OperandType::kRegCount: { |
- if (operand_index > 0) { |
- OperandType previous_operand_type = |
- Bytecodes::GetOperandType(bytecode, operand_index - 1); |
- if (previous_operand_type != OperandType::kMaybeReg && |
- previous_operand_type != OperandType::kReg) { |
- return false; |
- } |
- } |
- } // Fall-through |
- case OperandType::kFlag8: |
- case OperandType::kIdx: |
- case OperandType::kRuntimeId: |
- case OperandType::kImm: { |
- size_t unsigned_value = static_cast<size_t>(operand_value); |
- return Bytecodes::SizeForUnsignedOperand(unsigned_value) <= operand_size; |
- } |
- case OperandType::kMaybeReg: |
- if (RegisterFromOperand(operand_value) == Register(0)) { |
- return true; |
- } |
- // Fall-through to kReg case. |
- case OperandType::kReg: |
- case OperandType::kRegOut: { |
- Register reg = RegisterFromOperand(operand_value); |
- return RegisterIsValid(reg, operand_size); |
- } |
- case OperandType::kRegOutPair: |
- case OperandType::kRegPair: { |
- Register reg0 = RegisterFromOperand(operand_value); |
- Register reg1 = Register(reg0.index() + 1); |
- // The size of reg1 is immaterial. |
- return RegisterIsValid(reg0, operand_size) && |
- RegisterIsValid(reg1, OperandSize::kQuad); |
- } |
- case OperandType::kRegOutTriple: { |
- Register reg0 = RegisterFromOperand(operand_value); |
- Register reg1 = Register(reg0.index() + 1); |
- Register reg2 = Register(reg0.index() + 2); |
- // The size of reg1 and reg2 is immaterial. |
- return RegisterIsValid(reg0, operand_size) && |
- RegisterIsValid(reg1, OperandSize::kQuad) && |
- RegisterIsValid(reg2, OperandSize::kQuad); |
- } |
- } |
- UNREACHABLE(); |
- return false; |
-} |
- |
-bool BytecodeArrayBuilder::RegisterIsValid(Register reg, |
- OperandSize reg_size) const { |
- if (!reg.is_valid()) { |
- return false; |
- } |
- |
- if (reg.SizeOfOperand() > reg_size) { |
- return false; |
- } |
- |
- if (reg.is_current_context() || reg.is_function_closure() || |
- reg.is_new_target()) { |
- return true; |
- } else if (reg.is_parameter()) { |
- int parameter_index = reg.ToParameterIndex(parameter_count()); |
- return parameter_index >= 0 && parameter_index < parameter_count(); |
- } else if (reg.index() < fixed_register_count()) { |
- return true; |
- } else { |
- return TemporaryRegisterIsLive(reg); |
- } |
-} |
- |
// static |
Bytecode BytecodeArrayBuilder::BytecodeForBinaryOperation(Token::Value op) { |
switch (op) { |
@@ -1018,38 +815,6 @@ Bytecode BytecodeArrayBuilder::BytecodeForCall(TailCallMode tail_call_mode) { |
return Bytecode::kIllegal; |
} |
-uint32_t BytecodeArrayBuilder::RegisterOperand(Register reg) { |
- return static_cast<uint32_t>(reg.ToOperand()); |
-} |
- |
-Register BytecodeArrayBuilder::RegisterFromOperand(uint32_t operand) { |
- return Register::FromOperand(static_cast<int32_t>(operand)); |
-} |
- |
-uint32_t BytecodeArrayBuilder::SignedOperand(int value, OperandSize size) { |
- switch (size) { |
- case OperandSize::kByte: |
- return static_cast<uint8_t>(value & 0xff); |
- case OperandSize::kShort: |
- return static_cast<uint16_t>(value & 0xffff); |
- case OperandSize::kQuad: |
- return static_cast<uint32_t>(value); |
- case OperandSize::kNone: |
- UNREACHABLE(); |
- } |
- return 0; |
-} |
- |
-uint32_t BytecodeArrayBuilder::UnsignedOperand(int value) { |
- DCHECK_GE(value, 0); |
- return static_cast<uint32_t>(value); |
-} |
- |
-uint32_t BytecodeArrayBuilder::UnsignedOperand(size_t value) { |
- DCHECK_LE(value, kMaxUInt32); |
- return static_cast<uint32_t>(value); |
-} |
- |
} // namespace interpreter |
} // namespace internal |
} // namespace v8 |