v8  3.14.5(node0.10.28)
V8 is Google's open source JavaScript engine
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
hydrogen-instructions.cc File Reference
#include "v8.h"
#include "factory.h"
#include "hydrogen.h"
Include dependency graph for hydrogen-instructions.cc:

Go to the source code of this file.

Namespaces

 v8
 
 v8::internal
 

Macros

#define DEFINE_COMPILE(type)
 
#define MAKE_CASE(type)   case k##type: return #type;
 
#define PRINT_DO(type)
 
#define H_CONSTANT_INT32(val)
 
#define H_CONSTANT_DOUBLE(val)
 
#define DEFINE_NEW_H_SIMPLE_ARITHMETIC_INSTR(HInstr, op)
 
#define DEFINE_NEW_H_BITWISE_INSTR(HInstr, result)
 

Functions

 DEFINE_NEW_H_BITWISE_INSTR (HSar, c_left->NumberValueAsInteger32() >>(c_right->NumberValueAsInteger32()&0x1f)) DEFINE_NEW_H_BITWISE_INSTR(HShl
 
c_left NumberValueAsInteger32 ()<< (c_right-> NumberValueAsInteger32()&0x1f)) HInstruction *HShr::NewHShr(Zone *zone, HValue *context, HValue *left, HValue *right)
 

Macro Definition Documentation

#define DEFINE_COMPILE (   type)
Value:
LInstruction* H##type::CompileToLithium(LChunkBuilder* builder) { \
return builder->Do##type(this); \
}

Definition at line 48 of file hydrogen-instructions.cc.

#define DEFINE_NEW_H_BITWISE_INSTR (   HInstr,
  result 
)
Value:
HInstruction* HInstr::New##HInstr(Zone* zone, \
HValue* context, \
HValue* left, \
HValue* right) { \
if (left->IsConstant() && right->IsConstant()) { \
HConstant* c_left = HConstant::cast(left); \
HConstant* c_right = HConstant::cast(right); \
if ((c_left->HasNumberValue() && c_right->HasNumberValue())) { \
return H_CONSTANT_INT32(result); \
} \
} \
return new(zone) HInstr(context, left, right); \
}
#define H_CONSTANT_INT32(val)

Definition at line 2494 of file hydrogen-instructions.cc.

#define DEFINE_NEW_H_SIMPLE_ARITHMETIC_INSTR (   HInstr,
  op 
)
Value:
HInstruction* HInstr::New##HInstr(Zone* zone, \
HValue* context, \
HValue* left, \
HValue* right) { \
if (left->IsConstant() && right->IsConstant()) { \
HConstant* c_left = HConstant::cast(left); \
HConstant* c_right = HConstant::cast(right); \
if ((c_left->HasNumberValue() && c_right->HasNumberValue())) { \
double double_res = c_left->DoubleValue() op c_right->DoubleValue(); \
if (TypeInfo::IsInt32Double(double_res)) { \
return H_CONSTANT_INT32(static_cast<int32_t>(double_res)); \
} \
return H_CONSTANT_DOUBLE(double_res); \
} \
} \
return new(zone) HInstr(context, left, right); \
}
#define H_CONSTANT_DOUBLE(val)
#define H_CONSTANT_INT32(val)

Definition at line 2389 of file hydrogen-instructions.cc.

#define H_CONSTANT_DOUBLE (   val)
Value:
new(zone) HConstant(FACTORY->NewNumber(val, TENURED), \
Representation::Double())
#define FACTORY
Definition: isolate.h:1434

Definition at line 2385 of file hydrogen-instructions.cc.

Referenced by HDiv::NewHDiv(), HMod::NewHMod(), and v8::internal::NumberValueAsInteger32().

#define H_CONSTANT_INT32 (   val)
Value:
new(zone) HConstant(FACTORY->NewNumberFromInt(val, TENURED), \
Representation::Integer32())
#define FACTORY
Definition: isolate.h:1434

Definition at line 2382 of file hydrogen-instructions.cc.

Referenced by HBitwise::NewHBitwise(), HDiv::NewHDiv(), HMod::NewHMod(), and v8::internal::NumberValueAsInteger32().

#define MAKE_CASE (   type)    case k##type: return #type;

Referenced by HValue::Mnemonic().

#define PRINT_DO (   type)
Value:
if (changes_flags.Contains(kChanges##type)) { \
if (add_comma) stream->Add(","); \
add_comma = true; \
stream->Add(#type); \
}

Referenced by HValue::PrintChangesTo().