fix debug checks for api callbacks returning symbols
BUG= Review URL: https://codereview.chromium.org/854363003 Cr-Commit-Position: refs/heads/master@{#26156}
This commit is contained in:
parent
8e56bd79f6
commit
3eb589976a
@ -2189,8 +2189,8 @@ void MacroAssembler::CallApiFunctionAndReturn(
|
||||
JumpIfSmi(return_value, &ok, Label::kNear);
|
||||
mov(map, FieldOperand(return_value, HeapObject::kMapOffset));
|
||||
|
||||
CmpInstanceType(map, FIRST_NONSTRING_TYPE);
|
||||
j(below, &ok, Label::kNear);
|
||||
CmpInstanceType(map, LAST_NAME_TYPE);
|
||||
j(below_equal, &ok, Label::kNear);
|
||||
|
||||
CmpInstanceType(map, FIRST_SPEC_OBJECT_TYPE);
|
||||
j(above_equal, &ok, Label::kNear);
|
||||
|
@ -805,8 +805,8 @@ void MacroAssembler::CallApiFunctionAndReturn(
|
||||
JumpIfSmi(return_value, &ok, Label::kNear);
|
||||
movp(map, FieldOperand(return_value, HeapObject::kMapOffset));
|
||||
|
||||
CmpInstanceType(map, FIRST_NONSTRING_TYPE);
|
||||
j(below, &ok, Label::kNear);
|
||||
CmpInstanceType(map, LAST_NAME_TYPE);
|
||||
j(below_equal, &ok, Label::kNear);
|
||||
|
||||
CmpInstanceType(map, FIRST_SPEC_OBJECT_TYPE);
|
||||
j(above_equal, &ok, Label::kNear);
|
||||
|
@ -23648,6 +23648,32 @@ TEST(FunctionCallOptimizationMultipleArgs) {
|
||||
}
|
||||
|
||||
|
||||
static void ReturnsSymbolCallback(
|
||||
const v8::FunctionCallbackInfo<v8::Value>& info) {
|
||||
info.GetReturnValue().Set(v8::Symbol::New(info.GetIsolate()));
|
||||
}
|
||||
|
||||
|
||||
TEST(ApiCallbackCanReturnSymbols) {
|
||||
i::FLAG_allow_natives_syntax = true;
|
||||
LocalContext context;
|
||||
v8::Isolate* isolate = context->GetIsolate();
|
||||
v8::HandleScope scope(isolate);
|
||||
Handle<Object> global = context->Global();
|
||||
Local<v8::Function> function = Function::New(isolate, ReturnsSymbolCallback);
|
||||
global->Set(v8_str("x"), function);
|
||||
CompileRun(
|
||||
"function x_wrap() {\n"
|
||||
" for (var i = 0; i < 5; i++) {\n"
|
||||
" x();\n"
|
||||
" }\n"
|
||||
"}\n"
|
||||
"x_wrap();\n"
|
||||
"%OptimizeFunctionOnNextCall(x_wrap);"
|
||||
"x_wrap();\n");
|
||||
}
|
||||
|
||||
|
||||
static const char* last_event_message;
|
||||
static int last_event_status;
|
||||
void StoringEventLoggerCallback(const char* message, int status) {
|
||||
|
Loading…
Reference in New Issue
Block a user